Concourse is a schemaless and distributed version control database with optimistic availability, serializable transactions and full-text search. Concourse provides a more intuitive approach to data management that is easy to deploy, access and scale with minimal tuning while also maintaining the referential integrity and ACID characteristics of traditional database systems.
This README is written for developers looking to contribute to the codebase. Detailed user documentation is available at http://cinchapi.org/concourse
You may also refer to the API documentation for details on using Concourse in a third party application.
Concourse immediately writes all data to disk, but also keeps recently written and read content in memory. Since memory operations are faster, having more on hand is great, but you can operate Concourse safely with a minimum 256 MB heap.
Concourse is only supported on Linux and Mac OS X operating systems. Things should also work on Windows, but we can't make any guarantees.
Concourse runs on Java 1.7.
This is version 0.4.0 of Concourse.
Concourse will be maintained under the Semantic Versioning
guidelines such that release versions will be formatted as <major>.<minor>.<patch>
where
- breaking backward compatibility bumps the major,
- new additions while maintaining backward compatibility bumps the minor, and
- bug fixes or miscellaneous changes bumps the patch.
This repository contains several modules that form the concourse-core.
- The concourse project contains the core API, which is the foundation for everything in Concourse. This API is public and should be used in third-party applications to interact with Concourse.
- The concourse-server project contains all the server-side logic for data storage and retrieval. You should never include this code in a third-party application, but should install the concourse-server distribution and interact with it using the concourse api.
- The concourse-shell project contains the code for the Concourse Action SHell (CaSH), which is shipped with concourse-server.
- The concourse-testing project contains long running end-to-end tests that should be run separately from the build process.
Look over the wiki to learn about the internal architecture.
- Choose an open issue or implement a new feature.
- Create an account in Jira.
- If necessary, create a new ticket to track your work. Otherwise, assign an existing ticket. yourself.
-
Read the coding standards.
-
Fork the repo.
-
Clone your forked version of concourse.git.
$ git clone git@github.com:<username>/concourse.git -
Start writing code :)
- Install the gradle eclipse plugin.
- Import all the concourse projects.
- Import the launch configurations from
concourse-server/launchandconcourse-shell/launch. - Use Start Server to start a local server with the default configuration.
- Use Stop Server to stop all locally running servers.
- Use Launch CaSH to launch a cash terminal that is connected to a locally running server listening on the default port.
Always check that Concourse builds properly after you've made changes. We use Gradle as the build system.
$ ./gradlew clean build installer
If all goes well, run the installer in concourse-server/build/distributions, launch CaSH and sanity check some smoke tests.
- Send a pull request.
- Update the Jira ticket with the commit hashes for your change.
Shoot us an email if you want to become a regular contributor and help with strategic planning!
If you run into any issues, have questions or want to request new features, please create a ticket in Jira.
Ping us at concourse-devs@cinchapi.org if you ever have any questions. We're happy to help.
- Jeff Nelson
Copyright © 2013-2014 Jeff Nelson, Cinchapi Software Collective.
Concourse is released under the MIT License. For more information see LICENSE, which is included with this package.