LiquidPub Development Guidelines
LiquidPub Platform Development Guidelines is a collection of suggested practices, recommendations, and social conventions regarding software development for the LiquidPub project. Here we try to explain briefly why people should consider becoming involved in the project and how they could, if they decide to join us. We also give technical details for collaborating and illustrate project's social conventions.
Conventions used in this documents
Monospaced text (like this one) denotes code excerpts or command line instructions.
Yellow-highlighted text (like this one) indicates unpolished parts of document, still lacking clearness, completeness, or both.
Intended audience for this document
This document's primary goal is to inform people wishing to actively collaborate to the project development process; therefore, it is addressed to software developers with experience in coding complex, modular, and innovative projects. LiquidPub Platform is an open source project, and, as with other open source projects, the ability to interact responsibly and productively with other developers and project leaders is essential.
Table of Contents
- LiquidPub Development Guidelines
- Abstract
- Table of Contents
- Introduction
- Social infrastructure
- Technical infrastructure
- Testing
- Bug tracking
- Versioning
- Code style and code documentation conventions
- Internationalization and localization (i18n and l10n)
- Licensing
- References and credits
- Database Guidelines
Introduction
The LiquidPub Platform is an open source project which is being developed as a part of the Liquid Publication Project, a European Union funded research project. The goal of the Project is to change the way scientific knowledge is produced, disseminated, evaluated, and consumed.We aim to develop a web application platform which will support this goal. This platform will:
- allow scientists to freely share scientific content without having to first publish it through traditional peer-review system.
- allow other colleagues, or even general public, to see shared content, annotate it, comment it and even edit it.
- distinguish among various contributions, by associating author and timestamp information to each modification, thus mitigating the problems of attributions and/or "cloning" that trouble scientific community today.
- allow
scientist to interact with each other in a "social network"-like
environment, thus enabling informal communication among scientists by
means of commonly used "social" tools like forums, IMS, blogs. We plan
also that our system should be able to integrate with existing networks
to take advantage of their features and also their large user base,
instead of trying to substitute them.
- make complex research project management easier, by providing tools for p.m. common tasks (scheduling, resources allocation, ...) and also for science-related ones (deliverables, reviews, ...).
- make chairing conferences easier, by automating most of related tasks and integrating well with science documents handling.
- make publishing scientific journals process easier, by automating publishing workflow (collecting papers, having them reviewed for the time due, publish the journal) as much as possible.
Social infrastructure
The LiquidPub Project development leadership is owned by LiquidPub consortium partners: the last word about changes on the nature and scope of the project code base as a whole belongs ultimately to them. For ease of development and management, code has been split among many project modules, each one having one module manager, who's appointed with the task of leading software development for her/his modules as well as coordinating with other modules managers during the integration process.
Ways to collaborate
As stated http://project.liquidpub.org/developers-1, there are (at least) three means for the willing ones to help improving our project:
- Signal a bug or submit a new feature request: this has to be done through our public issue tracker. Please note that registration is not necessary to add new tickets or see existing ones, albeit registered developers are given more access rights than anonymous users (they can take charge of a bug correction/new feature implementation request, edit it, delete it, mark it as "done", and also update issue tracker's internal wiki with project development-related information).
- Taking charge of fixing a certain bug and/or of adding a new features, thereby developing a code patch: you can subsequently send your patch to our patch manager who will choose whether to include it to our codebase. Patch managers take decisions basing on basically two factors, that the code must meet project quality standards by respecting project guidelines (that is, the document you are reading) and if the new features or the changes introduced are oriented, to a significant extend, toward fulfilling main project goals (essentially, if they are of some interest for us).
- Write fixes / new code directly into the project code base by accessing its repository; however, in order to do that you need to get commit access authorization.
However, you should not feel limited by this simple categorization of ways to collaborate. If you feel you have something to contribute, please feel free discuss your ideas with us.
Communication
Open source projects, and LiquidPub is no exception, revolve around the concept of collaborative interaction among project members. To encourage internal and external project interaction, we have set up several communication tools.- The Project wiki is the place were we will publish development-related documents of general interest (for example: diagrams, analysis, and descriptions).
- A Public project forum, where people can exchange opinions about project development and project usage. We will look forward to having a large user community who are likely both to need guidance in using our tools and can provide feedback on usability.
- Project mailing lists: we have an announce mailing list for the purpose of broadcasting general interest announcement to everyone, and a dev mailing list for discussion concerning the code development issues. Users are invited to subscribe to the users mailing list to post and read discussion among LiquidPub users.
In the future we intend to provide full support for the user community in resolving issues and setting direction for the LiquidPub Platform. One example might be the situation where there's no consensus about a topic and the matter that needs to be settled. A vote among project committers may be issued. The voting procedure could take place through the developers mailing list loosely based on this description.
Project documentation
Project documentation must follow in general the same writing and formatting style as this document.Technical infrastructure
Since the project is still in its early stage, out technical infrastructure is simple. It consists of a publicly accessible code repository and scripts for building the platform.
Code repository
Code repository for the project is located at https://dev.liquidpub.org/svn/liquidpub. The repository is managed by the Subversion revision control system (see http://subversion.tigris.org/ for further details). In principle any compatible client should allow you to read and update the repository code provided you have obtained commit access.Should your subversion client have problems recognizing our server SSL certificate (mostly because its trusted CAs list doesn't include ours), we provide some information to help you verify the certificate:
Hostname: dev.liquidpub.org Issuer: 07969287, http://certificates.godaddy.com/repository, GoDaddy.com, Inc., Scottsdale, Arizona, US Fingerprint: 8a:8c:65:a0:0c:1e:c2:71:d2:e8:39:c5:0b:59:f0:51:0d:e8:47:15
Builds
If you prefer to download compiled packages (binary distributions), you can download the latest stable release or unstable/beta releases from our build web site. Binary releases are available as a gzip'd tar archive (*.tar.gz) for *NIX systems, or as a Zip archive (*.zip) for MS Windows systems. File digests and signatures are also available. Please take the time to validate the downloaded files.Testing
See instructions at http://wiki.liquidpub.org/mediawiki/index.php/Testing.Bug tracking
See instructions at http://wiki.liquidpub.org/mediawiki/index.php/Reporting_Bugs.Versioning
LiquidPub project version numbering guidelines follows very closely those of the Subversion project, as described in http://subversion.tigris.org/hacking.html. Each sub-project inside the main project may have its own exceptions to the above versioning rules. However, we expect these exceptions to be of little importance.Code style and code documentation conventions
For Java coding style we refer to Java language coding standards presented in the Java Language Specification from Sun Microsystems, Inc. and to Code Conventions for the Java Programming Language. Code API documentation will be auto-generated by means of the well-known javadoc utility that generates browsable help pages out of code structure and comments. This also implies code comments must meet minimum standards of meaningfulness and correctness so that generated javadocs become the reference for further code reuse and/or extension. Additional documentation that records the design goals, requirements, and considerations will usually be required. Documentation of this nature will be kept in the developers section of the wiki.
Internationalization and localization (i18n and l10n)
Code comments, documentation and the application interface are to be written in English to ensure they are accessible worldwide. We are concentrating on creating a functional, reliable, and acceptable performing application. Therefore, no special effort will be dedicated to languages other than English, at this time. We plan to leave the door open for future development so that it will be possible to handle i18n at a later time.Licensing
Our code will be distributed together with a special license allowing people to use the application, share it, make their modification and reuse them anywhere they like: this is likely to be a special version of a well-known Open Source License.
Code ownership will be retained by the LiquidPub project consortium, even after project official end.
References and credits
This document owes much to Subversion development guideline and Apache Software Foundation documentation, which are also referenced through it, either directly or indirectly.
Database Guidelines
For the Database Guidelines please visit http://wiki.liquidpub.org/mediawiki/index.php/Database_Guidelines.


