Inspired by @marina’s request for a temporal visualization of our forum’s development, @alberto and I developed a nice little idea today. We would like to create a small software to visualize the temporal development of a Discourse online forum in a video format very similar to this – just that this is about the development of the Discourse source code, while we want it for the development of the Discourse topics hosted in a Discourse forum instance:
The software to create this is Gource, an open source tool originally meant to visualize Git repositories. Fortunately it also can read a custom log format.
For Discourse, the custom log file would be a text file with each line containing the following components, delimited by “|
”:
- timestamp
- username
- type of action (Added, Modified, Deleted); the “M” is useful esp. for wikis
- path to the affected resource. Usually this applies to files, but in our case it would be about posts. This is the part we’d have to adapt to Discourse. Our path format could be “
category/subcategory/topic-id/post-id
” or it could even include the full threading information with any depth of nesting, such as “category/subcategory/topic-id/parent-post-id/parent-post-id/post-id
” - color for the affected resource (optional); this could be chosen according to the category color on edgeryders.eu
Example line:
1275543595|matthias|A|earthos/reef/1234/1
So the task is to convert the information from the Discourse database to the above log format. This can be done with any kind of scripting. Some example scripts are here and here – there is no framework to adhere to, and nothing that I found that directly works with Discourse already. So let’s contribute that and have a pretty cool new mode of visualizing our stuff
Of course, we can also create this kind of videos for parts of the Discourse conversation (say, one Discourse category or tag) by adding a command line option to that script. I propose that the script would directly connect to the Discourse database (with a readonly user account) rather than use an API.
Anybody who’d love to take this on? (If not, we might want to let Anu take a stab with a Python or Ruby script. She’s available to work for us again.)