Blogging on App Engine, part 10: Recap

Posted by Nick Johnson | Filed under coding, app-engine, tech, bloggart

This is part of a series of articles on writing a blogging system on App Engine. An overview of what we're building is here.

Over the last 9 posts, we've covered building a fully functional blogging system for App Engine from scratch, and I've even migrated this blog to it. In the process, we've covered many important components of App Engine, including the new deferred library (and through it, Task Queues), important design principles, such as pre-generation of content, and interesting technologies such as PubSubHubbub, CSEs, Disqus, and sitemaps.

There's also been significant community involvement, for which I am very grateful. Amongst the contributors were:

Moraes, who ported bloggart to werkzeug, calling it bloggartzeug

Sylvain, who ported bloggart to tornado, calling it bloggartornado

andialbrecht, who contributed - and continues to contribute - enhancements and bugfixes for bloggart

Everyone who contributed a name suggestion on the first post, and everyone who has provided feedback during the series

Everyone who filed bug reports and feature requests in the issue tracker

To give some sort of objective assessment of how well Bloggart measures up, we need to compare it to our original goals, outlined in the very first post:

Simple authoring. Achieved. With andialbrecht's recent contribution of support for several additional markup languages, including plain text, ReStructuredText, Markdown and Textile, users can now write in whatever format they prefer. Good isolation of code and markup. Mostly achieved Sylvain has pointed out that to some degree the use of Djangoforms runs counter to this, so it can still use a little work. RSS and Atom support. This should go without saying, these days. Achieved. We only implemented Atom support, but since everything supports both, these days, I still count this as a success. PubSubHubbub support. Achieved. Sitemap support. Achieved. Tagging, and filtering based on tag. Achieved. This could still use some enhancement, though. Easily support new output formats. Achieved with the use of our generator pattern. Extensible. Achieved, as evidenced by the volume of contributions from readers! Easy import of posts from other blogging systems. Achieved, though we could have spent more time on it. Multiple author support. Not achieved - but definitely on the todo list! Scheduled posts. Not achieved, though basic support for draft posts is available. Also on the todo list. Fast. Really, really fast. Achieved! With typical rendering times sub 50 milliseconds in production, and cold-starts typically below 500ms, we knocked this one out of the park. This could be improved still further with a little care as to what the static module imports.

Where to from here, you may ask? At this point, I believe I've extracted most of the explanatory value from the series. There are still features to be implemented, but many of them make for dull writing and boring reading. Scheduled posts and multiple author support may warrant an article of their own in the future, but for now we're going to take a break from blogging about Bloggart.

This isn't it for Bloggart itself, though. There's nearly 20 issues open in the issue tracker, and since they're mostly feature requests, I consider that a victory. Development - both by myself and by other contributors - will doubtlessly continue, and in the near future I hope we can present the App Engine community with a 1.0 release, ready for deployment by people who don't care to hack on it to get it working!

In the meantime, contributions - feature suggestions, bug reports, and actual code - are more than welcome from all of you. Let me know what you think, and how things could be improved, in the comments, and keep filling out bug reports and sending in patches!

Once again, I'd like to express my gratitude to everyone who's contributed to this series, in ways large and small, and to everyone who's read and commented on it.

In the next post we'll tackle... well, you'll have to wait and see.

Edit: To my shame, I mis-measured the rendering and startup times of Bloggart. I've updated the timings in the list above. The new ones aren't _quite_ as impressive, but they're still good.

Disqus