For those coming in late, ShipIt Day is Atlassian’s occasional “open coding” day. Everyone gets to work on whatever pet project they’ve had hanging around in the back of their minds, so long as they can build something to show off to the rest of the team by six o-clock.
Some Confluence features that started off as ShipIt day projects include the dynamic tasklist macro, the flowchart macro, the calendar macro, and last but _definitely_ not least, autosave and automatic edit conflict resolution.
This time around, each team was scheduled on a different day of the week, with Confluence up first. None of the features described below are “ready for prime time” yet, they’re just one-day prototypes. That said, I suspect you’ll see most of them in future releases, in some form or other.
h3. Tom and Dave: In-place Editing
Tom and Dave worked on in-place sectional editing — dividing each page by its major headers, and allowing you to edit any section just by double-clicking on it. This had been attempted on a previous ShipIt day only to be defeated by the complexity of our wiki markup, but this time they used the Rats! parser generator to pre-parse the page, to get a more accurate handle on where each section began and ended.
h3. Tom: 3d Space Visualisation
Not technically a ShipIt Day project, Tom brought this one in from home: it uses Processing and traer.physics to build a 3d representation of the parent/child relations of pages within a Confluence space. (The space in the screenshot is the Confluence 2.0 Documentation).
h3. Mike: Confluence Statistics Gathering
By hooking into Confluence’s event mechanism and throwing the resulting data into Lucene, Mike threw together a really useful usage statistics-gathering package for Confluence. Pass the results through the Confluence charting macro, and you’ve got graphs!
On top of that, the whole thing’s developed entirely as a Confluence plugin. We’re running it on our Extranet now, and as soon as we’re sure that it’s not likely to bring down the whole system, we’ll let you know where you can get it.
h3. Matt: User Time-Zones
Matt worked on a long-open Confluence feature request, to allow each user to see the wiki’s timestamps in their own time zone. For the trivia-inclined, the corresponding enhancement request for JIRA is the oldest still-open JIRA issue.
h3. Charles: Smart List Creator
It’s also pluggable, so plugin developers could potentially add their own criteria: for example if you were writing a page-rating plugin, you could also add a smart list criterion plugin to let users filter pages by their rating.
h3. Chris: Attachment Virus Scanning
Chris added hooks into Confluence to allow the scanning of incoming attachments for viruses. His proof of concept sent each incoming file to ClamAV, and rejected the attachment if it came back as a virus.
In order to accomplish this, he also added a new plugin type to Confluence allowing you to place new interceptors into the XWork stack, with pointcuts to determine which URLs or XWork actions are being intercepted.
h3. Jeremy and Jens: Cocoa Offline Client
Jeremy brought in some expertise from his other job, and with Jens’ assistance started on an offline client for Confluence. They didn’t quite get as far as they hoped during the day, but in the process they did demonstrate how cool CoreData is (and how uncool the Cocoa web services libraries are).
You can read more about it on Jeremy’s blog.