One of the most annoying things when I develop software is the fact that somebody copies code to be shared, here and there. That way if a bug is found then the maintainer (which might be somebody different than the author) has to correct several places (and probably miss some). As you may already know it's a lot cleaner to create a function to perform the functionality to be shared, and call that function when it is needed. The same problem exists when sharing code from several projects. Let's say I'm the author of library KOKOlib. That library provides some functionality, but may require let's say ASN.1 structures parsing (yuck!). Let's say that also a free library ASNlib provides the functionality I need (not all but a large fraction). Wow I say. Let's get the files from that project and include them in my project (it's free software remember?). I also modify that code to suit my needs exactly (I needed some types not present there). My KOKOlib now is complete and really fine! Is it? What happens if the developer of ASNlib corrects a bug? Easy thing. I just follow the ChangeLog of ASNlib and merge or the things there. (Would I?) What if ASNlib gets a major rewrite? Not too easy to merge, but I can manage it. (I hope) Well it seems that most developers are too lazy to do the above, and probably have other things to do (maybe 1-2 years later). So instead of copying large chunks of code, why don't just link against the ASNlib? A point might be that somebody may prefer one large library that contains everything, so users don't bother downloading several libraries. Actually my experence shows that users never download libraries (their distributor does). Other than that, a large library needs a lot of time (and/or funds) to maintain. Why don't just stick to a library that does only what it is supposed to, and leave external functionality to external libraries? PS. This text was written just to say that I HATE CODE COPYING --nmav