sillsdev / chorus

End-user collaboration library via 3-way xml merging and hg dvcs under the hood
6 stars 26 forks source link
chorus conflict dvcs fieldworks hacktoberfest hg merge send-receive synchronization xml

Overview

NuGet version (chorus) Build, Test and Pack

Chorus is a version control system designed to enable workflows appropriate for typical language development teams who are geographically distributed. These teams need to edit a set of common files, working towards a publication. They want to share their work while, crucially, being able to defer dealing with conflicting edits for periods of time or until a qualified team member can make decisions about the conflicts. The system is implemented on top of a commonly-used Open Source Distributed Version Control System. It works in scenarios in which users are connected by Local Area Network, Internet, or hand-carried storage devices. Chorus supports several workflow models, including those that maintain a “master” database separate from the incoming submissions of team members. Quite unlike the version control systems commonly in use, Chorus works invisibly for the common cases and is kept simple for even beginner computer users.

Distinctive Features

These features come for free with any Distributed Version Control System:

However, "raw" Distributed Version Controls Systems are relatively difficult to understand, configure, and use, even for computer-savvy workers.

The following list of features should help you understand why we built this layer over a raw version control system:

Status

Chorus is functional and being used in several applications with different development teams. However, we are not really interested in supporting any further uses until things mature and someone writes good developer documentation. Documentation (what little exists) was kept on this blog, which contains three posts from August 2009.

Testers

Please see Tips for Testing Palaso Software

To send and receive with the test server over the Internet, set the following environment variable:

LANGUAGEFORGESERVER = -qa.languageforge.org

To register to use the test server, visit https://public-qa.languageforge.org

Developers

Road Map & Workflow

https://github.com/sillsdev/chorus/issues

Coding Standards

Palaso Coding Standards

Source Code

Chorus is written in C#. The UI widgets use Windows Forms, but you could make your own using a different platform and just use the engine.

After cloning the project you should now have a solution that you can build using any edition of Visual Studio 2022, including the free Express version, JetBrains Rider or Visual Studio Code. This works on both Windows and Linux.

From the command line you can build with:

dotnet build

and run the unit tests with:

dotnet test

Building client projects against locally-built artifacts

Further instructions at https://github.com/sillsdev/libpalaso/wiki/Developing-with-locally-modified-nuget-packages

Debugging LibChorus in client projects

Copy src/LibChorus/Properties/launchSettings.json.sample to launchSettings.json; verify paths to executables and in arguments.

Localization

Chorus is localized with L10NSharp. Chorus-specific documentation is under l10n/README.md.