4 ms·
After reading this.. It's all about community. If community can agree on API you can create something shareable like DLLs and it will work for all at benefit.
by hippich 16y ago
After reading this.. It's all about community. If community can agree on API you can create something shareable like DLLs and it will work for all at benefit.
If community doesn't exists at all - this is not gonna work and it's better to enclose everything in your app.
I believe, community thing, in sense like it exists with open source projects, will not exists for any private software, so when you create something based on MS stack, or something which do not have open sourced codes - stick to "keep everything with app" way.
But, of course, I would like to see more opensourced software and propose opening code for the whole stack to avoid this kind of problems =)) Ah.. dreams =)
- roel_v 16y agoI don't understand how a 'community' would help here. When the ABI of a dll changes (which it will at every major release, and it's a major pain to keep it compatible even between small releases - I don't know of any projects that even try), you need some way to communicate this change to any applications that use it.
- djacobs 16y agoI definitely get what hippich is saying. The idea is that when you have a community built around a platform, and that community is, well, communal (cooperative in some ways), solutions emerge to avoid conflicts and problems like this. (RubyGems for Ruby, CPAN for Python, aptitude for Debian, RPM, etc., etc.) According to hippich (and I agree), that kind of community and spirit only ever emerges when we are sharing code.
- hippich 16y agoroel_v, just like he said =) (except, CPAN is for Perl =)). Probably, API is incorrectly referenced here. But idea is - if something really shared, community using this something shared will be able to find a way to avoid conflicts.
- roel_v 16y agoSo what are the solutions that have arisen? Dependencies are still a bitch on any platform. Usually the way to handle dependencies is 'write your code with the latest version of the libraries at that time, then deploy with a private copy' or 'check application every few weeks, hope no libraries were upgraded, if they were upgrade your code'. How many applications do you know that you can take in the version they were 5 years ago and run them on a modern distro? I've used Linux for over 10 years and I wouldn't bet 5 cents on being able to find any software from 5 years ago that would run unmodified on a modern installation. How does Ruby or Python keep track of old versions of libraries? How does it ensure that, when you start a program, the exact library is used that the application was written and tested against?