Click here to Skip to main content
15,868,016 members
Please Sign up or sign in to vote.
0.00/5 (No votes)
What are the technical solutions for guaranteeing (or at least making it more likely) that some program I wrote will be able to be executed and reproduce identical results for years?

Imagine I use an external library in an interpreted language, like Python, but then it could potentially be taken down by the owner of that repository. How do I treat this point of fragility?

On the other hand, suppose I use a compiled language, but then the architectural of the machines change and the compiled version doesn't run on modern computers. Is there a way to deal with this kind of issue?

This is a preocupation being brought up by some colleagues and it is causing them to resist the use of any external library in our project, which is really hindering development.

What I have tried:

I have tried explaining to my colleagues how much more efficient we would be by using external libraries, to no avail. I don't know what we can do to diminish their fears
Posted
Updated 9-Aug-22 10:15am
Comments
[no name] 9-Aug-22 14:46pm    
(a) It's a function of the "service life" of the OS it's running under (b) the 3rd party products and their licensing and distribution (c) whether you stick around to maintain it; e.g. fix the cases you missed (d) the physical devices it depends on (i.e. their MTF) (e) the law (f) ...
Dave Kreskowiak 9-Aug-22 19:53pm    
What guarantees are there you're code is going to run for years? That's easy. There are none.

It doesn't matter what languages, frameworks, external libraries, compilers, ... you use. There are never any guarantees that your code is going to continue to compile or the frameworks and libraries you use are going to still exist or offer the exact same functionalities they did before.

1 solution

How do you make sure any software runs for years to come? If we all migrate to 128 QBit cpus in the next decade, what happens to your x86 MS-DOS system (exaggeration)?

Depending on the problem space, and the 3rd party involved, a 3rd party lib might be preferable to Roll your Own. I'd not want to try to write correct cryptographic routines myself. There are other, smarter people who do that, and the libs are well tested and might even be approved of by various oversight bodies as meeting some level of correctness, where as my routines might have to go though expensive and time consuming reviews to gain approval, particularly if I want to sell my project to outside customers, or interop with others.

To future proof you project, you'd need to be able to get the source for the 3rd party lib. Many well respected libraries come as Open Source, so you've got the option of getting the source for the library version you're working with, and being able to regenerate the library as needed. But even that's not fully future proof. As your OS evolves, you might find that SuperLib v3.0 no no longer compiles as it relied on an OS feature that has been removed in the latest OS update. While SuperLib v 5.2 will compile on the new OS version, it might have removed or changed some of the features, so you need to update your program to match the new library requirements. But that's an issue you have to address, anyway, as you'll need to modify your projects to adapt to the OS changes, too.

If you're interested in a commercial 3rd party lib that is not available in source form, you'll need to negotiate with the provider for something like an escrow account. In that case, the source for the library (and hopefully build instructions!) are held by a third party. In the event that the provider goes out of business, or perhaps is no longer willing to maintain the library in question, then you have access to the source to be able to use it for your own purposes. But there's licensing and lawyers and lots of money involved, so not for everyone.

Unless you're willing to stockpile hardware, and replace old failing units with New Old Stock, you're going to have to deal with maintaining your software projects as hardware and software evolve.
 
Share this answer
 
Comments
Member 15732448 10-Aug-22 8:54am    
What if my software do some important stuff that by law requires that it must be auditable for X years in the future? I can keep the compiled version of the software in a server, but unless I keep an old hardware with the old OS, then I have no garantee that old compiled software will run in a crispy clean computer, right? It would be part of the fulfilment of the requirement for auditability to mantain an old equipement "just in case"...or at least making sure modern machines can simulate one... Am I correct?
k5054 10-Aug-22 10:57am    
You'll have to discuss the particulars with someone who knows, most likely a lawyer that is familiar with the legal requirements of your country.

This content, along with any associated source code and files, is licensed under The Code Project Open License (CPOL)



CodeProject, 20 Bay Street, 11th Floor Toronto, Ontario, Canada M5J 2N8 +1 (416) 849-8900