[Info-vax] Shared Objects And DLL Hell

Stephen Hoffman seaohveh at hoffmanlabs.invalid
Thu Jun 30 19:19:14 EDT 2016


On 2016-06-30 22:47:26 +0000, lawrencedo99 at gmail.com said:

> On Friday, July 1, 2016 at 3:07:20 AM UTC+12, Stephen Hoffman wrote:
> 
>> DLL Hell is a solved problem.  Has been for many years.   Apps are 
>> adopting the available solutions, too.  Slowly.
>> 
>> Have a look at .NET, and with the way that applications now deploy 
>> with> the expected frameworks, and with how applications are 
>> increasingly> bundled together and don't need to splatter their giblets 
>> around a> system.  Or how the applications are prohibited from that.
> 
> Windows Dotnet has been around since about 2001, hasn’t it? So “slowly” 
> is a bit of an understatement.
> 
> The idea of collecting all your dependencies together into 
> “assemblies”, so that different apps can have different versions of the 
> same dependency, sounds fine in theory, it seems to work less well in 
> practice. For example, later versions of Dotnet are supposed to be 
> backward-compatible with earlier versions, yet you often end up with 
> systems where there are multiple versions installed side-by-side.
> 
> Then there’s the question of Microsoft’s commitment to Dotnet. It got 
> distracted by Silverlight at one point, then this WinRT thing. 
> Currently it is pushing “Universal Windows Platform”, but already there 
> are questions about how “Universal” this is going to be, with 
> limitations being imposed on the XBox version (no games!) and the 
> terminal condition of Windows Phone.

OpenVMS application development tools and practices are not exactly 
bleeding edge.  VAX C has been deprecated for longer than Windows 95 
has been available and various folks still haven't reviewed and 
reworked their application code for compatibility ANSI/ISO C, after all.

As for Microsoft?   Learning from the ideas and implementations of 
others does not mean reimplementing bugs, limitations, misfeatures or 
errata.   Best to learn and improve and avoid.

>> Dealing with incompatible versions through version-numbered shareable> 
>> image filenames or the occasional version-numbered object library is> 
>> common on most platforms, including on OpenVMS.
> 
> How does VMS deal with it? I trust it doesn’t use file version numbers...

Badly.  Manually.  Rdb has a command procedure used to set the Rdb 
version, and that's about the most reasonable approach presently in 
use.  Entirely unintegrated, of course.

>> Where this naming gets in trouble is now further along, around 
>> deploying applications and later with cleaning up any added 
>> dependencies, and with more subtle issues such as code signing and with 
>> ensuring that packages can't hijack each other ...
> 
> You don’t have that problem with open-source software, only with 
> proprietary packages.

False.

> The whole business with virtualization and containerization and all the 
> rest is mainly because you cannot trust proprietary software to play 
> nice.

Nor can open source be particularly trusted.   Either the specific wad 
of code, or the package in general.   This is why sandboxes are part of 
most any container strategy, and part of app stacking.   To isolate 
damage and bugs that can be latent whether intentionally or otherwise, 
and to (try to) isolate dependencies for that matter.

> Most Linux distros (even Android) have the concept of signing packages, 
> rather than individual executables.

OpenVMS does not have that mechanism for anything past PCSI and 
VMSINSTAL kits, and the closest analog is CDSA.  That's long been 
deprecated, too.  Whether those existing checks are reliable is not 
something I'm willing to affirm; not without reviewing details of the 
implementation.



-- 
Pure Personal Opinion | HoffmanLabs LLC 




More information about the Info-vax mailing list