Slashdot Mirror


Ask Slashdot: A Development Environment Still Usable In 25 Years Time?

pev writes: I'm working on an embedded project that will need to be maintainable for the next 25 years. This raises the interesting question of how this can be best supported. The obvious solution seems to be to use a VM that has a portable disk image that can be moved to any emulators in the future (the build environment is currently based around Ubuntu 14.04 LTS / x86_64) but how do you predict what vendors / hardware will be available in 25 years? Is anyone currently supporting software of a similar age that can share lessons learned from experience? Where do you choose to draw the line between handling likely issues and making things overly complicated?

38 of 257 comments (clear)

  1. OpenVMS by nospam007 · · Score: 3, Interesting

    It's been around for almost 40 years and most trains and lots of factories are still running on it.
    It runs on almost everything since the original hardware has been discontinued years ago.

    1. Re:OpenVMS by danbob999 · · Score: 4, Funny

      Yeah, use something already outdated to make sure that no one evens remember it in 25 years.

    2. Re:OpenVMS by Anonymous Coward · · Score: 4, Insightful

      Outdated... proven... mature... what's the difference?

    3. Re:OpenVMS by Anonymous Coward · · Score: 2, Informative

      You are right. Good choice.

      Linux is not multi-year support, it use to be all inclusive, exspecially with old equipment. I have equipment that is 15 years old, and cannot even use GCC3to recompile because it has ONLY 128MB of memory! GCC requires it to be all in memory are the same time, no pipes or swap! Add to it, cannot even try a system that was compiled after '05 because everyone turned on required MMX, even in their "386" or "486" versions. If your software uses the name 386, support the limits of the hardware on 386.

      JAVA is gone too. We have equipment with JAVA interfaces take cannot be used with current JAVA, so much for write once and run everywhere! The vendors does not even offer a fix. Just toss-it, buy something else.

      At work I use a language (RPG) that was developed in 60's to get insurance companies off of punch cards. IBM has basically guaranteed support for future version of their hardware. Over the years, we have seen grow new hardware, new OS, new... and the old code just keeps running. Even found third parties created runtimes on other OS, including Windows (baby/400) and Unix (Unibol).

    4. Re:OpenVMS by Anonymous Coward · · Score: 4, Interesting

      Why did the stupid parent comment get modded up to 5, Insightful?

      There are huge differences between software that is outdated, software that is proven, and software that is mature.

      Outdated software is old, and isn't being actively maintained. It's a fossil, frozen in time. See CP/M.

      Outdated software isn't necessarily proven. It may have had stability problems in the past, and these were never fixed because the system was superseded with better technology. See Windows 95.

      Mature software is independent of age. Newly-written software can mature quite rapidly, if developed using the proper techniques and by talented developers. See Dragonfly BSD.

      Then there is software like FreeBSD, which is proven and mature, but not outdated.

      If you can't comprehend the differences between these concepts, then you'd best be keeping your mouth shut, son.

    5. Re:OpenVMS by Virtucon · · Score: 2

      who today even knows the name DEC anymore? recruiters even tell me to remove my DEC company experience from my resume.

      I do and at last count I have 10 customers running VMS/OpenVMS systems. Your recruiters are idiots. Yes it's not a growth market but if you have experience with these legacy systems you can still make a living in the niche marketplace.

      --
      Harrison's Postulate - "For every action there is an equal and opposite criticism"
    6. Re:OpenVMS by Spazmania · · Score: 2

      Statistically, System A. System B is still an infant. Huge infant mortality rate for systems. Those that survive tend to live to a far too ripe old age.

      --
      Moderating "-1, Disagree" is simple censorship. Have the guts to post your opinion.
    7. Re:OpenVMS by davegaramond · · Score: 2

      Score 5 Insightful... Funny... Interesting... what's the difference?

  2. Why not future proof the application? by grimmjeeper · · Score: 4, Insightful

    Why do you need to ensure you can keep recompiling it with the same old compiler for the next 25 years? Why not design it with the expectation that the development environment will evolve? Ensure you design in portability between compilers and development platform operating systems and you don't have to keep stringing along an environment that's already obsolete.

    1. Re:Why not future proof the application? by danbob999 · · Score: 4, Informative

      Because not only the code would need to be portable, but the build system too (makefiles). Also, in 25 years you don't want to re-qualify everything and risk introducing some new bugs because the new compiler doesn't behave like the old one. Too risky.

    2. Re:Why not future proof the application? by grimmjeeper · · Score: 2, Interesting

      And struggling to maintain an outdated system in some kind of virtual environment isn't too risky?

      If you're doing any kind of maintenance or continual upgrade process, you're going to find yourself upgrading your development environment at least once or twice over 25+ years. And if you have any sense whatsoever, you'll have a suite of regression tests to run on your software already. You can use that to validate the new environment when you compile a baseline. I've been involved with several projects that migrated from one platform to another. I've been the technical lead on a project that even changed languages (from JOVIAL to C) because we were moving to a new processor that didn't have a JOVIAL compiler. Sure, there is some risk. But it's quantifiable and with a good set of tests, it can be completely mitigated.

      On the other hand, if you're not already testing your software as it evolves, there's no point worrying about any risk being introduced because there's no way you know how much risk you start with.

    3. Re:Why not future proof the application? by Ungrounded+Lightning · · Score: 4, Interesting

      if you have any sense whatsoever, you'll have a suite of regression tests to run on your software already. You can use that to validate the new environment when you compile a baseline. I've been involved with several projects that migrated from one platform to another.

      Such tests might convince YOU (the developer). But would they convince REGULATORS? If not, you have to go through a whole, horribly-expensive, regulatory approval every time you migrate tool versions.

      Regulators don't get dinged for insisting on more costly work by the regulated and withholding their approval. They DO get dinged if they approve something that then does harm.

      That's why the FDA caused something like 400,000 extra deaths by delaying the approval of beta blockers for prevention of secondary heart attacks until the European research had been repeated in the US under US rules, rather than accepting the data and allowing the use. After the Thalidomide mess they're not going to approve ANYTHING quickly or easily. The same principle applies to other fields.

      --
      Bantam Dominique roosters crow a four-note song. Once you've heard it as "Happy BIRTHday" you can't NOT hear it that way
    4. Re:Why not future proof the application? by grimmjeeper · · Score: 2

      A comprehensive test plan was sufficient to convince the FAA when we did large scale changes like that for flight software.

      YMMV

    5. Re:Why not future proof the application? by MightyYar · · Score: 3, Informative

      That depends on the application. If he's making an industrial control system, then no, he probably will not be maintaining it organically. It will get built, qualified, and then expected to run for the life of the process. Think nuclear plant... what is more painful, re-qualification or running obsolete tools? Plants built in the 80s (power, sewer, etc) are still running DOS control systems with ancient serial PLCs.

      --
      W..w..W - Willy Waterloo washes Warren Wiggins who is washing Waldo Woo.
    6. Re:Why not future proof the application? by MadShark · · Score: 2

      Compilers improve their optimization algorithms over time. I've personally helped debug issues due to this on a number of occasions.

  3. Store the hardware by mark_reh · · Score: 2, Interesting

    Keep a working system in storage for future use along with copies of software that runs on it including OS, etc., on archival disks.

    1. Re:Store the hardware by Tailhook · · Score: 4, Informative

      Better plan: pick something that is currently and widely used in aerospace and military applications and the world will preserve working systems for you.

      I have personal experience with this. 15 years ago, just before I left an employer I had worked for for some time, I took a number of Digital Alpha workstations off their hands; they just gave them away after about five years of use and replaced them with newer workstations.

      It turns out there is a thriving market for this hardware because aerospace and military outfits used it for their work and today they still have drawings and material they need to deal with in original form. They have migrated the original material to newer systems, but they also still maintain the equipment and software needed to get at the material in its original form.

      They pay through the nose to get replacement parts and complete systems in working condition, so a salvage market has emerged and people prowl around trying to find caches of ancient workstations. Doubtless this will be ongoing for at least another ten years, and the prices will escalate accordingly.

      So if you need to ensure there will be spare parts and systems at your disposal a quarter century from now, find out what Lockheed and Boeing are designing today's jets with and use that stuff. It's built well and people pay dearly for it when new, so it tends to be carefully preserved; it's hard to trash something that cost $20k, even if it is wildly obsolete.

      --
      Maw! Fire up the karma burner!
  4. Don't use an IDE by Kinthelt · · Score: 5, Insightful

    C, make, and vi/EMACS.

    --

    "Evil will always triumph over good, because good is dumb." - Dark Helmet (Spaceballs)

    1. Re:Don't use an IDE by Anonymous Coward · · Score: 2, Insightful

      This is half of the answer. C and text editors will be around forever, However, the missing part is documentation. There will be stuff you have done that is built on assumptions. That must be documented. We can still maintain (and do maintain) 35+ year old aerospace code, and it's relatively easy *because* all of the software artifacts are still available. They've been ported now to 3 different formats, but we can still trace EVERY SINGLE LINE OF CODE to a requirements document, and each lower level requirements document to a higher level requirements document. All of the input assumptions and bounds checking are documented. Troubleshooting is done in requirements before in software, modifications are made in requirements before software, and debugging is pretty straightforward, as all of the unit tests are written straight from the requirements documents (to include bad inputs). We got a new engine sensor when the old one went DMS, not a problem to integrate it.

    2. Re:Don't use an IDE by JaredOfEuropa · · Score: 2

      we can still trace EVERY SINGLE LINE OF CODE to a requirements document

      So can I, for the software that I have produced. Line 1263 in stuff.c maps to the requirements "document" that I jotted down on the back of a coaster on the day we were having that 4 martini lunch. So do all the other lines, come to think of it.
      But seriously... I'm no hard core software engineer and I've never been involved in anything that required that amount of rigour. I've wondered how one ensures that requirements are correct at that level, and are correct together. Even in relatively simple business software I've see such mistakes: every item passes its unit test and checks out against specifications, but the overall thing fails because of unforeseen conditions in the higher level program flow, deadlocks or race conditions, that sort of thing.

      In any case you are right. Good requirement specs benefits maintenance on software of any age, where after a few years even the original developers are scratching their heads thinking "why on earth did we do that?"

      --
      If construction was anything like programming, an incorrectly fitted lock would bring down the entire building...
    3. Re:Don't use an IDE by plcurechax · · Score: 2

      This is half of the answer. C and text editors will be around forever, However, the missing part is documentation. There will be stuff you have done that is built on assumptions. That must be documented. We can still maintain (and do maintain) 35+ year old aerospace code, and it's relatively easy *because* all of the software artifacts are still available. [...]

      Yes, the grandfather post did forget to include SCM (software configuration management) / source revision control, where numerous tools are available including : rcs, cvs, subversion, sccs, git or one of the other widely available SCMs. Of course, RCS (1982), CVS (1990), and SCCS (1972) are 25 years or older themselves.

  5. IBM or VMs by dmaul99 · · Score: 5, Funny

    If you're talking about IBM Mainframe stuff, then don't worry about it. IBM will support it in one way or another for the next 500 years because the systems that processes your airline reservations and processes your credit card transactions all still run on mainframes with COBOL code and CICS UIs. Nowadays they're dressed up with modern GUIs on top of it but ultimately it's all the same. Peek over at what the airline agent is looking at when she prints your ticket and you'll see a text console with lots of green and where you press CTRL to submit the form.

    If you're talking about some modern unix or windows stuff, VMWare it now or something. In 25 years you'll have your quantum singularity computer with an emulator for GoogleOS 54 inside of which you can run an emulator for Windows 15 inside of which you can run an emulator for Windows 11 inside of which you can run VMWare Player with your stuff.

    Better get started.

    1. Re:IBM or VMs by rubycodez · · Score: 2

      mainframe code for embedded system??! you win the unnecessary complexity award along with the OpenVMS guy. And yes I've done development and sysadmin on both.

    2. Re:IBM or VMs by TWX · · Score: 4, Interesting

      Came here to say this. The financial system was implemented in the eighties on an i-Series and is written in COBOL and RPG. There are web front-ends for some components, others still use a "Client Access" TN5250 client or for me, since the console TN5250 client isn't being maintained for Linux anymore and doesn't want to compile, a 3270 client still works.

      Do not overlook the service agreement/contract. Do not overlook the need for grizzled old guy with poor social skills to take care of it. Do not parade him around in front of senior management, they will hate him and it if you do. Make it clear that it's not DOS. We've seen people complain about the system because it was text-based, calling it DOS. They're fools, but if you don't nip that in the bud at the beginning it'll bite you in the ass later.

      Also, define service windows when there is no expectation of access, and enforce them even when there's no maintenance from time to time, to keep people from complaining when there is a legitimate service needed. It's annoying but it can be necessary when some asshole thinks that they should work on something at 3am because they feel like it, even when that's in the middle of the published service window.

      --
      Do not look into laser with remaining eye.
  6. Just use FreeBSD, goddamn it. by Anonymous Coward · · Score: 2, Insightful

    Goddamn it, why would you even suggest VMS when we have FreeBSD?

    For over 20 years now FreeBSD has proven to be one of the most reliable and trustworthy operating systems out there.

    Unlike VMS, FreeBSD is very widely used, is very modern, is undergoing continuous development and improvement, and is truly open source (unlike proprietary or GPLed software), while still retaining superb compatibility.

    I'm confident that FreeBSD will be around in 25 years, and I'm confident that it will be as strong as ever then. It's much more resilient to problems like, say, systemd is, by the very nature of its project structure, the people involved, and their priorities.

    I know I can trust FreeBSD. I can't say the same about pretty much every other operating system out there, with the exception of OpenBSD.

  7. Apple Swift by Anonymous Coward · · Score: 3, Funny

    Since all code will be written in Apple's amazing revolutionary innovative new Swift language, just write it in that! It will be infinitely portable and recompileable for millennia!

  8. wrong "obvious" solution by rubycodez · · Score: 4, Interesting

    layers of complexity only increase the number of things you assume about the future.

    Instead use a common realtime OS and chipset. Those already have a track record of decades of support.

    Failing that the second best solution would be embedded java app.

    1. Re:wrong "obvious" solution by MightyYar · · Score: 4, Insightful

      This is good advice. You want a whole bunch of other people to be in the same pickle as yourself. That means there is a market, and where there is a market there will be a vendor catering to very old system support.

      --
      W..w..W - Willy Waterloo washes Warren Wiggins who is washing Waldo Woo.
  9. Write A Support Agreement - Business, Not Tech by brian.stinar · · Score: 4, Insightful

    Unless you are (or someone is) getting paid to update, maintain, and upgrade this frequently (I would suggest every six months) I do not believe this is something than can be easily accomplished. I would recommend, if you are a contractor, that you create an ongoing maintenance agreement that provides deployments tests every six months. If you are an employee, I'd recommend you attempt to put into place such a program with your employer.

    If people do not want to pay to maintain this, then it's probably not going to work for 25 years despite your best efforts. If they only want to pay to maintain it when they REALLY need it to be maintained, it's going to be expensive and not necessarily possible. I see this kind of stuff all the time - customers don't want to pay to maintain something, until it breaks, then they want to pay.

    As an example (that isn't related to embedded, but the principle is the same), I JUST ported over Google OpenID logging in to OAuth2 in a PHP system. This was way more expensive, and way higher stress, because the customer did not listen to me six months ago when I said Google would no longer be supporting OpenID, and we should migrate to OAuth2 or they wouldn't be able to login. They didn't listen to me then, but called me when they couldn't login. The hourly rate was higher, because I hadn't scheduled this work, and it took longer (billable time) because I was under pressure to get the calendar time as small as possible. However, we got it! There are examples all the time where things basically need to be scrapped, since the technology is so, so, old and the provider doesn't exist anymore. For example, I am having a lot of trouble finding documentation for CouchBase 1.0 on some CouchBase work a customer wants done.... This wouldn't have been an issue if they had kept upgrading CouchBase versions along the way. Now, it's a pain.

  10. Re:Will the Linux kernel even be around in 5 years by MightyYar · · Score: 2

    Linux is at the heart of many embedded devices, most smartphones, and a whole crapload of servers. Given the staying power of golden oldies like COBOL running on mainframes (or virtualized mainframes), I don't think that there is any doubt that the Linux kernel will be around.

    --
    W..w..W - Willy Waterloo washes Warren Wiggins who is washing Waldo Woo.
  11. Avoid IDEs by sjames · · Score: 2

    Stick with command line utilities. Make and compiler on the command line have been around forever. Avoid IDEs with opaque 'project' files and do not let any sort of automake or autoconfig anywhere near it. Keep your Makefile simple and to the point.

    Thaty way, at least you have the worst-case option of porting forward to a new build system should all else fail. THEN archive the whole thing inside a VM. Use raw disk images rather than a proprietary something that may or may not be supported 25 years from now.

  12. I use Pacific C Compiler by OrangeTide · · Score: 2

    I use Pacific C compiler from inside DOSbox to patch an 80188 SBC (single board computer). Seems to work fine, and it's 20 years old.

    I think as long as your VM doesn't depend too much on IPv4 or being connected to the internet in general, it should be OK. I think equally important to having a VM is posting how to setup and install it, in the most brain dead and step-by-step way imaginable (screen shots for every step if you have to). Because it's really easy to forget that stuff over 20 years.

    --
    “Common sense is not so common.” — Voltaire
  13. Modify your system to build itself. by RealGene · · Score: 2

    Deeply embed the tools required in the device itself. As long as the box exists, the tools exist.

    --
    Mission: To provide products that consume time and energy as entertainingly as permitted by the laws of thermodynamics.
  14. Amiga used for ~30 years for HVAC control by bfwebster · · Score: 2

    /. just ran this article about an Amiga still being used to control HVAC at multiple public schools after nearly 30 years: http://tech.slashdot.org/story...

    Technology embeds itself (so to speak); it is far harder to retire old tech (as per this article) than you might think (Windows 8/8.1 just barely passed up WinXP this year). I think that Linux + C makes as much sense as anything, especially for an embedded system, and I'll cheerfully bet that both will still be around and in active use in 25 years. ..bruce..

    --
    Bruce F. Webster (brucefwebster.com)
  15. Crystal Balls by Tablizer · · Score: 3, Insightful

    If I could accurately predict 25 years out I'd currently be playing poker with Warren Buffett in a mansion instead of trolling Slashdot.

  16. Take a look at Forth by jays8088 · · Score: 2

    Take a look at Forth. Can run on anything and worst case, you can roll you own.

  17. Be sure you don't have the 2038 bug by DickBreath · · Score: 4, Insightful

    The 2038 problem is similar to Y2K but for Unix. 2015 + 25 years = 2040.

    --

    I'll see your senator, and I'll raise you two judges.
  18. Solve the right problem by MobyDisk · · Score: 2

    I'm working on an embedded project that will need to be maintainable for the next 25 years. This raises the interesting question of how this can be best supported. The obvious solution seems to be to use a VM that has a portable disk image that can be moved to any emulators in the future (the build environment is currently based around Ubuntu 14.04 LTS / x86_64) but how do you predict what vendors / hardware will be available in 25 years?

    [emphasis mine]

    maintainable for the next 25 years...use a VM

    Some people are answering how to make something "compilable" 25 years in the future. That's different from making it "maintainable." A VM will make the project compilable. But it won't make it maintainable. Ex: I can compile MS COBOL code for CP/M, but I can't find developers to maintain it. The only way to make it maintainable is to continue to update to newer operating systems, libraries, and tools over the course of the 25 years. If you are in a regulated environment, there is cost to that. That cost needs to be part of the maintenance budget for years to come.

    how do you predict what vendors / hardware will be available in 25 years?

    That is impossible. If management wants you to do this, ask them what the budget will be in 25 years. You can accurately predict the development environment in 25 years with the same accuracy that they can predict the budget in 25 years. The closest you can get to this goal, is to have the source code for everything. When you use closed-source software, then your contracts should require that the source code be released to you when the product is no longer supported. Such conditions are not uncommon in the medical industry. The contract will likely forbid you from using that source code for anything other than maintaining that product since they won't want you become a competitor.

    I work for a medical device manufacturer, who does this. We do *not* try to predict what tools will be available in the future. We keep VMs and make sure it doesn't require external packages to run. Ex: all installs, binaries, etc. are available. No npm or nuget required on the build server. Over the course of decades, you will have to move the source into newer repositories (RCS -> CVS -> subversion -> GIT) or keep ZIP file archives since that is easier.