Re: Licensing and the library version of git

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 




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. 

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.

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.

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".

For example, one thing git did early on was to just admit that some ABI's 
are horribly horribly bad. For example, the CVS "annotate" ABI is just a 
mistake, and trying to support that would just have held git back from 
realizing that you can be so much more.

That may not be a "Application Binary Interface" kind of ABI, but it's an 
interface, and it's exactly the same thing - sometimes you just have to 
have the cajones to say "screw that, we'll be so much better if we can 
change the interface".

		Linus
-
: send the line "unsubscribe git" in
the body of a message to majordomo@xxxxxxxxxxxxxxx
More majordomo info at  http://vger.kernel.org/majordomo-info.html

[Index of Archives]     [Linux Kernel Development]     [Gcc Help]     [IETF Annouce]     [DCCP]     [Netdev]     [Networking]     [Security]     [V4L]     [Bugtraq]     [Yosemite]     [MIPS Linux]     [ARM Linux]     [Linux Security]     [Linux RAID]     [Linux SCSI]     [Fedora Users]