Project Ideas

This page contains project ideas for contributors. Unlike the Roadmap, this page is just a collection of ideas that is loosely ordered by priority. Feel free to add projects to this list. Even if the idea is vague, add it and we can build on it together.

FRONTENDEnd-to-end applications that rely on the platform/core.
PLATFORMExtensible frameworks that build on the core service.
COREThe heart of the Concourse infrastructure (i.e. storage engine, RPC, etc).
RELEASEElements that affect how Concourse Server is maintained and released.

 

 

ProjectDescriptionAcceptance CriteriaRequired SkillsSkill LevelMentor

Browser Shell & Tutorial

FRONTEND

Create a browser-based shell (similar to CaSH) that has an interactive tutorial. The goal is for users to experiment with ConcourseDB and learn the API without having to first download and install the software.
  • Javascript
  • HTML/CSS
  • Cloud servers (AWS)
  • Apache/Nginx
MediumJeff Nelson

Language Bindings

PLATFORM

We need native client libraries for non-JVM languages. The goal is to ship client APIs in Python, RubyPHPGo and Javascript. We are open to shipping clients for other languages as well, but the aforementioned are the priorities.

This is obviously a project that several people can work on since there are multiple target languages. Each of the targets is supported by Thrift, so the crux of these projects will center on designing an API that feels right for the language (i.e. the Python client should conform to Python conventions, which are very different from Java conventions).

  • Each client library is cleanly packaged and available for distribution (i.e. the Python client should be installable with pip. In general this just means we don't want people to have to manually download files and place them in their project in order to use the library). 
  • Each client library can connect to a Concourse Server and perform reads/writes/queries. 
  • Each client library has unit tests.
To work on a library for a particular language, you need to have enough experience in that language to respect its conventions and traditions. You should also be familiar with popular packaging/distribution mechanisms for that language.MediumJeff Nelson  

HTTP API

PLATFORM

CORE

Add an HTTP API to Concourse Server that allows users to CRUD data using HTTP endpoints. The API should try to be as REST-like as possible.
  • HTTP endpoints for all major Concourse Server methods.
  • Python, Ruby or Java

MediumJeff Nelson  

Browser Dashboard

FRONTEND

Create a browser based Dashboard that allows users to visualize, analyze and administer data in real-time. At a minimum, this should provide an interface (similar to PhpMyAdmin) that allows users to see data and run queries. A stretch goal is to provide graphs and charts for more advanced data analytics.
  • Users can read/write/query data the same way that they would in CaSH
  • Users can browse data
  • Users can visualize data
  • Users can check on the status of Concourse Server
  • Users can view Concourse Server logs
  • Javascript
  • HTML/CSS
  • UX Design
  • Linux
AdvancedJeff Nelson 

Package Manager Integration

RELEASE

Make Concourse Server installable using OS specific package managers like Yum, Apt and Homebrew. Using a tool like https://github.com/jordansissel/fpm may be an option for this project.
  • Can use all major package managers to download and install Concourse Server on all applicable operating systems.
  • Experience working with one or more package managers is encouraged, but not required.
  • Ruby
  • Shell scripting
BeginnerJeff Nelson 

Performance Testing

CORE

Conduct performance tests to see how ConcourseDB scales with different data sets and workloads. A stretch goal is to create a re-usable framework to automate the performance tests and integrate with our release process. We already have a test framework upon which to build.

The ability to answer the following questions:

  • How does Concourse scale with different data sets and workloads?
  • For certain workloads, how does ConcourseDB compare to Cassandra, Mongo and MySQL?
  • What are the limits for ConcourseDB? When does the software start performing poorly?
  • What are bottlenecks in the software?

 

  • Experience conducting performance tests or knowledge of tools to measure performance
  • Java, JUnit
  • Shell scripting
  • Linux
AdvancedJeff Nelson 

Document all the things

RELEASE

We have some documentation, that needs to be improved (e.g. made more readable and consistent). We also need documentation for all the things that don't have it.
  • Code samples
  • Tutorials
  • Documentation for all major concepts
  • API documentation exists and is consistent
  • FAQ updated and maintained
  • Technical writing

BeginnerJeff Nelson 

Automate API Documentation

CORE

We have API documentation in a lot of places, each of which is manually written. This leads to things getting out of sync easily. This project will try to consolidate the places where documentation exists and make generating copies of the documentation automatic.

 

  • CaSH documentation is automatically generated during each build.
  • Javadoc for Concourse API methods is used to automatically construct CaSH documentation.
  • Generate web-based Javadoc for API methods.
  • Java
MediumJeff Nelson 
CON-214 - Getting issue details... STATUS

Automatic data storage compaction/expansion

CORE

 

  • Create a job that will merge blocks in the background. When combining blocks, the resultant block must have a bloom filter that is large enough to accomodate all the data (so n * normal bloom filter size). Smaller number of blocks means we have fewer things to consult when performing a disk sync.
  • Also consider splitting blocks if the cardinality is too large (cardinality meaning ! of locators or key/locators or something like that...). Should this be statically defined or evolve over time according to access times for the block?
  • Blocks are automatically merged, if necessary.
  • Blocks are automatically expanded, if necessary.
  • No data loss
  • Not consistency issues
  • Java
AdvancedJeff Nelson 

CON-215 - Getting issue details... STATUS

Windows Support

CORE

Right now Concourse does not work on Windows. It's also very hard for Windows developers to contribute. We'd like to change that.
  • Seamless developer setup for Windows users
  • Concourse Server windows installer
  • Unit tests work on Windows
  • Concourse Server works on Windows
  • Java
  • Windows
  • Batch scripting
MediumPrakash Dubey

CON-201 - Getting issue details... STATUS

CCL - Concourse Criteria Language

CORE

PLATFORM

Allow Concourse to parse structure statements written in natural language to Criteria objects. This is not designed to be an entire query language akin to SQL. Instead, we want to provide a limited language that allows users to express complex criteria similarly to the Criteria builder, but using natural language as the interface.
  • Use CCL queries in CaSH and the API
  • Use CCL to export records on the command line
  • Use CCL in the Dashboard
  • Java
  • Structured/formal languages
    • ANTLR recommended, but not required
AdvancedJeff Nelson