A year ago, I heard from a colleague about a competition Google was hosting to develop new extensions for the Chrome browser. Google had recently released the API to develop extensions, and they thought the competition might jump-start the process of building up a library of extensions from programmers outside of Google.
What did Publinksky do? Read the Fine Manual.
Some thoughts, a year later.
- It’s very easy to write a browser extension for Chrome. It’s also very easy to write a no-cost, hosted, server-side backend for the extension, assuming you need it. It takes minimal effort to get started. We should all be surprised by this, and by how unsurprised we actually are.
- The Chrome extension APIs appear quite stable. I was able to reinstall the plugin just now, many months (6? 9?) after last testing it, with multiple Chrome updates in between. Nice job.
- The Java server-side libraries have gotten better, easier to use, and slimmer conceptually. It took me almost no time to get a REST interface set up with the Jersey (JAX-RS) library, and making classes persistent was straightforward using annotations and the GAE persistence APIs.
- Google did a good job with the Google App Engine. Our server-side app is still running, 339 days after launch. I haven’t touched it since I last uploaded it. I can log in and see all the usage stats, data, manage versions, and so on, in one place. This is exactly as it should be and that means Google did it right.
- Developing multi-tier applications is not any easier, or much fun. In part this had to do with the fact that we were using essentially a beta release of the Chrome extension support. There’s a lot of starting and restarting, loading and reloading, and deploying and related nonsense associated with writing even a simple distributed application of this kind. The tools make this much easier than in the past, but in many ways it still feels like too much busy work. If I take this tool chain up again I will focus on some yak-shaving and work on preparing the tools to save me some time.