Visopsys – one man’s vision to build an operating system
Visopsys (VISual OPerating SYStem) is an alternative operating system for PC-compatible computers, developed almost exclusively by one person, Andy McLaughlin, since its inception in 1997.
Andy is a 30-something programmer from Canada, who, via Boston and San Jose ended up in London, UK, where he spends much of his spare time developing Visopsys,
We had the great fortune to catch up with Andy via email and ask him questions about Visopsys, why he started the project in the first place, and where is it going in the future.
Pingdom: Visopsys is a one-man project, from start to finish. That seems like a monumental task to take on. Why and how did you start it in the first place?
Andy: There have been a handful of contributors who added things (or started things!) but largely yes, 95% of it comes from me. Back in University in Calgary Canada, in the mid-90s, one of the required courses was about operating system theory. For some reason, the subject really grabbed my attention. Like many geeks around that time, I was pretty frustrated by the limitations and annoyances of Windows. Linux was still relatively new on the scene, and was still a bit “rough around the edges” from a usability perspective. I had some of my own ideas about how things could be better, so I just thought I’d have a go at doing my own OS.
In 1998, I moved down to California to work at my first real industry job, in Sillicon Valley, but there wasn’t much programming involved and I wanted a challenge, so I started teaching myself assembly language and the x86 bootstrap process. I probably spent the first year just doing that stuff – the boot sector, the OS loader, a ‘hello world’ protected mode kernel. It wasn’t until about 2003 that I had something resembling a real operating system, with a semblance of a GUI.
Pingdom: Knowing what you know now, what would you do differently if you started something like Visopsys today? Would you even do it?
Andy: Like with any big programming project, you always have to revisit your original design choices as things start to get bigger and more complex. You always look back and chide yourself for a bit of bad code, or the odd hack you did just to get things working, or just plain poor architecture. I often wish I’d spent more time working on more and better hardware support: that’s something I’m still trying to catch up with.
But, other than that, I’m so glad I took on the project. It’s been an amazing learning experience, and it has definitely helped me in my career, both from a resume perspective, and in terms of expertise in various subjects. I’ve had to do the lowest-level hardware coding in assembly language, all the way up to implementing a GUI, and got to dabble in just about everything in between. Invaluable, for a career programmer.
Pingdom: What’s been the hardest part of working on Visopsys?
Andy: Hardware support, definitely. The world of PC hardware has always been a bit daunting, since there are so many different manufacturers, all interpreting the standards in their own ‘unique’ ways. You might write something like an IDE driver that works on every system you try, release it, and then find out it isn’t working properly on hundreds of other peoples’ systems. Nowadays I collect computers – used laptops mostly, since they have some of the wonkiest hardware, and they don’t take up much space. I’ve got loads of them stacked in boxes in the attic.
The most difficult driver suite has been USB, I think. USB is quite good, but it’s also pretty complicated to get everything working.I’ve been trying to catch up with full USB 2 and USB 3 support for months now, since USB 1 controllers are mostly going away.
Pingdom: It says on your site that Visopsys is written “from scratch”. Does that really mean that every bit of code is written from start by you, or have you use libraries and pieces of code from others?
Andy: It’s mostly from scratch. Most contributions from other developers have been fairly small. Peoples’ original contributions are all still there in a part of the source tree, and mentioned in the credits file.Often I’ve had to re-write or significantly modify that code over time, as the architecture evolved, but a few people have helped to get me moving in the right directions, at least.
I’ve borrowed a few little things that I didn’t feel like writing from scratch, usually well-known algorithms or code that involve math I don’t understand, or don’t want to study. For example, things like calculating square roots or plotting circles
The only significant chunk that’s not original is the NTFS resizing code. That’s borrowed from the “ntfsprogs” project, but with a significant amount of porting work to get it to fit into the system “just so”.
Pingdom: The disk manager in Visopsys, “Partition Logic”, is available as a stand-alone product. It seems to have been developed in-step with Visopsys. Have you ever thought about turning it into more of its own product?
Andy: Partition Logic is really just Visopsys with some different configuration files. There’s very little else to it. In that sense, they’re the same product. On the other hand, they have completely different user bases, with different expectations. So conceptually, they’re separate products. I try to balance the competing priorities of making Visopsys a proper operating system, and making a good tool for other people who don’t particularly care about Visopsys.
I originally conceived of Partition Logic as a way to get people using my OS, since niche operating systems (with very little available software) are often little more than a curiosity to other OS geeks, at best. I wanted to find a way to make it useful to a wider audience of people. So, I did a lot of work on the Disk Manager, reconfigured things to focus on that application, eliminated or hid a lot of the normal OS stuff like logging in, etc., and my partner came up with the catchy, slightly satirical name.
Coincidentally, the company that owned the commercial product Partition Magic acquired my then-employer just days after the first Partition Logic release. Suddenly there was a conflict of interest; I told them about it, but they were such a big international behemoth that they didn’t seem to care. At least at that time, it was definitely “under their radar”. Of course, the Partition Logic user base subsequently exploded (my servers have recorded millions of downloads, as far as I can extrapolate). I don’t work for that company any more though, and they’ve got bigger things to worry about nowadays.
Pingdom: Have you been successful in your primary goal with Visopsys, to “cherry-pick the best ideas from other operating systems”?
Andy: Well, I’ve certainly cherry-picked the most convenient ideas. I never set out to re-engineer every aspect of an operating system. For example, things like file formats and filesystem designs. There are lots of good ones out there, and I didn’t think I could necessarily improve on those. Other things like command line programs and whatnot, they’ll look familiar to Unix and Windows users. Similarly, the GUI desktop is pretty common-looking. Nothing original there, yet. But, in fact, a new GUI paradigm was one of my big, original goals. It’s all mapped out, inside my brain. I still want to do it, but my to-do list of intermediate tasks – more basic, pressing needs – never seems to get any shorter
Pingdom: What would you say are the main things you’ve learned from working with Visopsys? Technical or other.
Andy: Aside from all the technical and design things, and the coding skills I’ve acquired, the biggest thing I’ve gained is confidence. I guess that’s just the cumulative result of learning and doing a big mass of things. I have a large box full of whitepapers and tech docs that I’ve had to study over the years. When a new one comes along, I know I can tackle it, given enough time and motivation. When discussions arise at work, many times I know the answers to things that most programmers have never had to learn. Just today at work, for example, some guys were speculating about various aspects of object files and runtime linkers. I knew the answers because I’ve implemented them.
But, you don’t have to necessarily write an operating system to get these benefits. What you do have to do, in my opinion, is be passionate about writing code and creating stuff. Different things – anything that piques your interest and challenges you. Just jump in, learn the new things you have to learn, and stick with it until you’ve reached the goal you initially set for yourself. Then, start again with some other new, interesting thing. If you make that part of your lifestyle, eventually you will have accomplished a lot.
Pingdom: What can you tell us about the future plans for Visopsys?
Andy: The short-term plan is to finish getting the USB subsystem all up-to-date, because USB is still increasing its reach into various aspects of hardware. For example, all of the new tablet computers use USB for the touchscreen, and the manufacturers are moving ahead quickly, dropping EHCI (USB 2) and jumping straight to XHCI (USB 3).I’m trying to keep ahead of that wave, this time around. Visopsys also needs a proper AHCI (SATA) driver. UEFI booting is going to completely replace the old-fashioned BIOS stuff fairly soon, in a lot of new systems. That’s another thing that I and other OS hobbyists will have to contend with before long.
Thats kind of the boring stuff, as far as I’m concerned. Challenging, for sure, but not what I’d really like to be doing. For one thing,I’d like to get Visopsys’s network stack fully implemented and working properly; an OS isn’t much use without that nowadays. I’d like to finish my compression library, and enable Partition Logic to image partitions and disks to external media like DVDs, a la Norton Ghost.I’d like to start implementing my GUI ideas. I’d like to get a bunch of software ported to Visopsys. The list is always endless. The project is endless. That’s part of what makes it fun for me, and easy to dedicate my time to – it’ll never be finished. I could work on it for the rest of my life, as long as it keeps being interesting.
Pingdom: What is the Visopsys community like? Who are the typical Visopsys users?
Andy: It’s lonely! There aren’t many of us. Luckily, I’m an introvert. New developers are always welcome though. Most of the users are actually using Visopsys as Partition Logic. When things don’t work, they send me lots of bug reports. When things work, they sometimes send me money – which is lovely of them. My dream scenario would be to create a ‘subscription’ or ‘supporter’ status for people who donate a small sum of money, and give those people a few perks like extra support, or early access to new features and whatnot. If only a tiny percentage of users signed up, I could probably go live in a hut on a beach somewhere (with good internet access, naturally) and do this full time. Maybe I’ll try to make that happen someday. In the meantime, I guess I’ll have to keep my day job in London!
Download and try Visopsys
We would like to say thank you to Andy for taking the time to answer our questions.
Andy has collected a long list of resources for anyone interested in operating system development. If you tell him that you want to develop your own OS, he may caution you to think carefully before you do. But, judging from his answers in the interview, it would seem working with Visopsys has brought him invaluable knowledge and experience.
We will certainly follow Andy and Visopsys to see how the OS develops in the coming years, and we wish him good luck.