[CentOS] OT: Web "Project" type software

Thu Jul 16 14:58:41 UTC 2009
James B. Byrne <byrnejb at harte-lyne.ca>

On Wed Jul 15 18:37:03 UTC 2009, James Pifer jep at obrien-pifer.com

> Sorry for the OT... I'm looking for some software to fill a
> fairly specific set of requirements. I'm not necessarily looking
> for project software, but it seems like the closest to match what
> I need. I'm also not tied into open source or free. If anyone
> knows of any software that might fill these requirements I would
> appreciate it.

I am building a fairly sizable dbms based project and I started out
with subversion as the SCM and Trac as the PAS.  Last year I
switched the project to Git and Redmine respectively.  Both are open

Git is the Linux kernel maintainers' SCM system and was initially
designed and written by LT himself to replace BitKeeper.  It is a
completely distributed SCM and is very easy to use, albeit not so
easy to learn or understand.

> Here's what I'm looking for:

> 1) Web enabled application

Redmine is 100% Ruby and Rails, totally web based.  It supports Git
repositories out of the box.  Git is a combination of scripts and C
programs.  It is available for Linux, Microsoft and several other OS
platforms.  Repository structure is identical for all platforms
although differs in implementation details.  On MicroSoft
environments I hold that Git is best hosted under a cygwin instance,
although a native port does exist.

> 2) File storage
	- need to stare a large amount of large cad files
	- be able to categorize file storage (not one large list)
	- keep different revisions of files with some kind of notes
	- be able to search files (at least include names in a search)

Remine uses the underlying fs for file storage and provides the
metadata for search.  Files can be placed into a document list or
attached to individual wiki pages. A description can be provided
upon creation, although at present there seems no supported way of
editing an existing description.  Redmine supports full test

However, Git is by far and away the best solution to the problem of
large file storage.  Redmine can index a Git repository and track
individual change sets.  Therefore, Git + Redmine will give you
most, if not all, of what you ask for.

> 3) Task	- assign and keep track of tasks (searchable)

Redmine supports multiple projects and sub-projects in a single
instance.  Issues may be related to one another. Users may be
assigned differing roles on different projects.  Different projects
can have different categories and statuses.  The DBMS backend is
PostgrSQl so any report writer with an SQL backend should be able to
provide whatever reports that you have the data to drive.

> 4) Store meeting notes and minutes (searchable)

In addition to issue tracking and file storage, Redmine provides
both project specific wikis and web forums.  Access to either can be
controlled on a project/user basis.  The full text search facility
covers both.  It also has time logging and a slew of other features.

> 5) Would like to support LDAP

I believe that Redmine does, but I do not use this myself so I
cannot be sure. Git is a filesystem, it has its own network transfer
protocol which is very fast and completely insecure.  It also
supports transfer over http, very slow and insecure, and ssh,
acceptable speed and secure transfer.

> 6) Extension on file storage - since we'll be storing a large files
> and many of our users are across a WAN we'd like to sync/mirror
> the files to a few different servers. I'm not sure how we'd control
> how the users get the "closest" server but....

If you use Git instead of Redmine for your large file store then
each user gets a complete repository the first time that they pull
(clone actually) from the remote, including all the source changes
to initialisation. Thereafter they only get the diff objects. Git
uses a very efficient storage mech. that basically only passes
compressed diffs of file contents.  It uses MD5 hashes of file
contents to identify change sets so that if you rename a file or
merge two into one it can track these events and avoid duplicate
storage.  I use a cron scheduled git pull over ssh to maintain a
remote copy of our base repository and the traffic created is
negligible even after large commits.

If the Git repository containing those files is bound to your
Redmine project then you can search the files therein through
Redmine and compare diffs across multiple versions.  Of course,
nothing is going to help much with binary data files.


***          E-Mail is NOT a SECURE channel          ***
James B. Byrne                mailto:ByrneJB at Harte-Lyne.ca
Harte & Lyne Limited          http://www.harte-lyne.ca
9 Brockley Drive              vox: +1 905 561 1241
Hamilton, Ontario             fax: +1 905 561 0757
Canada  L8E 3C3