domenica 11 giugno 2017

FreeDOS blog challenge: my short story about FreeDOS

I found the FreeDos blog challenge while reading one of my planets, and I decided to share a few lines about my personal experience.

Back in the days when I was a little tiny poor developer just kicked off by the university, I found a job where I was supposed to use a fourth-level language, something I would hate for the following years. The development chain was awkward: while the production machine was a Linux system, and thus the deployment was done on a Linux server, the development machine was a DOS one. Allow me to explain: you could develop and compile applications both on Linux, some Unix, and DOS (or Microsoft Windows including a DOS)
but installing the compiler on a Linux machine was a real pain, and so I was instrumented to work on Windows and DOS.
Another reason to stay on the DOS side of development was that the source code did use the cp850, that is those set of characters used to create frames and decorations.

Therefore, at that point, I was forced to boot my laptop on Windows, open the DOS prompt and interact with all the DOS basic programs and commands, like the text editor and find. The deploy was as easy as copying a file from the DOS box to the Linux server via either a Secure Shell (e.g., winscp) or a remote share (e.g., Samba).
It was not a cat's pijama for me, since I was a kind of "Unix-inside" developer, and I was coming out of university where I saw a lot of shiny brand new development tools like Eclipse.

I start reasoning about a way of running the DOS compiler on my Linux box directly, and of course I found out FreeDOS. The problem was I needed to run both FreeDOS and Linux at the same time to get out of the latter all the command line power I was used to and out of the former the ability to run the required compiler and tools.
I hear you: virtualization to the rescue!
Not so easy pal, since back in those days (I think it was 2003) there was not the widespread of virtualization as we mean today, and the only tools available to me were jails, chroot, and VMWare. Unluckily booting a FreeDOS machine via VMWare on my poor Intel Celeron 733 MHz with 192 MB of ram was not an efficient idea.

Therefore I was forced to throw away the idea of using FreeDOS (for that purpose).

This experience pushed me to study better the compiler and face the problem of installing the cp850 on my Emacs editor, as well as how to configure the terminal (terminfo) to use the compiler entirely on Linux, and I never came back to Windows+DOS for my development.

After a few months I had to manage another ancient machine used to send out faxes. The machine was bare metal directly attached to a moden on its own phone line, running a DOS program to send faxes. Due to an hydraulic problem, the machine blown away and so I had to replace it. Of course, it was not possible to either find a decent running copy of MS-DOS, as well as to substitute such machine with an Hylafax server (but that's another story).
Luckily, I had made a little experience on FreeDOS, I decided to ran that version on the fax machine. Several years after I was on another job, and I got an email from a previous colleague of mine telling me that they have turned off the fax machine, that have ran FreeDOS for 6+ years without any problem. OK, let's be honest here: the job of the machine and, thus, of the operating system, was not so complex in this deployment, but I think it is great to have a project as FreeDOS that allows anyone to run ancinet programs and access data even years after the programs developers are no more on the market!

And what about today?
Well, today I believe it is a lot easier to run a FreeDOS instance, and in fact I've always a virtual machine around with a recent version of FreeDOS that I use to run my 20+ years old C programs I made at school!

Thank you very much to all the developers, maintaners and people behind the FreeDOS project.
Unlike other free operating systems that often share a common architecture and execution runtime, this one is especially important in my
opinion because it allows us to run programs no other operating system could.