Linked by Nicholas Blachford on Wed 11th Aug 2004 07:53 UTC
Editorial Computers are complex systems but it's a mistake to assume they need to be complex to use. However, usability is not as easy as it may first seem. It is a different discipline from software development lacking the strict logic or having a "right way". There are only differing requirements and differing collections of guidelines. Making things easy is difficult.
Permalink for comment
To read all comments associated with this story, please click here.
RE: DLL hell
by jeff on Wed 11th Aug 2004 15:06 UTC

@Yamin, I wouldn't go as far as to say that allowing side-by-side sharing of dlls invalidates the usefulness of shared libraries. I do however see your point especially dependancies on large libraries. Maybe the real problem is bulky libraries. So what I'm saying is that say for example libary such as GTK was broken up into 100 different seperate library files. Now when one library file was updated it would only cause applications that depend on that specific library to adjust. So if that file was only used directly by other GTK libraries, it wouldn't require any external applications to be updated.

Another solution off the top of my head would be to provide version compatability information with libraries. So with each new version of a library released it could include information about the oldest version that it maintains compatablity with. This way as long as applications are in a specified compatability range they can all use the same library. This method of using version compatability range could even be more useful if applied directly to methods, functions, classes or other constructs within a library. This way applications which only make use of classes within a library that have maintained version compatability could still use an updated library which contains some compatability breaking features. These such version compatabilities and dependencies should all be maintained by the system or package manager so that as soon as a library is going to be updated dependencies are checked to see if it breaks any compatablity with existing apps. If so two things can occur, either the new copy of the library is installed side-by-side with the old one or the user can be prompted to update the dependant applcation.

In a sense, with object oriented libraries it seems that seperating each class into a seperate file with it's own versioning information would work out the best. However maybe there is a performance hit when you have to load seperate files for each class thats used.