3 ms·
Software Crisis 2.0
- mikewarot 5y agoGood software existed in the 1980s, running under MS-DOS. It can be built for any platform, but unlike DOS, there are many more components in the stack that can fail today. The constantly shifting sands on which we are expected as programmers to deliver something stable make it far more challenging that the days where you knew your user was likely to have 800x600 VGA graphics, an Epson Dot Matrix Printer, and a few hundred megabytes of hard disk storage. Expecting someone to push a good user experience through a cell phone network of variable density and quality, to any number of proprietary platforms, each with its own rapid turnover, and sometimes even switching CPU, is just plain nuts. This represents a moving of the goal posts, on an epic scale. It is almost trivial to deliver an application that works well on a desktop running an operating system. It has been easy since the days of Windows 3.1 and Visual Basic/Turbo Pascal for Windows. It has been trivial to support networked applications since Windows 98. Cross platform applications aren't going to give as good an experience, but are good enough now in 2021, as long as you are willing to compile native code on each platform. The current trend away from desktops/laptops, and onto mobile devices, and/or the web, has fragmented the market and requires time to build a new set of tools to cope with. It might be 5-10 years before things settle down and it's as nice as Windows 3.1/VB6. We have much better version control systems, thanks to GIT. The decades of Moore's law have rendered it cheap to just store all versions of everything, thanks to good diff algorithms and the content addressed nature of GIT. The real problem we all face isn't our tools as programmers, but the operating systems we use to execute our programs. We're still using systems which were suitable for classrooms and small companies of the 1970s and 80s. Where it was expected the same people were responsible for the code, operating systems, management, information input and output. The era of persistent internet, mobile code, and rapidly proliferating levels of abstraction reliant on the "magic of open source" to somehow fix all bugs, is destined to crash. Things won't be stable until running a piece of code is as safe as plugging a lamp into a wall outlet. If there is a fault in the lamp, it won't cause your house to burn down, or your bank account details to be emailed to North Korea. The worst to happen is a tripped circuit breaker. Capability based systems such as the ever tardy GNU Hurd, Google's Fuchsia, or Genode offer the ability to run any code safely, without unwanted side effects, no matter how many bugs. A task can only corrupt the files you allow it to access.