Being an independent software developer is an interesting business. If working on products that you intend to bring to market (eg. rather than contract work), it’s best to reach as wide an audience as possible. That means being fairly pragmatic regarding which platforms you develop for.
I have a strong preference for GNU/Linux for personal use, but it’s important to be able to develop and test under Windows. I’ve also been thinking about getting an Apple computer for cross-platform testing and possible iPhone development.
I’ve previously kept work and personal computer usage very separate. While at work, I would never check personal email, use social networking sites, post to my blog, or browse the Internet. I would just check my personal email and my newsreader when I was at home. This was great as it helped me maintain some distance between my professional and personal relationships and forced my to divide my time appropriately. I would use my Windows work laptop for work and my Ubuntu home desktop for everything else.
I resigned from my position at Interzone Entertainment a few months ago, and I’m finding it fairly impractical to maintain seperate work and personal computers when I’m working for myself and I need to develop across multiple platforms. I ran into the following problems:
- I knew hardly any of my passwords other than my desktop login (I just get my installed applications to remember passwords) so I couldn’t check email etc. unless I was using my home desktop.
- Moreover, I rarely used my (Vista) laptop since it didn’t have my stored passwords, my desktop feedreader, or my desktop notes. So it never had everything I needed.
I figured that it’s probably better to have my main work machine be the laptop since I could take it with me anywhere. Since I greatly prefer Ubuntu, I installed it on the laptop as half of a clunky dual-boot setup before finally just wiping the machine and installing Ubuntu standalone (with Windows Vista running in a VirtualBox VM). Unfortunately this still wasn’t the answer: even with Ubuntu installed there was a lot to setup, especially if I wanted data synchronisation with my desktop machine (which is more comfortable to use).
At this point it really hit home how much of a mess account/data management and cross-platform development/usage are. There are so many kludges (desktop password keyrings, virtual machines, meta-accounts, etc.) to try and make it work, and no practical ways for people to really manage all their own data on their own machines, and still engage in all the Internet has to offer (especially social networking).
I started trying to determine how best to consolidate my various accounts and data (spread across multiple email address, IM accounts, social networks etc.) and I’ve come to the fairly disappointing realisation that the only practical way to have single sign-on access to easy-to-administer services accessible whenever/whereever I want it… is to use integrated, externally-hosted, proprietary services (such as those offered by Google).
Now there are heaps of open-source programs that I can use to run my own web, mail, chat, and other services. However, they don’t provide everything I need and there are a lot of deal-breakers:
- Integration: I want single sign-on and a consistent interface.
- Maintenance: I don’t want to worry too much about software being out-of-date or getting hacked. (I auto-update my desktop).
- Front-end: Few services have standard web front-ends and I don’t want to have to configure custom clients across multiple desktops.
- Federation (and social networking): There are very few real open source options here as the market is dominited by closed platforms.
It’s great to see Google’s utilisation of open standards (IMAP, XMPP, Jingle, etc.) and provision of them as well (OpenSocial, GoogleWave), but it’s distressing that we’re still very far from competative FOSS web services that could take on Google/Yahoo/Microsoft and popular social networking sites. There are many fantastic standalone projects (Apache, courier, ejabberd, laconi.ca, WordPress, etc.), but no cohesive solution. Moreover, it seems that people are far less fervent about it (I get the impression that a lot of people who will run nothing buy FOSS on their home machine will happily use youtube, facebook, and twitter).
When Windows was the closed system on every desktop, Linux offered a valid FOSS alternative (and packaged distributions made it accessible). When everyone is using closed remote services, I hope that there are comparable packaged open source alternative: a standards-based, federated, web-services option that you can host wherever you want (on a remote host or on your own server).
In the meantime, I’m probably going to use Google services and some sort of social networking aggregator while trying out (and maybe helping to develop) promising alternatives.