git/list[1] front-page[2] threads[3] people[4] search[5] about
 

Re: Licensing and the library version of git

From
Linus Torvalds <torvalds@osdl.org>
Date
Jul 27, 2006, 19:44 UTC
Message-ID
<Pine.LNX.4.64.0607271232090.4168@g5.osdl.org>
In-Reply-To
<Pine.LNX.4.63.0607271140100.11253@qynat.qvtvafvgr.pbz>
On Thu, 27 Jul 2006, David Lang wrote:
Show 8 quoted lines
> 
> > (*) 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
Previous: David LangNext: David Lang
Message 19 of 41 in “Licensing and the library version of git”
  1. Jon SmirlJul 26, 2006
  2. Shawn PearceJul 27, 2006
  3. Petr BaudisJul 27, 2006
  4. Johannes SchindelinJul 27, 2006
  5. Jon SmirlJul 27, 2006
  6. Petr BaudisJul 27, 2006
  7. Jon SmirlJul 27, 2006
  8. Johannes SchindelinJul 27, 2006
  9. Linus TorvaldsJul 27, 2006
  10. Linus TorvaldsJul 27, 2006
  11. Jakub NarebskiJul 27, 2006
  12. Jon SmirlJul 27, 2006
  13. Anand KumriaJul 28, 2006
  14. Grzegorz KulewskiJul 27, 2006
  15. Linus TorvaldsJul 27, 2006
  16. Daniel BarkalowJul 27, 2006
  17. Johannes SchindelinJul 27, 2006
  18. David LangJul 27, 2006
  19. Linus TorvaldsJul 27, 2006
  20. David LangJul 27, 2006
  21. Johannes SchindelinJul 27, 2006
  22. Anand KumriaJul 28, 2006
  23. Jon SmirlJul 28, 2006
  24. Johannes SchindelinJul 28, 2006
  25. Johannes SchindelinJul 27, 2006
  26. Petr BaudisJul 27, 2006
  27. Petr BaudisJul 27, 2006
  28. Linus TorvaldsJul 27, 2006
  29. Wolfgang DenkJul 27, 2006
  30. Johannes SchindelinJul 27, 2006
  31. Petr BaudisJul 27, 2006
  32. Johannes SchindelinJul 27, 2006
  33. Wolfgang DenkJul 27, 2006
  34. Johannes SchindelinJul 27, 2006
  35. Linus TorvaldsJul 27, 2006
  36. Johannes SchindelinJul 27, 2006
  37. Shawn PearceJul 28, 2006
  38. Johannes SchindelinJul 28, 2006
  39. Shawn PearceJul 29, 2006
  40. Jon SmirlJul 29, 2006
  41. Johannes SchindelinJul 29, 2006

Read the whole thread, see it on lore, or plain text.

$ cat FOOTERMessages come from the public archive at lore.kernel.org/git, fetched every hour. The front page is chosen and written each morning by an AI editor and can be wrong; the threads themselves are the record. About and API. For agents: an MCP server at https://gitlist.dev/mcp, and any thread, story or person page as Markdown by adding .md to its URL (or sending Accept: text/markdown). Details in /llms.txt.