A very interesting page on ammonia-based life. I didn’t realize that ammonia was such a good alternative to water as a basis for biology.
Open Source / Open Standards
Updated: 3 Nov 2009.
This is a list of eight “Personal Finance” (accounting-type) programs that are entirely free, open source and mostly cross-platform. KMyMoney is not cross-platform but in the future it will be. The programs are listed in approximate order of simplicity and features.
Main Links:
Summary
![]() |
![]() |
![]() |
![]() |
![]() |
![]() |
![]() |
![]() |
![]() |
![]() |
![]() |
|
|---|---|---|---|---|---|---|---|---|---|---|---|
| Buddi | ![]() ![]() |
![]() ![]() ![]() ![]() |
Yes | No | No | No | No | No | No | ![]() |
No |
| HomeBank | ![]() ![]() |
![]() ![]() ![]() ![]() |
Yes | Yes | Yes | No | No | No | No | ![]() |
No |
| iFreeBudget | ![]() [3] |
![]() ![]() |
Yes | No | No | No | Basic | No | Yes | ![]() ![]() |
No |
| Grisbi | ![]() ![]() |
![]() ![]() |
Yes | Yes | Yes | Yes | No | No | Yes | ![]() ![]() |
No |
| Money Manager EX | ![]() [4] |
![]() ![]() ![]() |
Yes | Yes | No | No | Basic | OK | Yes | ![]() ![]() ![]() |
No |
| jGnash | ![]() [5] |
![]() ![]() ![]() |
Yes | Poor | No | No | Good | Good | Yes | ![]() ![]() ![]() |
No |
| KMyMoney | [6] |
![]() ![]()
|
Yes | Yes | Yes | Yes | Good | Good | Yes | ![]() ![]() ![]() ![]() |
No |
| GnuCash | ![]() |
![]() ![]() |
Yes | Yes | No | Yes | OK | OK | Yes | ![]() ![]() ![]() ![]() |
Yes |
[1] I only list platforms where the program can be installed by non-technical users.
[2] Multiple currencies means that you can have different accounts in different currencies. Some programs advertise “multiple” currencies and what they mean is that you can pick any currency as long as all your accounts have the same one.
[3] This is a Java program, so in principle it should be possible to run it on a Mac. But the program has not been tested on Mac and personally I could not get it to run on my Intel Mac.
[4] There is an experimental version for Mac.
[5] Runs on PPC Macs, but not on the new Intel Macs unless the user is fairly technical.
[6] When KMyMoney is ported to KDE4 it will run on Windows and possibly Mac. As of Feb 2009 the port to KDE4 has not started.
Buddi
“Buddi is a personal finance and budgeting program, aimed at those who have little or no financial background.”
Buddi may be a good choice for people who simply wish to track their income and expenses. It is very simple and very easy to use. There are only three tabs: My Accounts, My Budget and My Reports. In My Accounts you put your assets (bank accounts, cash) and liabilities (credit card, student loans, mortgage). In My Budget you put income and expenses. In My Reports you see various reports like “show me my income and expenses for last month”.
I got a good impression of Buddi. It doesn’t have any advanced features, but for people who are just starting to track their personal finances it might be a good fit. The only issue I have with it is that it can’t export to QIF. So when you outgrow this package, you’ll have a hard time moving your data to a different application. If you think you might be in this situation, I recommend you look at HomeBank.
Missing features:
- Does not support QIF import.
- Does not support stocks.
- Does not support multiple currencies (all accounts have the same currency).
- Does not have any reports besides budget.
HomeBank
A very small and simple finance package. Suitable for keeping track of your expenses or making a budget. Like most personal finance software, it organizes things into accounts, payees and categories. Features include: QIF import/export, OFX and CVS import, scheduled transactions, simple annual budget and car cost.
If your needs are simple or if you are just starting to track your finances, HomeBank is for you. A very important feature that it has is QIF export. This will allow you to migrate to another application later when your needs change. As you gain experience managing your finances you will gradually outgrow HomeBank and it is important to know that you can migrate.
Missing features:
- Does not support stocks.
- Does not support multiple currencies (all accounts have the same currency).
- Does not have any reports besides budget.
iFreeBudget
The main feature that iFreeBudget provides compared to HomeBank is support for scheduled transactions, some support for investments and a somewhat wider range of reports. In exchange for that you give up QIF import and export as well as some ease of use. However, it does offer OFX import.
Special features: iFreeBudget can download your transactions on-line, directly from your bank. I wish more programs had this feature (btw, I did not test this feature). Another feature is that your account data is encrypted, so you have to enter a password to access it.
I am concerned about the lack of QIF export. If you decide to move to a different package you will have a hard time migrating.
Support for stocks and investments is very basic, but it may be appropriate for some users. iFreeBudget does not actually track money flowing between your bank and your stocks. It simply records the fact that you have certain stocks and gives you the current market value.
The main reason I give it a low score on ease of use is transactions. The wizard is certainly “easy”, but it’s a lot of clicks just to enter your groceries. You can go to File > New > Transaction. The problem here was that iFreeBudget kept saying “Invalid account” but didn’t tell me which account was invalid or why. It took me a while to find the problem.
If you are considering iFreeBudget, I would recommend that you also look at Money Manager EX. It has a similar feature set, somewhat better, and I find it easier to use.
Missing features:
- Does not support QIF import and export.
- Does not support multiple currencies.
- Support for stocks and investments is weak.
- Support for reports is a little weak.
Grisbi
This is still a low-end product. Grisbi supports all the features I listed for HomeBank, plus it supports multiple currencies (go to Edit > Preferences). It also has income/expense reports. Grisbi can import QIF and GnuCash files, and it can export QIF and CSV files.
I was not particularly impressed with Grisbi. It is not a bad program at all, but I felt that jGnash and KMyMoney have an easier user interface even though they have more features. So why would I use Grisbi? Still, I am sure that some people will prefer Grisbi and the program definitely deserves to be mentioned.
Grisbi offers QIF export and that’s important. It means that you have the option of migrating to a different package later when your needs change.
Missing features:
- Does not support stocks.
- Support for multiple currencies is weak (e.g. no price editor).
- Support for reports is weak.
- I don’t like the UI as much as the other programs.
Money Manager EX
This is a nice program, I like it. It has a similar but somewhat better set of features than iFreeBudget and I like the user interface better.
Money Manager EX has only basic support for stocks. It can track what stocks you have, but it does not track money flowing between your bank account and your stocks. MMEX has support for multiple currencies. The system is basic (e.g. there is no “price editor”) but I suspect that it is perfectly adequate for a lot of people. MMEX also has a pretty decent collection of reports (e.g. cash flow forecasting) which should be more than enough for most people.
If you need a program that supports stocks or multiple currencies but you want something simple and basic, you should definitely try Money Manager EX.
MMEX can import QIF files, but it cannot export to QIF. This is my main concern with this program. It may be perfectly suitable for you today, but if your needs change and decide you want a different package, you may have trouble migrating. MMEX does support CSV export and I guess that’s better than nothing, but realistically, that’s not enough to migrate to a different application.
Unique features: MMEX supports encrypting the database with the account data.
Missing features:
- Does not support QIF export.
- Support for multiple currencies is weak.
- Support for stocks and investments is weak.
jGnash
and KMyMoney
These are my favourites. Both programs have a very similar feature set, but very different user interface. IMHO both have a good UI, they are just different. So definitely try both. That said, please note that jGnash has poor QIF support.
Both programs support stocks and investments including stock splits, and both have strong support for multiple currencies. That includes automatic online updates of stock prices and currency exchange rates.
Although these programs have a lot more features than Grisbi, I find the user interface easier to understand. If you are used to thinking in terms of asset and liability “accounts” vs income and expense “categories”, KMyMoney will be more familiar. If you learnt double-entry bookkeeping, either will feel comfortable – both programs include income and expense in the “accounts” section.
Reports: Both have a more complete set of reports than either HomeBank or Grisbi. They include net worth, balance sheet, portfolio, investment performance, etc. KMyMoney has better reports than jGnash. KMyMoney includes more reports (e.g. tax and forecast) and its reports are more flexible (e.g. monthly or yearly net worth, net worth by institution, etc).
Importing data: jGnash can import QIF and OFX. KMyMoney can import QIF and GnuCash. A reader (Ron Price) has reported that jGnash does a poor job at importing QIF files. Ron tested QIF import on several programs on this page and jGnash was the worst. jGnash lost his categories and accounts. If you are migrating from another program, be sure to test.
Exporting data: KMyMoney can export to QIF, but jGnash cannot. This is important. It is hard to migrate away from jGnash because it doesn’t support QIF export. jGnash has a good feature set, but you might want to switch to a different program later, and this is difficult without QIF export.
Other: Both support scheduled transactions and secure file encryption.
Unique features: jGnash can export reports to PDF and it has an interesting client/server architecture. KMyMoney supports VAT, it has better documentation and a much more active community (so it’s easier to get help).
GnuCash
Probably the best known accounting package for Linux. GnuCash is a step up in the complexity/features scale. Besides “personal finance”, it provides small business accounting features like invoicing, billing, accounts payable and accounts receivable. You can setup customers, vendors and employees. I can’t say much about the business features because I don’t use them.
GnuCash supports multiple currencies and stocks, but honestly, jGnash and KMyMoney both handles those better. For this reason, I am planning to migrate from GnuCash to jGnash or KMyMoney.
GnuCash supports QIF, OFX, and HBCI import. It also has the most complete set of reports from any program in this list (cash flow, employee report, etc). It includes a financial calculation (e.g. for annuities or present value calculations).
GnuCash does not support QIF export, bug KMyMoney supports GnuCash import and QIF export, so it’s not a big problem to migrate away from GnuCash. I recently migrated from GnuCash to KMyMoney and I didn’t have any significant problems.
GnuCash doesn’t try to hide the details of double-entry bookkeeping to the same extent that the other programs do. If you have studied accounting, you might like this, but people who never learnt accounting might need some time to get used to thinking of income and expenses as “accounts”. You don’t need to know the difference between debit and credit to use GnuCash.
Other Software
Before we begin, I’d like to suggest other great resources which are not strictly “Personal Finance Applications” but should be very useful to anyone wanting to mange their finances.
- Financial calculators: Auto loan, savings plan, taxes, life insurance, you name it.
- Investor Education Fund: Unbiased finance information for Canadians.
- Spreadsheets: Google Spreadsheets and OpenOffice.org.
Send Your Suggestions
Is there a great program or feature that you think I should cover? Let me know! I do want to focus on free (no cost), cross-platform, open source software with an active community.
- Why free? Because there are many great free tools that people don’t hear about.
- Why open source? Because it’s the easiest way to make sure that the program isn’t cripple-ware, ad-ware or trial-ware.
- Why active community? Because it helps ensure over-all quality, regular updates, documentation and support.
- Why cross platform? Because that way more people can use it, and because it sucks when an application limits your choice of operating system.
The alternate title for this post is “never trust a benchmark you haven’t manipulated yourself”.
Software benchmarks, like statistics, are easy to manipulate to make them say whatever you want. I just stumbled on this blog post showing a simple benchmark where Ruby comes out considerably faster than PHP. Since Ruby is generally considered a “slow” language, this result is interesting. Curious, I copied the program sources and tried it myself. Indeed, the Ruby version was considerably faster than PHP. I really like Ruby, so to me this was an interesting result. But skeptical as I am, I took a closer look.
I perused the source code and noticed a subtle difference between the Ruby and PHP versions. The program is basically a very tight while loop. At the core of the loop the program checks if an array is empty and it does an array shift. In the PHP version, the program counts how many elements there are in the array, and tests if the result is bigger than 0. This is wasteful. The moment you find one element, you know that the array is not empty. There is no need to visit every other element in the array. In contrast, the Ruby version only checks if the array is empty, as it should.
I edited the PHP version to just check if the array is empty, just like the Ruby version. Like magic, the execution time of the PHP version dropped more than half. The PHP version went from being ~70% slower than the Ruby version to being ~17% faster.
This past week I setup a cool dual-boot system on my MacBook so I can boot into both Ubuntu and Mac. I’m a big Ubuntu fan and I was eager to put Ubuntu on my MacBook. Big thanks to the Ubuntu team who made the task easy and wrote excellent instructions.
My laptop has three main partitions: Mac OS, Ubuntu and a shared home partition that I use on both Ubuntu and OS X. So I share all my files between Ubuntu and OS X. The home partition is formatted with Apple’s HFS+ file system with journaling disabled. That is the only Unix-type file system that Ubuntu and OS X both support well.
I also setup Thunderbird and Firefox to use the same profiles directory in both. So I can go to OS X, browse the web, make some bookmarks, reboot to Ubuntu and find the exact same bookmarks, the same tabs, the same browsing history that I left with OS X. It’s quite amazing actually. My Firefox settings, my extensions, my language packs… everything works the same between Ubuntu and OS X. Ditto for Thunderbird. Kudos to the Mozilla team.
Recently Sigrid and I bought an external hard disk. It is connected to my computer which runs an SSH server. Combined with a password-less SSH key, Sigrid can access the external disk from her Mandriva box just as if it was a traditional “shared folder”. On my end, I use symlinks to hide the different mount points for Ubuntu and OS X. Sigrid can connect to my computer and find the external disk in exactly the same place whether I am currently on Ubuntu or OS X.
iPlayer is a BBC service that allows you to watch TV shows several days after they’ve aired. However, it has been heavily criticised for being tied to Windows and Internet Explorer. In particular since the BBC is a government agency, it has a mandate to be vendor neutral.
Recently BBC announced a version of iPlayer for Mac and Linux (only for the UK). This is iPlayer Desktop and it uses Adobe AIR technology. Personally, I like Adobe AIR very much and I am happy with the news.
Parts of Adobe AIR are proprietary (the runtime), but most of it is open source (WebKit, the VM, SQLite). I would love to see an open source alternative (I have compared AIR with Prism and XULRunner).
This week I have been looking at revision control systems. I currently use Darcs and I am very happy with it, but I’m also interested in Monotone because it has an integrity assurance that I like (backed by cryptographic signatures). So I set out to choose a revicion control system. My basic criteria are simple:
- It has to be open source.
- It has to be easy to understand, and easy to use.
The latter requirement automatically limits the search to distributed revision control systems. I have no desire to setup a CVS or Subversion sever (if my web host even allows it). I don’t want to depend on a network connection to be able to commit. I want easy branches, so if I’m going to work on a large new feature I can develop it in a new branch without affecting my main work.
I searched a little and a lot of people say that Git is very complicated and poorly documented. So I won’t bother with Git either. This leaves four options: Darcs, Monotone, Mercurial and Bazaar.
- Darcs
-
Darcs is my current RCS and it is very good. It really stands out for how well it can handle patches. With Darcs you can apply make change A, then B, then C, then D, then E, and then you decide that you don’t like B after all. You can remove B without affecting C,D and E. I don’t think any other RCS can do that.
I actually use this feature often. I might be working on a Feature A and then an issue comes up (Issue B) that requires immediate attention. I can commit my incomplete work for Feature A, work on B, commit B, and then uncommit A and continue working as I was before.
Another feature of Darcs is that when you commit you can select individual changes inside a given file that you want to commit. In other words, if you change two lines in the same file, you can tell darcs to include the first line in the changeset but not the second. AFAIK Darcs is the only revision control system that has this feature.
- Monotone
-
Monotone looks very easy to use. It doesn’t have Darcs’ brilliant patch management (no one does) but it has very easy branches and easy merging between branches. You can even have two separate sets of changes on the same branch and merge them later. This is great for simple changes. It works like this:
- I’m working on feature A and haven’t committed yet.
- A customer reports a bug B that’s easy to fix.
- I make a new directory called BugB/ and I checkout the branch.
- I fix bug B, commit and upload the fix to the server.
- I can delete the directory BugB/ because the changes are stored in the Monotone database.
- When I finish feature A I commit and then run ‘mtn merge’. Now this directory has both feature A and bugfix B.
What makes Monotone stand out is that it can assure data integrity. It can ensure that you files have not been corrupted or tampered. Every change is hashed with SHA1 and digitally signed with an RSA key. And Mtn makes this process very easy. When you setup Mtn you generate a key (which takes 2 seconds) and from then on all your changes are digitally signed without your having to think about it.
- Mercurial
-
I am less familiar with Mercurial. A lot of major projects use it (e.g. Mozilla) so it must be good. Like Monotone, changesets are hashed with SHA1, but Mercurial doesn’t seem to use digital signatures like Monotone does. So, while Mercurial can give you assurance against accidental corruption, it may not protect as well against intentional tampering.
One feature I really like about Mercurial is the ability to push changes to a server through SSH without installing anything else on the server. This makes it easier to keep the server updated and be confident that you didn’t forget to upload any files that have changed. Mercurial also ensures that no file is partially updated. Either the entire changeset is applied or none of it is. So the server won’t be left in an inconsistent state.
hg push ssh://daniel@foo.com/public_html/main
Monotone can do something similar, but it requires that you run monotone on the remote server (not as a server process though) and not all web hosts allow that. Darcs also has this feature, and like Mercurial, it does not require running Darcs on the server.
- Bazaar
- Bazaar also looks very easy to use, but I know even less about it than I do about Mercurial. But as far as I can tell, it has broadly the same features and abiliies. I believe that Mozilla chose Mercurial over Bazaar because Mercurial was faster.
Lately I have become interested in Minix 3. For anyone who hasn’t heard of Minix, here is some brief background.
Background
Minix (mini-Unix) is a Unix clone designed to be simple and easy to understand. A computers science professor (Andrew S. Tanenbaum) wrote Minix 1 in 1987 to teach his operating systems class. He also wrote a popular book on operating system design. The book is unique in that it shows you the source code of a real operating system (Minix). It comes with a Minix CD and for homework you get to rewrite parts of Minix.
When Linus Torvalds was a student he studied from this book. Minix is what inspired Linus to write Linux. That said, there is on Minix source in Linux.
Minix 3
The last update of the book and Minix was 2006. The new version of Minix (Minix 3) is still meant to be simple but it adds the new goal of being a highly-reliable operating system for real world use. Minix 3 is open source, released under a BSD-type license.
How do you make a highly-reliable operating system? You do this mostly by making the kernel as small as possible. Move everything you can out of the kernel and turn it into a regular user program. Less code, fewer bugs. For example, all the drivers (like the one that runs the hard drive or the mouse) are user-level programs in Minix 3. For comparison, while Linux has 2.5 million lines of code, Minix 3 has only 3,800.
Did you know that the #1 reason computers crash is drivers? This applies to both Linux and Windows. Drivers are very difficult to write, they make up about 70% of the operating system [1], and if they fail they take down the entire system. Worse yet, device drivers have error rates three to seven times higher than ordinary code [2]. Not good.
In Minix, device drivers are user-mode programs, similar to Firefox. If Firefox dies, it is annoying, but it doesn’t bring down the entire system. In Minix 3, when a device driver dies, the system re-starts the driver automatically. The typical user may not even notice that anything went wrong. If the audio driver dies, the sound settings might resent, but that’s as far as it goes. Of course, the device driver bugs have not suddenly disappeared, but we have made them much less harmful. By moving device drivers out of the kernel, Minix 3 removes 90% of the bugs that could break the system [3].
Are microkernels slow?
Most people interested in the subject will say that the problem with microkernels is that they are slow. Indeed, first-generation kernels like the Mach kernel (which runs Mac OS X) are slow. But research in the 90s showed that the speed problems were not a problem with microkerels in general, but simply bad implementation of Mach.
To prove this, the German computer scietist Jochen Liedtke developed a new microkernel called L4 which is actually quite fast (20 times faster than Mach). So much so, that in general Linux running on top of L4 is only 6-7% slower than Linux running on machine hardware and in some benchmarks it was faster than native Linux [4]. Keep in mind that Linux was not tuned to run fast on L4.
The L4 kernel is primarily a research kernel, but it proves what’s possible. An interesting real-world example is QNX – a commercial Unix-like operating system based on the microkernel design. It is mostly used for embedded systems and it is known for efficiency.
What about Minix 3? Minix 3 learns some of the lessons of L4. Although Minix 3 is new and it has not been optimized as throughly as L4 or QNX, it performs fairly well and it has minimal hardware requirements.
References
[1] Can We Make Operating Systems Reliable and Secure?
[2] A. Chou et al., “An Empirical Study of Operating System Errors,” Proc. 18th ACM Symp. Operating System Principles, ACM Press, 2001, pp. 73-88. (article costs $10)
[3] Assume that device drivers are 70% of the kernel and have 5 times the error rate. 0.7*5 / (0.3 + 0.7*5) = 92%.
In a previous post I said that Mozilla Prism is not an alternative to Adobe AIR. Thinking about it a little bit more, I think XULRunner is a more likely contender against Prism on its own. Like AIR, XULRunner is a tool for developers to use “web technologies” to make desktop applications. So I’ll just go ahead and make a table comparing the two:
| XULRunner | AIR | |
|---|---|---|
| Provider | Mozilla | Adobe |
| License | Open source | Some components are open (the VM, SQLite, WebKit) but the runtime is proprietary. |
| Cross platform | Yes | Yes |
| Stable? | Not yet, it needs work. I’ve had problems with the Mac version. | Linux version is alpha. The others are stable. |
| HTML engine | Gecko – Memory hog |
WebKit – Uses less memory |
| JavaScript engine | SpiderMonkey – Reasonable speed |
Tamarin – Fast (JIT compiler). |
| SpiderMonkey will use Tamarin starting with Firefox 4. | ||
| API | Primarily XUL, JavaScript and XPCOM. You can replace XUL by HTML. I don’t believe that you can use most Ajax toolkits. In any case, the application structure is different enough that porting an existing web application to run on XULRunner would be difficult. I don’t believe that porting web apps is a design goal of XULRunner. | Ajax and Flash. You can probably keep your existing Ajax or Flash application mostly unchanged. If you are using Dojo you need to upgrade to version 1.1.0. AIR does provide an additional API, but you only need it if you want to use functionality that Ajax and Flash do not normally have, like accessing the file system. Porting web apps to AIR is definitely a design goal. |
|
Personally I find XPCOM complicated and hard to work with. AIR is much easier. 95% is just doing whatever you’d normally do on your web app. The rest (e.g. read/write files) looks simple to me. Example: Create a “file” object that you can use to read/write files: XPCOM:
var contractId = "@mozilla.org/file/local;1";
var interface = Components.interfaces.nsILocalFile;
var fileClass = Components.classes[contractId];
var file = fileClass.createInstance(interface);
file.initWithPath("/home/daniel/hello.txt");
Adobe AIR: var file = new air.File(); file.nativePath = "/home/daniel/hello.txt"; |
||
| Deployment | The developer must make his own packages and must include XULRunner in the package (the situation might later improve on Linux). Thus, the package size is quite large and you have to maintain multiple packages for each platform you are targeting. | Easy. Adobe AIR takes care of the distribution, and the user only has to download Adobe AIR once. If installing from a web page, Adobe AIR is downloaded at the same time as your application, so the user doesn’t have to go to some other website like with Java. |
| Security | Nothing in particular. No different than downloading any other application from the internet and installing it. | All AIR apps are digitally signed. Though apps can be self-signed. What’s the point of self-signing an app? Well, at a minimum it provides an integrity check. To learn how to self sign packages : go to the manual and select AIR development tools > Creating an AIR application using the command line tools > Creating a self-signed certificate with ADT. |
| Documentation | I’ve had a hard time figuring out XULRunner’s documentation. I had to pull bits and pieces from various places and often had a hard time finding what I needed. | I am very happy with Adobe’s documentation. Though no documentation is every perfect, I think this one is very good. |
| Other features |
- Multithreaded. - Call external libraries. - I believe you have pretty much full access to the computer but I’m not sure. |
- Read/write access to the file system. - Access to the clipboard. - It comes with a database (SQLite) that you can use. - Drag and drop support. - Having Flash available means you can have fancy graphics and multimedia. |
| With AIR you don’t get full access to the computer (e.g. can’t run system libraries) but it has many great features that XULRunner lacks (SQL, easy multimedia, etc). | ||
I’ve seen several blog posts saying that Mozilla Prism is an open source alternative to Adobe AIR, or that the two products do more or less the same thing. Even Michael Chambers said something along those lines in his blog:
So, I guess the thing I found odd was Mozilla appears to be building something very similar to Adobe AIR (which is fine and cool), but somehow it is inherently good when Mozilla does it, and inherently evil when Adobe does it.
But I have to say that Adobe AIR and Prism are definitely not the same thing. Yes, they both can run a web app “outside” the browser. That sounds like it should make them very similar, but it doesn’t:
- Who is it for?
AIR is for developers. It lets you package a web application to deliver it to the user as a stand-alone app. Prism doesn’t.
Prism is for users, and it resembles bookmarks more than anything else. Except that the bookmark is an icon on your computer and when you click on it, the browser doesn’t have any toolbars.
- Functionality:
AIR provides some desktop-like functionality like local file access, SQL storage, etc. In this, it resembles Google Gears a bit. AIR provides some additional tools that Gears lacks.
Prism provides nothing more than what any web browser provides.
As a result, AIR supports web apps that can be used offline and Prism doesn’t.
As I said in my last post, if you were to combine Prism and Gears you could get something a more like an AIR alternative (but with fewer features).
I was recently asked if I could write a Windows GUI program. I replied that it’d be tricky since I don’t have experience making Windows GUIs. This got me thinking: “boy, I really wish I could use JavaScript and HTML for this“.
You know, there are a lot of people who would love to use web technologies to make desktop-type applications (things like being able to save files locally and not requiring a server). There are several efforts in this direction. Sadly, they are largely immature. Let me comment quickly on a few of them:
XULRunner
XULRunner is a runtime that lets you make applications using XUL (so you code the GUI using XML), SVG, XSLT and you can use the Gecko HTML rendering engine. I tried it last year to make an OpenDocument Viewer, but that didn’t go well. The technology is interesting, but it has some major bugs.
Mozilla Prism
Mozilla calls it a “Site-Specific Browser”. Imagine a browser that has no location bar, no navigation buttons, no tabs, no menus, no nothing. When you start it, it always goes to the same web page. If that page is Gmail, you can pretend that Gmail is a desktop app.
Personally I find Prism boring, but I introduce it because I’ll talk about it later.
Google Gears
Google Gears is very cool. It is a web browser plugin that lets you store files locally (HTML, JS, images) and gives you a local SQL database. For example, there is a Gears version of Google Docs, so you can go on an airplane and use Google Docs just as if it were a desktop app. The only thing is that it’s inside a web browser, so it doesn’t feel like a desktop app.
Adobe AIR
From my point of view (and limited knowledge) this looks like the most advanced platform. It gives you a local store and database like Google Gears, you program in ECMAScript, and it gives you an HTML rendering engine like XULRunner or Prism. Indeed, it seems to have many features that none of the others have.
The problem with Adobe AIR? Well, it’s not open source, and I would really like to only use open source tools. But from what I can see, Adobe AIR appears to be just better.
Google Gears + Mozilla Prism?
This takes me to the real point that I wanted to make in this post: What if we combine Google Gears and Mozilla Prism? Gears gives us a local store for files and a database. Prism puts it all inside a single window with its own little icon. The result? Something that feels a lot more like a desktop application and is a more even match against Adobe AIR.
Now, there’s much more to Adobe AIR than just Gears + Prism. AIR provides PDF rendering, Flash output, zip file support, clipboard access, digitally signed applications, etc. But perhaps marrying Gears and Prism might be a step toward competing with AIR.
![Platforms [1]](/_2009/img/text-platforms.png)















