The New Microsoft?

Just replace Google with Microsoft and turn back the clock by 15-20 years in the below article and you will notice striking similarities in their strategies to capture the market:

Google’s iron grip on Android: Controlling open source by any means necessary | Ars Technica.

The decisions make perfect business sense and is possibly the easiest way for Google to maintain control over Android while taking care of the fragmentation issues that have plagued the platform over the last few years. As an end user this has both positive and negative implications. The good part is that we do not have to depend as much on OEMs and carriers for Android updates and features. The bad news is mainly for the open source fanatics who thought that Android was “open”.

Of course, if you are an Android device maker, particularly one that is floundering in the face of the Samsung onslaught, then you are in a tough spot. Case in point is HTC that has been making pretty distinct devices that get good reviews, but doesn’t have any profits to show. Good acquisition target for Amazon it seems.

Then, there is also Google’s strategy to suffocate the Windows Phone platform by ignoring it and depriving it of first party Google Apps. Another strategy that makes very good business sense, but not really in the spirit of “Don’t be Evil”.

In a broader sense, the “Don’t be Evil” Google is long gone, having been replaced by a business savvy one which is a natural transition for maturing companies to survive in the marketplace. I just hope that Google Services don’t do to the internet what Microsoft did with Internet Explorer and Office…

Interning on FOSS 1: Open Source Development

I’ve been interning at Sun Microsystems in Delhi from May 1st and during this period, I’ve had the opportunity to research a variety of open source applications. My initial project was to explore and research various open source applications suitable for use by students and compare them against each other and with the proprietary alternatives. There are indeed a bunch of alternatives available for the software we use during the course of our day to day work.

I managed to submit a paper on “Components of an Open Source Operating System for Sustainable ICT Education in Schools in Developing Countries” to the HICSS conference, and I’m starting off a multi part post with my learnings on open source software and development.

One of the interesting works that I read on open source development was Eric Raymond’s “The Cathedral and The Bazaar”. This is probably one of the definitive works on open source development, and a number of theories stem from it. In fact, quite a few papers that I referred to during the course of my research cited this work. He has postulated the following principles in the essay:

  1. Every good work of software starts by scratching a developer’s personal itch.
  2. Good programmers know what to write. Great ones know what to rewrite (and reuse).
  3. Plan to throw one away; you will, anyhow.
  4. If you have the right attitude, interesting problems will find you.
  5. When you lose interest in a program, your last duty to it is to hand it off to a competent successor.
  6. Treating your users as co-developers is your least-hassle route to rapid code improvement and effective debugging.
  7. Release early. Release often. And listen to your customers.
  8. Given a large enough beta-tester and co-developer base, almost every problem will be characterized quickly and the fix obvious to someone. (The full version of Linus’s law – Given enough eyeballs, all bugs are shallow)
  9. Smart data structures and dumb code works a lot better than the other way around.
  10. If you treat your beta-testers as if they’re your most valuable resource, they will respond by becoming your most valuable resource.
  11. The next best thing to having good ideas is recognizing good ideas from your users. Sometimes the latter is better.
  12. Often, the most striking and innovative solutions come from realizing that your concept of the problem was wrong.
  13. Perfection (in design) is achieved not when there is nothing more to add, but rather when there is nothing more to take away.
  14. Any tool should be useful in the expected way, but a truly great tool lends itself to uses you never expected.
  15. When writing gateway software of any kind, take pains to disturb the data stream as little as possible—and never throw away information unless the recipient forces you to!
  16. When your language is nowhere near Turing-complete, syntactic sugar can be your friend.
  17. A security system is only as secure as its secret. Beware of pseudo-secrets.
  18. To solve an interesting problem, start by finding a problem that is interesting to you.
  19. Provided the development coordinator has a communications medium at least as good as the Internet, and knows how to lead without coercion, many heads are inevitably better than one.

Most of his principles are for software development in general, and so also apply to open source development. The key learnings form his essay are two-fold. First is that it is important to have a working prototype of the project before making it open source, or at least trying to find other developers who’d be interested in it. Second is that open source attracts a wide variety of talent that can be put to various uses, ranging from bug finding, to improvement suggestions to actual coding. Thus, it is essential to treat the participants in the right manner as everyone could make an important contribution.

One of the other observations to be made about open source development is the vital role that the internet has played in creating the synergy that exists between the developers, users and other contributors of any open source project. In fact, Eric Raymond has said as much in his essay:

… Another (in hindsight) was that the Internet wasn’t yet good enough.

Before cheap Internet, there were some geographically compact communities where the culture encouraged Weinberg’s “egoless” programming, and a developer could easily attract a lot of skilled kibitzers and co-developers. Bell Labs, the MIT AI and LCS labs, UC Berkeley—these became the home of innovations that are legendary and still potent.

Linux was the first project for which a conscious and successful effort to use the entire world as its talent pool was made. I don’t think it’s a coincidence that the gestation period of Linux coincided with the birth of the World Wide Web, and that Linux left its infancy during the same period in 1993–1994 that saw the takeoff of the ISP industry and the explosion of mainstream interest in the Internet. Linus was the first person who learned how to play by the new rules that pervasive Internet access made possible.

In essence, open source development has a lot of potential when used in the right manner. In fact, many companies use it quite strategically and couple them with interesting licenses (I’ll cover licenses in another part). There are also quite a few organizations championing free (as in freedom) software with the FSF (Free Software Foundation), headed by Richard Stallman being one of the pioneers. There is also a bit of controversy in the Free/Open Source world with some preferring the term free to open source. This has however not deterred organizations from leveraging open source development strategically. Open source development may not be practicable in every situation, particularly for routine software development in enterprises, but it definitely has its merits and I’ll be looking at other aspects of open source software in subsequent parts.

OpenOffice Writer, citation & table quirks

I’m two weeks (out of eight) into my internship with Sun Microsystems in Delhi, and have been using OpenOffice almost exclusively to create & edit documents during this period. Initially I had installed version 3.0 & last week upgraded to the latest 3.1 version. Feature wise, OpenOffice seems to be quite a useful alternative to MS Office, though it is not entirely compatible with the Office 2007 formats, particularly pptx.

There have  been a couple of features that I found lacking in the OpenOffice writer. The first was the lack of a proper citation/reference management tool like in Word 2007. The database based feature seemed a bit too complicated. As I was looking around on the OpenOffice wiki, I found a nifty Firefox based utility called Zotero. It allows the collection of reference sources on Firefox & these can later be inserted as references in Writer. It supports a number of citation formats & also allows one to insert a bibliography section that is synced with the main Firefox reference database. There is also a plugin for MS Word in addition to some other word processors. There seems to be one limitation with the reference tool though – it does not support inserting references in tables. Still, it is quite a useful tool to have.

And, talking of tables in OpenOffice Writer, there is a feature turned on by default that seems to be more irritating than handy. This is the auto number formatting in table cells along the lines of a spreadsheet. I found this to be quite a problem when typing in numbers with decimal points (entering “3.0” would get converted to “3”) or date like numbers/phrases that got converted to a different format. This feature while quite handy in a spreadsheet caused me quite a lot of problems initially before I turned it off. Turning it off is quite simple. Just go to Tools->Options-> Writer->Table and uncheck the “Number recognition” feature (I could have probably just unchecked the “Number format recognition”). I did the same under the Writer/Web section too, to be on the safer side.


A pseudo IDE for Google App Engine – Komodo Edit

I signed up last week for the Google App Engine, and tried out the tutorial for creating a guest book. It is a pretty simple tutorial, but one of the things I noticed about the App Engine is that there is no add-on for any IDE/editor at the moment, unlike the Android SDK which has its own eclipse plug-in or even the Web Toolkit which has a utility to generate an eclipse project.

Initially, I tried using Notepad++ which I have installed as my basic text editor, but I didn’t get much support beyond basic syntax highlighting. It does have a built in run command, but is not very configurable. This is when I decided to give Komodo Edit a try (it is open source). It is a lightweight version of the Komodo IDE, but has support for a variety of languages along with a useful set of tools. Incidentally, it is based off the Mozilla code base, and has support for add-ons just like Firefox, Thunderbird and Flock.

You can organise files into projects, which comes in handy for the Google App Engine applications, which is typically composed of a set of files based in a folder. The editor also has some basic syntax checking in addition to syntax highlighting. However, the code intelligence/auto-complete is limited to the base Python installation, and so will not be able to help with the Google App Engine.


In addition to this, the editor also has a customisable run command, which can be used to launch the development server. Shown below is my customised run command which can be used on the main .py file of the application (E.g. form the tutorial), and launches the development server in a new console (set using the “Run in” option). The “Start in” parameter is also important as the server needs to be launched from the parent folder of the folder in which the application is stored, i.e., if the application files are stored in “D:\Dev Stuff\gAppEng\helloworld”, the server needs to be launched from “D:\Dev Stuff\gAppEng”. Here, I have used the “ask” option with a default value for the “start in” location, so that I am prompted for the path at the time of server launch.

Komodo IDE Run config

There are quite a few other tools available in the editor, like file compare, spell checker, templates etc, which I haven’t tried out yet. Now, if I could only think of my own project for the App Engine. Suggestions anyone?

Update: Just noticed that another person has posted instructions for using Komodo Edit as an IDE for Google App Engine (on Linux it seems), including steps for setting up the uploader among others. (via)

eyeOS – a Web Desktop Environment

I came across an interesting software recently – eyeOS, which is meant to provide a desktop like environment on the web. It provides you with an entire desktop like interface on the web with some basic office applications like calendar, calculator etc. In case you want to try it out, you have to create a new account (quite a simple process) on the site, and then log in to try it out. You can also customise the desktop theme and install new applications (not sure what’s available for it though).

I was also checking out the eyeOS site, and it is apparently an open source project. It is also possible to download and install eyeOS on your system. The Windows package comes with its own web server and browser (based on Apache & Firefox respectively), and so you do not require any kind of additional setup. There is also a FreeBSD package and the source available for download. So, if you want to experiment with it, check it out on the eyeOS download page.