a big polarbear, our mascot


Helps Users Gain Efficiency

Welcome to the web documentation for PUM-Group 13.

The Sharpster vision

The main objective of Sharpster is to facilitate software development among geographically spread developers. The Sharpster users should be able to share information, such as source code or comments, among them. The Sharpster vision is to provide users with a complete group communication tool. Information such as reference documentation, e-mail lists and error handling modules, should be automatically generated by the tool. Even a graphical support for manual generation of information to share should be available. A tool for version control of files should also be included in Sharpster.

Sharpster should be implemented using a peer-to-peer communication strategy, in other words, there should be no centralized server.

One of the advantages of Sharpster is the great precision in which users can share filed information. The sharing could be limited to parts of files, single files or directories. Different users can be given access to different parts of the same file. Even sharing of different versions of the same file can be defined.

A possible feature of the system is to group several peers of the network together and let them be collectively responsible for the managing and sharing of their files. Another part of the Sharpster vision is to enable search for certain topics. If the user is interested in a topic he can ask Sharpster to search the network for files treating this topic.

For a more detailed description of the Sharpster vision, please refer to the Requirements specification.

About the web documentation

The documentation for the Sharpster project has been written using a tool called FrameMaker. To be able to maintain an up-to-date version of our documents without extra burden on the creators of the documents, we had to find a way to generate HTML documents directly from the FrameMaker documents. The easiest route would have been to directly save the documents as HTML from within FrameMaker, however the output is sometimes not standards compliant, nor very easy to postprocess. Instead we chose to generate XML from the FrameMaker documents, and from there process the documents into the HTML documents you see here. The advantage of this is of course the greater control of the output that you have through the extra postprocessing of the XML and the disadvantage is that you have to write the tools to do it yourself.

Since Sharpster is implemented in Java, we have chosen to use the excellent Javadoc tool to generate documentation for the implementation. To make it easy for the developers to update this part of the documentation the Javadoc generation is done through the makefile of the implementation.

How does it work

What we did was to write an XSL template, which matches the tags of the XML document to the corresponding HTML tags. This worked fine in that it allowed us greater control over the document than pure HTML export from FrameMaker. However, since we wanted to split up the document a little more, with a separate frame for the table of contents, we wrote two separate XSL templates. Also, since it is quite hard to count things in XSL, we wrote a simple perl script that postprocess the documents, and adds the correct header numbers in the documents. To make it easier for the creators to update the documents we wrapped all the commands, that have to be done each time we update the HTML, in a small script called "generate".


To sum up, this solution makes it possible to maintain documents from a common tool, FrameMaker, and to automatically generate HTML documents from those with as little manual intervention as possible. It removes the needs for individual group members to know about HTML and all we need to do to update the HTML of a document is to save the updated FrameMaker document in a directory as XML and run the command "generate <xml-file> <path to results>".


If this sounds interesting you can download the templates and scripts we wrote by clicking here.

Valid HTML 4.01! Valid CSS!