Writing an app to write stuff together

Posted on November 15, 2010


Inspired by my own needs for collaborative and Wiki-style document building and Scrivener and  Storymill I have added another pet project to my list: to build a collaborative tool for offline and shared content-creation and content management. It is a nice step back to what I have been doing and building in the late 1990s and early 2000s and a nice step forward on the tools that I use now and still feel “not there yet”.

The nuts and bolts – a list of stuff I might use

  1. Java – although not a big fan of the language, it is supported on Mac OS, Windows and Ubuntu and allows me to build the underlying app doing:
    1. Database actions
    2. Uploads and synchronizations with online resources
    3. Presenting the presentation layer (which will be in HTML and Flash)
    4. Real time communication to others using Sockets and WebSockets
  2. HTML and presenting the content, options to consider:
    1. Rendering HTML: jxBrowser – a plugin for Java: “Starting from version 2.0, the library allows integration of Microsoft Internet Explorer, Apple Safari (WebKit) and Mozilla Firefox (Gecko) engines for rendering HTML web pages, thus ensuring compliance with many Internet standards (HTML 4, CSS, XML, JavaScript, Adobe Flash, and others).” and “Full DOM access”.
    2. Editing HTML in a (web based) HTML WYSIWYG editor like the one form InnovaStudio, Asbru or similar ones
    3. Rendering the navigation area – as HTML or plugins in HTML can do it, why not use it? Options considered are:
      1. Flash drag & drop
      2. HTML drag & drop
  3. Database – as it has to be complient to all platforms and open enough for people to be able to look inside and do their own magic with it, I will use a cross-plaform DBE, like Daffodil or any JDBC complient database.
  4. WebSockets – as collaborative work also include possible overlaps in “working on chapter 5” Websockets help to do real-time notification and requests to the team including:
    1. Who is working on..?
    2. I am working on..
    3. Updates have been made on..

What I do

I code, I write, I blog. I have an eBook reader. I work in teams. I write design documents and reverse-engineer code to document in these design documents. I use SVN to share my code with others in the project. I do stuff and need to create check-lists to assure and double-check I have done them. I use Word to write most designs and mark items from requirement documents as “work in progress” “not done” and “done”. I use Enterprise Architect to reverse-engineer code.

I wrote DocumentShare just before Google Docs was introduced which offered you to overlay documents and use the design as the project outline. I wrote a simple reverse-engeneering tool mapping ActionScript 1 code and allowing you to follow relationships between code-snippets using the method calls and “#Include” information in your code.

What I need

I need software that allow me to:

  1. Create loose notes I can structure later
  2. Write and structure documents
  3. Work together on the same topic, document and project
  4. Add extra layers of data on top of it:
    1. Feedback from other team members
    2. Feedback from the client
    3. To-do items and done-items
    4. Notes to myself
  5. Overlay documents and “chapters” in a “vertical stack” so that if one document talks about the global design, the second offers you a detailed insight in one topic AND links to related chapters in other documents offering you supplemental views on the same topic.
  6. Create visual maps and time-lines showing when what will be applied (eiter in story-writing or in projects)
  7. Reverse-engineer structures like application-code and map those to the documentation (to requirements and diagrams)
  8. Share these documents to team-members like SVN allows you to do
  9. Version control individual chapters
  10. Merge different versions (from different authors)
  11. Publish it to
    1. The web
    2. Blogs
    3. ePub documents
    4. Word-documents

What exists

What exists is very scattered, limited and sometimes with a very steep learning curve (SVN) from my point of view. I want it all in one. I want it simple. I want it to be useful for others.


I will be moving to Ubuntu in 2011, very likely. Being fed up with Mac OS and not feeling like going back to Windows. What Ubuntu lacks are the tools I am using.

Parts and steps

  1. The text editor – Uses HTML to markup the text and uses an existing WYSIWYG HTML editor.
    1. Embeds graphics and charts either as SVG or PNG / JPG / GIF
    2. Treats and stores each chapter as a separate document that can be versioned and edited by others
    3. Can include tags to relate to other documents and generate “hooks” like “to do” items
    4. Will be an existing Open Source solution
  2. The different data layers – can be set for each document and:
    1. Be user defined (“document”, “personal notes”, “remarks from team”, “feedback from client”, “todo”)
    2. Used to publish specific documents based on specific data layers, containing specific content
    3. Shared to and shielded from other users via the “sharing” settings
  3. The Database – will be an open source / popular in open source Relational Database
    1. With the possibilities of:
      1. Primary key / foreign key links
      2. Constrains between tables
    2. And store:
      1. The location of the published content on the hard-drive
      2. The content itself
      3. Versions of the content
  4. The content
    1. Can be shared with one or many other users
    2. Will be edited offline
    3. Will be stored locally
    4. Can be uploaded to any location of choice online
    5. Will be injected into online databases using Port 80 and HTTP-POST.
    6. Can be “reverse engineered” from existing documents, including Word
    7. Can be exported to ePub, Word and published online
  5. The workflow
    1. To do lists generated form the content and linked to that content
    2. Notes, remarks and feedback produced beforehand, linked via visualizations and linked to chapters

Nice to haves

  1. Styling and CSS – to make proper styling and make your work look good
Posted in: Uncategorized