An important lesson in software is to use it for what it does well, and don’t try to force it into areas it isn’t meant for. Blogging has become an important communication tool for many companies, both outside and inside the firewall. Confluence provides decent support for blogging, and a good match for behind-the-firewall internal blogs that need connectivity to core business systems rather than optimised public access. On the other hand, Confluence isn’t as well suited to be a public blog, particularly one that receives a lot of traffic and malicious attention.
At Atlassian, we use Confluence very heavily for internal blogging. Every department, from engineering to sales, uses internal blogs to communicate with the company at large and document internal discussions and announcements. For our external blogs, however, we chose to use Movable Type, a popular and fully-featured blogging software by Six Apart. While clearly a case of the best tool for the job, having two blogging systems can be rather unwieldy, particularly when a rather insightful internal blog post is voted to be promoted to one of the external blogs.
My ShipIt Day project was to create a Confluence plugin that provided a “Publish” button on top of each internal blog post, allowing the author to easily send the post to our external blog system. While not the most complicated ShipIt project, I hope it will be one of the more useful ones by saving us time and ensuring our external blogs are kept up to date.
When the “Publish” button is pressed, this happens:
- The destination blog and internal post id are sent to an action
- The action gets the internal post and renders its contents
- The action also retrieves any post attachments and publishes them as Movable Type resources using their MetaWeblog API
- The rendered post is processed for link rewriting, using the new link URL’s from the newly created Movable Type resources
- The rendered post is sent as a draft to the Movable Type blog, again via their MetaWeblog API
- Finally, the user is redirected to the “Edit Draft” page, so they can tweak the presentation and publish
While this plugin is meant to work with our Movable Type blog, any blogging system that supports the MetaWeblog API should be compatible.
In a nutshell, any pages for configuration. Before this went live, I would expect to see:
- A screen to add external blog servers
- A screen to allow users to map their account to their Movable Type account
- Content massaging to preserve the look and feel from the Confluence post
Within a company, this plugin can enable a very useful publishing workflow that gets other people involved in the blogging process. It lets blog authors construct a post and publish it internally, gathering feedback and making improvements as necessary. Since the internal post is also a wiki, multi-author collaboration now becomes easy and second-nature. Once the decision has been made to push the change public, this plugin makes the publishing step a one-click operation. No more emailing word documents around; no more copy/paste from system to system. Now even blogging can be collaborative.