Hacker Newsnew | past | comments | ask | show | jobs | submitlogin

> I barely understand the voodoo magic behind libtool myself, but as PHK says, it "tries to hide the fact that there is no standardized way to build a shared library in Unix". I'd wager dynamic linking inherently poses such quandaries that are easier solved through kludges.

But that's exactly the problem. At every point we a little more complex because someone just applied a little kludge to fix things. Over a decade or two that turns into a TON of wasted effort and complexity because no one wants to spend the time to fix the original problem.

In a cathedral like Apple or Microsoft (or anywhere else) they can decide "This sucks, all effort is now into fixing X" instead of patching it over and over because they can take the long term view. In the bazaar the only longterm view is what you yourself will do. You can't be sure anyone else will help or pick up where you left off if you get half way though a big project and need help.

In the bazaar world you get things like the Linux TTY layer. It was a huge mess, I think it still is to a degree. People put in little patches because no one wanted to take on the huge responsibility to fix the whole thing (including maintain compatibility). As I remember the maintainer quit his position so he wouldn't have to keep messing with it and he didn't think he would have the support to get it fixed. But the problem is big and isn't sexy (like playing with STM, adding support for the 8193rd processor, or making a new filesystem) so it gets dragged along and slowly patched until it becomes a huge critical issue.



Dynamic linking isn't actually a problem in the open source world - you build your shared libraries with -fPIC -shared and link other code against them just like you would any other library, because their shared library systems were designed to behave sensibly from the start. Libtool was created for all the existing proprietary OSes with their own, often half-baked, support for shared libraries[1] and uncooperative, opaque corporate developers; it's as much an artifact of the cathedral as the bazaar[2]. To quote the documentation:

"Ideally, libtool would be a standard that would be implemented as series of extensions and modifications to existing library systems to make them work consistently. However, it is not an easy task to convince operating system developers to mend their evil ways, and people want to build shared libraries right now, even on buggy, broken, confused operating systems."

[1] Or worse, no shared library support at all. This is a major headache because linking against static libraries requires you to manually link all the libraries they depend on too; libtool handles this for you on systems with no shared library support or no native dependency tracking.

[2] Especially since it's a GNU tool and their development model has historically been more cathedral than bazaar anyway.




Guidelines | FAQ | Lists | API | Security | Legal | Apply to YC | Contact

Search: