From: David Lang Date: Thu, 27 Jul 2006 19:49:26 GMT Subject: Re: Licensing and the library version of git Message-ID: In-Reply-To: On Thu, 27 Jul 2006, Linus Torvalds wrote: > On Thu, 27 Jul 2006, David Lang wrote: >> >>> (*) I will, in fact, claim that the difference between a bad programmer >>> and a good one is whether he considers his code or his data structures >>> more important. Bad programmers worry about the code. Good programmers >>> worry about data structures and their relationships. >> >> personally I'd add to this that after the data structures are defined and you >> turn to the code the API is significantly more important then the code itself. > > I think people sometimes put too much emphasis on ABI's. I was careful to say aPi, not aBi :-) > Sure, if you're depending on a library, the ABI is supremely important. > But I literally believe that one of the things that makes open source > technically superior to most other projects is the fact that ABI's can be > changed more easily, and sometimes at all. very true > If you have good data structures, the ABI's are largely irrelevant, and if > you have a problem with an existing ABI, you can just write a new > entrypoint instead (and leave the old ABI alone). > > On the other hand, if you have bad datastructures, the ABI often reflects > that, and having the balls to say that your ABI's are broken and need to > be re-done in order to fix the data structures is _very_ important. > Otherwise you'll never be able to fix anything. however it's possible to have a good data structure and a bad API. I'm just emphisising the API over the 'elegance', etc of the code that implements it. > So I think that ABI's are often _way_ overhyped. If they are good, > everybody is happy. But if the interfaces are bad, you had better be > willing to just say "screw the ABI" and just fix it. > > Now, that doesn't mean that you should change ABI's on a whim, and > regardless of any other issues, your user base is always important. But I > don't think ABI's are, or should be, "sacred". I'm not meaning to imply in any way that API's are sacred, just that they are very important and deserve a lot of thought before implementation. David Lang