Windows 2000 Puts Apps Side-by-Side

It's been a long time coming, but Microsoft Corp. may have the cure to relieve the painful irritation of Dynamic Link Library (DLL) conflicts. The company doesn’t say the solution, known as side-by-side DLLs, is the panacea that developers may have been looking for, but it does claim the solution could resolve up to 80 percent of the conflicts.

These conflicts, or DLL Hell, occur when two applications collide, with each requiring a different version of the same resource. When an application is installed, it locates an existing DLL file it needs and overwrites it with a newer version the application comes with. A problem occurs when there is another application on the system that used the older DLL file. Now it will not operate properly because it cannot utilize the newer DLL.

At Microsoft's TechEd conference in Dallas this May, Peter Wilson, program manager with the Windows consumer division, detailed Side-by-Side DLLs. As Wilson explained, applications are intuitively designed to use the latest version of a DLL file. Using side-by-side DLLs, applications can specify the version of a DLL it has an affinity for, and not automatically use the latest one.

The first infrastructure to take advantage of Microsoft's ability to store DLLs side by side is the second edition of Windows 98. Windows 2000 will also have this feature when it's released later this year. "We want to get to the situation where installing apps from Microsoft or installing apps from third parties doesn't break the system," Wilson says.

Microsoft had to engineer a stronger operating system to allow side-by-side DLLs. To do this, the Windows 2000 team instilled better system file protection. "The goal is to maintain the integrity of Windows, such that Windows behaves like a Nintendo cartridge. You put [applications] on the shelf next to each other and they don't mess with each other," explains Wilson. When an installer comes along and tries to remove a system file, Windows will kick in and replace that file with the right version if the system administrator has signed that DLL as one that cannot be written over.

The team also added DLL Redirection to give developers a way to force loads of components to come from the application directory versus some file or system directory. This gets around the problem of absolute paths having to be hard coded into applications.

So is this the end of DLL Hell? "Let's just say we're moving to DLL Purgatory," says Rob Enderle, senior analyst with Giga Information Group ( "[Side-by-side DLLs] addresses one of the major problems associated with breakage."

But first, developers have to start taking advantage of the technology. To foster its adoption, Microsoft is making side-by-side DLL support a requirement for applications to pass the new Application Specification for Windows 2000, a set of guidelines that developers are instructed to follow for designing applications on the new platform. In return, the applications can carry the Windows 2000 logo.

"The bottom line is to provide a much better level of certification," says Enderle. "If you get anything that's branded Windows 2000 compatible, hope that it's rigorous enough not to break the system." Enderle explains the new specification provides guidance but there needs to be a more robust testing technology makes sure these applications play nice with their sister, brother, and in some case mother applications.

Another problem with the side-by-side solution that Microsoft's Wilson pointed out is that as more DLLs come from different applications from different developers, it soon would become difficult to keep track of what DLL came from where. This is important when a DLL needs tech support. Giga's Enderle explains that other than actually keeping a written journal of DLLs, the only way to tell is to access the file properties and hope that the vendor's name appears.