You are here

Collaborative LaTeX System

Project ID: 
Current stage: 

Description: The Collaborative LaTeX system allows end users to create and manage their
own subversion repositories for LaTeX documents (primarily ACLs) with support
for external collaborators (via iFriend). The backend manages the LaTeX build
process, also creating change documents and can mark up merge conflicts.
Currently a prototype service this project is to (re)develop the existing prototype service into a full production service.

Deliverables: A production service with full administration documentation and tested recovery procedures.


Customer: CSTR/HCRC (Steve Renals, Simon King & Jean Carletta)

Case statement: The existing service at has been working very well for over six months - a number of large collaborative documents have been developed using it. However more people have requested accounts, users in other institutes have expressed interest in it and existing users now rely on it leading up to grant submission deadlines so it is no longer practical to maintain it as a prototype service. While the existing service is stable and backed up and the structural design meets user requirements the client and back end code was quickly written to prove the design rather than to meet quality coding standards and needs to be revisited. The backups are also currently only done daily using existing mirroring technology whereas it would be better to implement an svnsync technology to live sync repository commits as they happen (on a large collaborative work there could be many changes each day and recovery to the previous days state would be unsatisfactory, particularly when there are deadlines to be met). There is currently no technical documentation on the design and administration. Loose recovery procedures have been tested but need to be more fully documented. While almost everything is contained in LCFG and RPM, the base initial authorization is not, and needs to be LCFGified to allow support to add/remove accounts.



Timescales: To happen over the next six months.

Priority: Medium - existing service is working fine.

Time: 4 FTE weeks.



  • Acquire and move onto better hardware.
  • Implement an svnsync backup mechanism.
  • Document design and do a technical presentation.
  • Document administrative procedures for support.
  • LCFGify basic authorization for support.
  • Re-design and re-code client command script.
  • Re-design and re-code backend scripts (possibly using a central daemon).
  • Re-visit repository hierarchy design (now we have a lot more ...)
  • Address other minor outstanding bugs/features on FAQ and TODO lists

Resources: Hardware - currently runs on an old desktop with local non-RAID disk for storage, ideally roll down a newer rack based server with RAID.

Plan: See proposal for list of required work.


Dependencies: Uses LCFG "subversion-server.h", "apacheconf-2.h", "x509-client.h", "apacheconf-ssl.h", "apacheconf-cosign.h", "apacheconf-krb5.h", "rsync.h", "localaccounts.h" and "ipfilter.h" headers - changes to these may break the service.

Risks: Current code base is in Python and Bash. Python preferred by existing end-users. Limited Python experience across CO community (although beneficial to gain some).

Existing design may not scale.


Proposed date Achieved date Name Description
2009-04-15 Hardware Acquire and move onto better hardware, in reality onto a virtual server. Assumes server hardware will be available in good time to meet this milestone (also to coincide with move out of AT).
2009-05-30 Backup Implement an svnsync backup/redundancy mechanism. Serving two purposes - backup to last transaction during the day and a way to migrate between virtual servers to provide redundancy in the event of hardware failure.
2009-04-30 Tutorial Add a "getting started" guide primarily aimed at external users to supplement the existing documentation.
2009-04-30 Op Docs Document system operationally, including upgrades, migration, disaster recovery, etc.
2009-05-08 2009-04-30 Authorization Convert basic authorization to use LCFG and roles/capabilities.
2009-04-30 Support Docs Document account creation process for support.
2008-12-31 2009-01-31 Repos ACLs Add ACL control onto administrative repository.
2009-06-30 Repos Struct Re-structure repository hierarchy.
2009-05-01 2009-04-30 Design Talk Document design and do a technical presentation.
2009-07-31 Redo Client Re-design and re-code client command script.
2009-07-31 Redo Backend Re-design and re-code backend scripts (possibly using a central daemon).
2009-06-30 Bug List Minor bug fixes and feature enhancements on FAQ/TODO.
2009-07-31 RPM Replace Subversion live export with RPM managed distribution.