Features and Technologies

\todo: command line use case (ex:create todo item -> login vs. non-login actions)

The technologies usually involved in information distribution are

  • source repository browser (text, history, etc.)

  • downloadable nightly builds as packages

  • online postings (wiki, blog, etc.)

  • mechanically generated reports (build, tests, etc.)

  • tracking contributions (hour logs, bugs, etc.)

  • notification mechanisms (rss, e-mails, etc.)

  • search engine

To distribute information efficiently, the support technologies should have the following features

  • Single sign-on

  • Consistent interface across functionalities

  • One-click addition of contributors

  • Automated integration of mechanically generated reports

  • Mechanically generated reports through intelligent data mining (ex. graphs with number of commits per days vs. unit tests passing)

  • Search engine through all postings, code, wiki, etc. With an efficient search engine, it could go as far as marking documents with special todo tags instead of relying on a bug tracking system.

  • Links between source code and documentation files. That is a url in a source comment should be traversable and documentation files could have url to source code files.

  • Collaborative drawing whiteboard

  • Import/export of documents from/to standard formats (.sxc, .pdf, etc.)

  • Context sensitive integrated "educational notes" on how to use the information distribution system.

HTML remains central for presentation of a web interface and PDF remains central for printed documentation. As a result, content is usually stored in a server repository as a presentation independent file which is processed by appropriate transformation tools on request.

DocBook is a popular format to store documentation content. When the documentation is embed into source code comments, tools such as dbdoclet can be used to extract it into a docbook document.

The XSL language and XSL processors (ex. Xalan) are typically used to transform XML documents in general. DocBook documents can be turned into either HTML or PDF through XSL based docbook tools. Using directly an XML parser (ex. RapidXML), PDF C++ libraries (ex. JagPDF), custom tools can also be implemented to transform content documents. The result can be served directly to the client or some sort of caching framework (ex. Murka, Apache AxKit) can be used to handle requests more efficiently.

When presented as a website, the resulting HTML pages will further be customized with a specific company look and feel through CSS style-sheets.

Web 2.0 technologies enable contributors to use a web browser as a text editor to create and modify remote files stored on a server. Heavy client-side Javascript are involved to implement full editors (ex. Freedom editor, TinyMCE) and other UI interactions such as Javascript Drag-n-Drop (second example). HTTP extension protocols such as WebDAV, a "Web-based Distributed Authoring and Versioning", allow contributors to collaboratively edit and manage files on remote web servers and RSS is a popular standard for notification of website updates.

Tracking contributions

Time tracking has never been a precise nor relevant way to measure contributions but it is the most accepted way of billing for services. Fortylines as a service and sweat equity company needs to track each contributor's hours in order to generate invoices and pay its employees. In order to facilitate tracking, a line formatted hours text file is present in each contributor's project. This file can be edited manually or through the following commands.



# start working on a project
semilla -m 'project' work
# stop working on a project
semilla rest
    

At the end of each month, invoices and pay stubs will be automatically generated from contributor's hours files checked in the server's repository.

\todo Complete infrastructure diagram

\todo Session Management

  • token
  • reconnect (state-less)
  • reconnect: email, http, post, get

\todo Account Management

  • create process (email verification)
  • delete
  • login

\todo Payment processing