On Wed Jul 15 18:37:03 UTC 2009, James Pifer jep at obrien-pifer.com wrote:
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 source.
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:
- 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.
- 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 searching.
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.
- 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.
- 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.
- 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.
- 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.
HTH