Tell me more ×
Programmers Stack Exchange is a question and answer site for professional programmers interested in conceptual questions about software development. It's 100% free, no registration required.

So what's a developer to do when he wants to start a complex long-term project (say 30 years) which is mostly client-side GUI with some logic thrown in and doesn't want to rewrite it every year or two?

I like new technologies as much as everyone, but it seems that technology replacement cycle is ever shorter and it seems that the programmers are expected to rewrite the same simple programs in ever newer and shinier technologies. There is no time to write really complex programs since the technology they are written in or for becomes outdated every few years.

But what if you want to create something really really complex? Will your app run on HTML10, or on iOS 16, and will the PC even exist in 30 years and run Windows FT?

With that in mind, what technology (programming language/stack) would you recommend for client-side application which is meant for single user and largely consists of a complex GUI, and is meant to run on any client device that will be popular/standard in 20-30 years? To put things in perspective, 30 years ago the most widely used personal computer was Commodore 64.

share|improve this question
I'm working on this new framework, TARDIS.js... – Erik Reppen Feb 27 at 6:17
If this question is not appropriate for this site, where is it appropriate? I'd really like to hear what people have to say about my problem. – Domchi Mar 3 at 18:44
The problem is the idea that anybody can guess where technology will be in 30 years. One idea that is fairly prevalent however as a result of past mistakes with legacy stuff however, is the notion of loose coupling. Ideally you can easily (enough) rewrite a GUI at some point over the course of 30 years because the business concerns won't be tightly coupled to it. For the next ten years though I'd say web technology is a good bet if it covers your needs. – Erik Reppen Mar 4 at 19:17
@ErikReppen Thanks for your comment (and you do raise good points). Of course nobody can tell the future, but I'm a bit puzzled. It seems that it's perfectly normal to use different risk mitigation strategies to plan for failure (backups, redundancy and so on)... while it seems that nobody thought about risk mitigation strategies in case the technology becomes obsolete (like Flash or ActiveX), and even worse, the question about this is somehow implicitly closed as impossible to answer... :) One way to deal with it for data is to save it as text file, there must be something similar for GUI. – Domchi Mar 5 at 15:23
Because UI is really just a mask of controls on a pile of business logic which is usually much harder to change or swap out technology stacks for. UI is much easier to swap out and tends to be more platform-dependent. I think the ultimate direction we're leading in currently is web technology just about everywhere, however. That may change one day and web tech evolves constantly so I wouldn't bet 30 years on it. I wouldn't bet on anything 30 years out where technology is concerned. – Erik Reppen Mar 5 at 15:47
show 2 more comments

closed as not a real question by Jim G., ElYusubov, Thomas Owens Feb 27 at 2:08

It's difficult to tell what is being asked here. This question is ambiguous, vague, incomplete, overly broad, or rhetorical and cannot be reasonably answered in its current form. For help clarifying this question so that it can be reopened, see the FAQ.

2 Answers

I'll be the first to answer (and I'll risk the downvotes with this answer) but I don't really think you can make a prediction about the next 30 years.

Times change, standards change, and technology is changing faster than ever. 30 years ago, in the days of the Commodore 64, handheld touch devices such as the iPhone were at best a dream. Interconnectivity to the level we have today wasn't the norm. We've not only changed the way we see our data - we've changed the way that we interact with it.

30 years is a very long time in the world of technology. I'd say that if you really wanted to do this, you'd have an uphill battle. That said:

1.) Write for the web. The way things seem to be going now, Web technologies will be more ubiquitous in the future. Yes, it'll get more complex, but you can let the browser abstract away any system differences. I can't really make recommendations, as I don't know what will be popular 30 years from now. However, Javascript has been maturing a lot lately, and it seems to be the first-class language of the Web.

2.) Separation of concerns - if the GUI is concerning you, keep it as loosely coupled as possible from the business logic implementation. (If I remember correctly, this is how many Linux programs worked using the X Window System.)

You can work inside some rules like the ones I posted (or a different set) and let your program live without updates that long. However, I honestly believe that you can't accomplish what you seek in a 30-year timeframe.

Alternative, tongue-in-cheek answer: Make a program in Adobe Flash, package the Flash installer with your program install package, and hope for the best in 30 years.

share|improve this answer

your best bet is HTML/Javascript, backwards compatibility is pretty good because its so prolific. But having said that, I have Java applets sitting on the web from 1996 that still run fine. Not sure if they still will in another 13 years though.

At the end of the day, it comes down to your best guess.

Also keep in mind, you can still run C64 software these days.

share|improve this answer

Not the answer you're looking for? Browse other questions tagged or ask your own question.