Quitting smoking is easy, I've done it hundreds of times.
2001 to 2003: Discovery and Failure
At age 15 (2001), I became an IT intern at my high school.
I wasn't initially accepted as an intern via the application process. But the 2 IT staff saw me helping a teacher with his laptop, and reconsidered my application on the spot.
My high school was, and still is, a strong partner with Microsoft.
For example, Windows XP didn't officially reach GA until 2001-10-25. When I started high school on 2001-09-10, we already had Windows XP installed everywhere.
Microsoft helps them educate their students in technology, and education was (and still is) their #1 value. Not software freedom.
To emphasize my school's commitment to education, consider this story:
I did a community service program between my high school and Penn. At that time, it was called TechServ, not TechServe. And it did not involve other high schools yet.
So during that program, there was a lesson about Jean-Baptiste De La Salle, the founder of the order of our schools (the Christian Brothers.) I read this pamphlet about him, and it is resting on my Macbook now. Afterwards, I asked the Christian Brother what the difference was between the Christian Brothers and the Jesuits, who already existed. He replied:
The Christian Brothers focus exclusively on education, especially for the poor.
So clearly open source, if they cared about it at all, was a means, not a value, for my high school.
My high school's values.
Free tablets from Microsoft are merely a means to this end.
Yet irony abounded. The Christian Brothers repeatedly had action taken against them by the "writingmasters guild" and the "schoolmasters guild". By educating the poor, without charging money (or being inept at it), it was said that they were "upsetting the applecart."
The analogy to open source is obvious.
I wonder if a company nowadays will patent a "novel" ways to write wikis and then found a "WikiWriters guild."
(Note that the existence of those guilds contributed to the French Revolution.)
Anyway, needless to say, Linux was forbidden fruit.
The famous prank that a rogue Linux-loving-intern pulled was to boot the Microsoft-fanboy head-IT-employee's laptop with Knoppix.
Despite all this, in early 2002, I first tried Mandrake (the "Distro of the Day") on my home desktop. I tried a couple of other distros too, on and off, through early 2003.
However, I would try to download and install my existing Windows applications (like AIM for Linux, seriously) and fail to install them.
As a point of reference, my high school lended me a Microsoft Windows CE 10" "Intel StrongARM" tablet. (They evaluated them, but did not deploy them. So IT interns got to borrow them as perks. 12 years later, they finally gave a Surface tablet to every student.)
To install AIM on it, I went to AIM's website, downloaded the .exe installer file (which was compiled for ARMvSomething and Windows CE, not for x86 and win32) and then installed it. After installation, I launched it from the start menu and it ran successfully. Of course, resistive-screen-tapping of keys was a very slow way to type. And on AIM culture in the early 2000's, responding slowly was a serious breach of etiquette. But I didn't realize that at the time. I simply was annoyed by being slow to type.
The point is, I was still subject to the mental model of "go to the application's website and download" to install an application.
Maybe I forgot to set the executable bit on the binary blob installer before double-clicking it in the file browser. Or maybe I made some other mistake. I did not know very much about Linux or Mandrake, so I gave up on it.
At that time, I was willing to switch from proprietary applications to open source applications. But it was my inability to install and use arbitrary applications, open source or proprietary, that frustrated me.
After all, installing and trying out lots of different applications was how I was developing my IT skills so rapidly in my free time. I was learning about as much in my free time than I was at the internship. But Linux was not conductive to this approach.
So I 1st gave up on the Linux desktop in 2003.
2004 to 2006: Lizards in the Closet
In spring 2003, 1 of the 2 IT employees told me that I would become one of the head IT interns next year.
I thought I had a did a good job over the summer. However, I made mistakes that I later cringed at.
In fall 2003, other IT interns were already designated by by that IT employee as head IT interns. And I was told by that employee to go through the application process again; something that they did not have to do. Bureaucracy is often a polite way of saying "No."
(In 2005 the principle apologized for the IT employee's actions, including her false promises, to me and other former/current students. That IT employee later left the school.)
So until I graduated from high school in 2005, I continued to hang out with my friends in the IT internship program. I continued to do volunteer IT work for the school on and off, even though I wasn't officially an intern. But I did other activities in my free time (like LD debate,) which made me more well-rounded. And I continued to develop my IT skills in my free time.
One of things I did in 2003 was setup my old desktop as a server running Windows Server.
While I was on Windows, I would use primarily open source apps: Firefox, OpenOffice, MediaPortal, gaim, ClamWin, etc. In 2005, I even heard from a former IT intern, who was working at Microsoft, that almost every Microsoft developer was using Firefox.
I still feel like open source Windows apps are a great way to help people migrate to Linux. There even used to be open source Windows apps on Ubuntu CDs.
In 2004, I felt like I would finally give Linux another shot. So I installed SUSE on my server.
And I did successfully stick with SUSE on my server.
However, the server was in my closet. So I named it "conclave" ("A secret or confidential meeting", also an entity in Starcraft.)
The monitor, keyboard, and trackball were outside of the closet, but generally on the floor, so interacting with the server (and thus the KDE desktop) physically was awkward. I primarily interacted with it over the various VNC solutions. I would edit config files in my home from my Windows desktop via samba, before copying them back to their location under /etc/. By doing this, I learned what line breaks are the hard way. ("The daemon says there is invalid syntax foo on line X, but it syntax foo is actually on line Y.")
I gained a good understanding of package management, executable bits, etc while using SUSE on my server.
And I put my server to good use. I used Apache to host a PHPBB forum for my friends from the IT intership; which was bragging rights, for both myself and for Linux. I made it the firewall/router for my home LAN. I put multiple hard drives in it and shared them out over Samba. Etc.
Since my server was running SUSE, and installers were getting better, I figured I would try dual-booting my desktop again.
It was true that on SUSE, most open source apps I needed were available in the distro. However, I had to wait for a new release of the distro before I could install the latest version.
Open source news sites would announce that a new version of gaim, or other open source apps, were released. Often I wanted to try out the latest version for that reason alone. Often I actually needed the latest version.
When a new version came out, I could install the latest version on Windows and use it. There was never any hassle in installing the latest version of an open source app on Windows.
But on Linux, I tried and often failed to install the latest version from source.
Sometimes I would try out obscure open source Windows apps. Installing and running them was never a problem. (Vista wasn't out yet.)
Yet trying out obscure open source Linux apps usually ended in failure. Often they simply used "./configure; make; make install", but the dependencies were an issue. It was hard to figure out how to resolve the dependencies on my distro rather than the maintainer's distro; they were usually listed in a text file with the names for that other distro. Or they were listed in a very generic format that I did not know how to translate into SUSE packages names. I never tried to package them; I simply tried to compile and run from the tarball. And there was actually a GNU tool for that.
Honestly, when I could not compile an open source app, I felt less free than on Windows. I felt like I did not have "freedom 0."
The freedom to run the program as you wish, for any purpose.
I no longer feel that way. But that was how I felt at the time.
And I am not just making this up. There is proof on an open-source version controlled wiki, last updated on April 12, 2007.
I have a friend who has since come to embrace Linux and work as a CentOS guy at Facebook. But at the time, he loved Windows and hated Linux. He said:
setup.exe owns .rpm and .deb
There were attempts to make "portable" Linux "apps" that bundled their dependencies. I read that they used very generic compilation options too. The one I tried most was klik. Others included PortableLinuxApps, Glick and Glick2. However, from my perspective, few apps were available for them. They simply failed to catch on. Perhaps there were also technical limitations that limited which apps could be packaged with them.
Over time, I tried to switch my desktop entirely to Linux. I still remember my aunt asking me if I had any intention of switching to Mac OS X. I told her that I was switching to Linux. However, it was difficult to explain Linux to her.
To switch my desktop entirely to Linux, I needed to get all the proprietary games I play to run on Wine (or "cvscedega"), and that usually ended in failure. And even when they did run without errors, they did not run at full-speed. Or I had to disable certain graphics settings. Honestly, I tried so many different versions of Wine, and different graphics settings. I experienced mixed results, that I felt like I was wasting a ton of time.
So I gave up on Wine.
At one point too, I tried to run nothing but open source games. It was very hard to do though. Games like Boson looked promising in their screenshots. But once i managed to compile them, they were not as good as the screenshots led me to believe. They were slow to improve, and even if they did, the latest version had to be compiled from source. Ultimately, I concluded that open source was not a good model for game development, and resigned myself to playing proprietary games on Windows.
I continued to dual-boot, but it was annoying to switch back-and-forth on my desktop to play games.
Note that in 2005, I graduated from high school and went away to college. To access my server remotely, I had to use VNC. However, I was disappointed with the lack of progress on VNC solutions. This was partially due to RealVNC discontinuing new major versions of their open source version in 2005. I eventually discovered NoMachine NX, before it went 100% proprietary.
Then in August 2006 I bought my new desktop with a Core 2 Duo "conroe" and Intel 965P, ICH8 chipsets, and a Marvell storage controller I tried about 4 different Linux distros but could not boot a single stable release.
I remember asking for an explanation on IRC. I asked a question like "why doesn't Linux write generic drivers like Windows does so that it can handle new hardware?" Someone gave a reply like "because generic drivers are crap."
I became so frustrated with this that I gave up on running Linux on my desktop from that point.
Make no mistake, I still loved Linux. And I loved the concept of open source even more than I loved Linux. I was always fascinated by it from an economics and management perspective. It seemed to the perfect example of non-market economics based on self-interest. Later on, I gave a presentation on open source project management in my management class (although it is full of advise from SVN developers, so I am afraid to show it now.) However, I was pissed at Linux developers over their decision to not develop generic hardware drivers for my brand new desktop. And I was continually frustrated by the binary blobs from Nvidia no longer working.
I understand now that drivers should be open-source and in-tree so that vendors do not slide back into binary blob release mode. Of course, today, management and many engineers at work do not understand this. So I tell them that just as Microsoft enforces WHQL standards on their manufacturer's drivers to prevent BSODs, the Linux kernel project enforces their own quality standard on in-tree drivers. And it is absolutely true that out-of-tree drivers cause kernel panics very often. But from their perspective at work, the Linux kernel updates breaking drivers is just 2 "vendors" bickering with each other. So I try to persuade them with stories about kernel panics, and those stories are true.
I continued to run Linux via dual-boot, or exclusively, on my laptop. And my home server ran nothing but Linux.
But I felt like I needed to focus more of my time and effort on schoolwork; not on developing my IT skills in my dorm room. This was not a very happy time in my life. Just as De La Salle focused entirely on education, I needed to do so also.
However, make no mistake. Although I gave up on running Linux on my desktop a 2nd time in 2006, I did not give up Linux in general, or on open source. (Again, proof is here.)
2006 to 2007: ReactOS on the Desktop
Around this time, I decided to help the ReactOS project.
ReactOS is an open-source operating system intended to be binary-compatible with computer programs and device drivers made for Windows Server 2003.
Call it a "Windows clone" if you want. That is what everyone else called it.
Mike DePaulo's ideal Open Source desktop OS in 2007
I joked with my friends that they should adopt a new mission statement:
ReactOS is a open-source project designed to make Steve Ballmer lose sleep at night.
Seriously, that afore-mentioned link is a brain dump from me on their wiki. I helped them with bug triaging, documentation, and all. I learned about open source culture and etiquette. I also learned version control.
Anyway, Running ReactOS on real hardware was always a pain. Which is why we typically used VMware Workstation or Qemu. Later on, VirtualBox. I also gained an understanding of why VirtualBox was crap compared to VMware and Qemu.
At least ReactOS seemed be working with upstream wine. And their OS installer acknowledged Wine + the other projects they derived from in its "wizard," I learned the value of "stay close to upstream" from ReactOS. Even though they were using SVN.
However, I did not learn C or C++ (or assembly) fast enough to help ReactOS meet its lofty goals. And I feared that ReactOS was developing too slowly to ever compete with Windows or Linux. Although I was helping them with multiple non-programming tasks, and reportedly learning a lot via IRC discussions, I felt like by cont contributing code, I was merely a "groupie" on their IRC channel.
ReactOS's development team may have been small, but there was no shortage of talent. Alex Ionescu is a genius. But he was later hired by Microsoft.
Also, Firefox compatibility became increasingly difficult for ReactOS after Firefox 4.0 was released. Frequent "upgrades" (rather than "updates") to Firefox meant freaking breakage under ReactOS. And the web browser is the main application for any OS.
So while ReactOS had raised my hopes for an open source desktop, this was only tempoerary.
I gave up hope for an open source desktop a 3rd time.
2006 to 2010: Linux on Everything but the Desktop
By mid-2006, I had migrated my laptop to either Ubuntu, or Ubuntu + Windows dual-boot. I was using KDE3.
I got 1 new laptop model after another and continued to run Kubuntu. But my desktop, with its continually upgraded CPUs and graphics cards, continued to run Windows.
There were hardware difficulties on my laptop, but I was willing to work through them. Even if it meant using crap like ndiswrapper.
And Ubuntu even added official support for KDE, in addition to GNOME.
Mark Shutleworth compared GNOME, KDE and the Server on Ubuntu to 3 "peaks": K2, Kangchenjunga and Lhotse. He said that they were based on "Debian’s Plateau." This sounded like a good argument, and I bought it.
Then KDE 4.0 came out. Due to the unsuccessful launch, I switched to GNOME2.
At that time, Ubuntu was not yet doing many crazy modifications to GNOME; and each 6 month Ubuntu release was actually timed to co-inside with each GNOME release (like Fedora does now.) So I got to try out the latest version of GNOME, via either Ubuntu betas or stable releases. It also seemed like GNOME was better integrated into Ubuntu than KDE was. Ultimately, I felt like I had the latest and greatest GNOME experience on Ubuntu, although I wondered what the "vanilla" GNOME experience was like.
I tried KDE 4.x multiple times again. But I didn't continue with it because it was slower, and because it was less poorly integrated into the Ubuntu OS.
But why did I switch to Ubuntu in the 1st place?
Over time, Ubuntu became the "de facto" desktop Linux distro. So ubuntu .deb packages of desktop applications became almost always available, such as via the developer's site or the sourceforge page. This was a solution to my original problem of not being able to run open source apps on Linux, even if it was an issue for other distros.
So I continued throughout college to run Linux on my laptop, whether it ran Windows or not. My primary reason for using Windows was gaming, but thin-and-light laptops sucked at gaming, so I just gave up at gaming on my laptop. Gaming was what my desktop was for. And I continued to run many open source cross-platform apps.
I still remember when I submitted my resume to my college's job board in .doc format, .docx format and .odt format. I was very proud of myself. I figured I could apply to every type of company (old fashioned, Microsoft loving, or open source loving) with all 3 formats. I even entered descriptions like "Resume in OpenDocument Format." But the career counselor deleted the .odt file. And the company I ultimately joined after college with only cared about .doc or .docx files.
While I was still in college, I interned at a computer camp for kids. I came up with an improvised solution like Spacewalk, but for Windows desktops. In the Windows XP ghost image that went out to each desktop, I had installed Copssh, an easy-to-install-and-use bundle of Cygwin SSH. I also had a public key installed in each desktop's known_hosts. From the machine in my office, I could issue arbitrary commands or push updated .msi packages (created with WinInstall LE) via a loop. I am sure there were more elegant solutions. But I was told not to setup a windows domain by my boss. And he told me that there were no free-of-charge or cheap solutions to do the same job. Ultimately, this approach was a great success, and it got me very interested in Cygwin.
I even tought workshops at that camp too. I tought Linux workshops, and it was awesome to teach it. Previously, they had used VMware Workstation to run Linux. I suggested using wubi. (Which Ubuntu later discontinued.) It was a great success, and kids loved 3D desktops like Compiz. The performance was also faster than on VMware Workstation.
Loop-Mounted Filesystems + 3D Effects == Happy Campers
However, when I first started my camp job, I got into an argument with 2 of the head camp employees. I told them I needed to run Linux (Ubuntu + webmin) for a firewall machine (desktop PC with 2 NICs) with the necessary config options to prevent campers from using the internet at night, without restricting counselors' ability to do so.
1 of them insisted that I should not install Linux on it. She stated that she wanted it to be a general-purpose Windows desktop too. She made a statement like "this isn't a computer for messing around with." The other employee confirmed what she said. "I don't know what was installed on it last year. But I know it wasn't Linux."
I was rude in that argument for aforementioned reasons. And I was afraid that I would lose my job; lose my job for insisting that a firewall machine needs to run Linux. But I knew I was right. My boss, the techhnology director, talked to them. And then he talked to me. The machine was running Linux last year. It was running IPCop. But they didn't know that IPCop was Linux. Just as other distros try to hide the fact that they are "Linux."
And no one at camp doubted that I loved Linux. I helped campers and counselors install it on their laptops too.
At school, I joined an engineering fraternity. And I became the network admin for my fraternity. I installed 1 distro with a WebGUI, and then another, for our fraternity's firewall machine. It became more of a general-purpose server too; where "downtime" equaled "unhappy fraternity brothers."
I also started to use dd-wrt and other Linux distros on wireless routers, which I could use as APs/switches throughout our fraternity house. Linux could even run on the 2-year-old Microsoft MN-700 wireless router that I bought! I was excited for both Android and Linux on tablets. I bought some really early models of them in 2009-2010. But this blog post isn't about servers, or routers, or tablets. It's about desktop Linux.
I even became president of the LUG at my school. And no one doubted that I loved Linux. I brought my laptop with Linux to all the LUG meetings!
Around that time, Sun Microsystems started creating their own astroturf competitors to LUGs called OSUM (Open Source University Meetup.) They created an OSUM at Penn State without contacting the existing LUG! This sounds awfully similar to a few other "open source" operating systems nowadays.
And I knew there was something wrong with Sun's approach to open source in general.
Throughout college, I would take notes in class on Linux, and give presentations on OpenOffice in Linux.
OpenOffice's 3D effects on Linux would wow the class. But the 3D effects weren't available in OpenOffice.Org for Windows. Why? Because of Sun's policies.
So I still valued open source, but I was learning about it through bad examples. Sometimes you need bad examples to understand the right way. (Note to self: create lib-unstable-abi and put it in a copr repo.)
But I still wasn't running Linux on my desktop.
2011 to 2015-08-11: Business as Asual and X2Go
In fall 2010, I graduated from college. And I did not need to take my personal laptop into work. So I no longer needed to use my laptop very much.
I had built multiple spare desktops from spare/on-sale/friend's-old components in my apartment. And they ran Linux occasionally for testing things like Wayland. But they primarily ran Windows, because they were primarily for gaming when my friends came over.
At work there were multiple reasons beyond my control why I needed to run Windows on my desktop. And at home, I started contributing to X2Go, so that I could access the Linux desktop environments from Windows physical desktops. I started to use Cygwin more heavily too, and even became a package maintainer (albeit for a package that I needed for testing Windows X Server performance.) With X2Go, I could access the Linux dekstop remotely. And I have been always running Thunderbird (for encrypted/signed email, not for other email) remotely.
(I do not want to link to any of this, because I do not want to promote my open source contributions in this blog post.)
In terms of servers: I do have multiple physical servers running Linux at my apartment. Only 1 of them is in my closet (the storage server), but that is for physical space reasons. I have only 1 physical server running windows: the physical DC. (The other Windows DC is a VM running on KVM.) The reason I have 2 Windows DCs is because Samba 4 was missing 2 important replication features, and 1 of them is physical for technical reasons that would take a while to explain.
In terms of my laptop: Currently, I have a ($150) ChromeBook running Fedora 22, and a Macbook Air with a small SSD. The Macbook Air was only running Windows and Mac OS X until shortly before Flock. I replaced Windows with F22 before I went to Flock to avoid the embarrassment.
But my primary desktop? It was still running Windows. And I had upgraded it to Windows 10 in order to try out the latest version of Windows, with all of Microsoft's latest features.
And this entire time, gaming on Linux had been improving. Even when games are not available for native Linux, steam Windows games are at least streamable.
So Ultimately, Linux was not my primary desktop. Windows still was. And the real reason was not because I needed to run games. It was because I was not trying very hard. And I only realized this just now.
2015-08-11 to 2015-08-22: Flock and FOSSCON
At the X2Go conferences I went to, no one doubted that I loved Linux. And I need to run Windows there because I am the X2Go Client for Windows maintainer. But when I went to Flock, and when I went to FOSSCon, people did doubt that I loved Linux because I ran Windows on my primary desktop. Calling it my "gaming rig" was no excuse. It is a gaming rig, but it is (Update: was) still my primary computer.
Yes, I do need to run League of Legends. It is my "mission-critical" application. And it is a "social network" because all my friends play it.
Seriously, there are 15 machines on my network responding to pings right now; whether they are servers, VMs, or embedded devices. And that's not counting the spare desktops; they're in standby. If I have all this hardware at my apartment, I can figure out a solution to switch to the Linux desktop using my existing hardware!
And it was a discussion on IRC, combined with Microsoft pulling crap much worse than they have pulled before, that gave me the final bit of motivation to migrate to the Linux desktop.
2015-08-22 to 2015-08-23: My Migration to the Linux Desktop
You're probably wondering if I have spent hours doing nothing but writing this blog post.
Actually, I have been migrating to the Linux desktop the entire time!
This one's for me
Progress bars for large file transfers gave me lots of time to type.
I finished typing the last section on my Windows desktop. I started typing this section on my Linux desktop.
My Linux desktop shortly after migration. monitor 2 is not yet detected.
I need to get to bed soon. I do have a day job. I will blog later with the technical details of my migration, and my hopes for the future.
But in summary, there will be 2 physical desktops on my desk. One running Fedora, and the other running Windows. And that is the physical Xorg server on Fedora, not a remote/virtual X server.
And make no mistake: The Linux desktop is the primary desktop. And I am using it comfortably right now.
I do have 3 closing remarks though.
If you have any doubt over my commitment to open source, my history is on the web/internet, not behind closed doors.
I learned the open source way -- the hard way.
Perhaps the reason why everyone wants to work remotely is so that they do not have to quit smoking.
-Mike