# Contributing

First of all, thanks a lot for your interest in contributing to CaSS.

Additional governance documentation is available on the GitHub Community Page (opens new window) for CaSS.

# Getting Started

The first thing to do is to get connected with the CaSS Project group. Subscribe to the slack channel, join the mailing lists, join the #dev channel on Slack, say Hi, and provide a description of what you’re hoping to accomplish.

There are several things you or your organization can do to contribute:

  • Contributing issues
  • Contributing tools or applications that use CASS Libraries
  • Contributing libraries or adapters that allow more language interoperability or application interoperability
  • Contributing core code to the CASS Project or CASS Library

We also welcome:

  • A contribution of art, writing, or other creative resources
  • A contribution of speaking engagements, articles, write-ups, case studies, or other CASS related engagements

# Communication

We want to hear about your project, your goals, your efforts, issues, and more. Every stumbling block you run into is something we can improve. We’re very interested in hearing your experiences. Contact us via the Slack chat, GitHub issue, by emailing our community manager, Kevin, or the lead developer, Fritz.

# Development Stack

The CASS Library is a Javascript Library, and is available in GitHub (opens new window), NPM (opens new window) and Bower (opens new window). The CASS Library is compiled from an open source project called EC (opens new window), with libraries available on Maven Central (opens new window). The CASS Repository is compiled from an open source project called EW (opens new window), with libraries available on Maven Central (opens new window).

The development stack is based on Apache Maven (opens new window).

The preferred development environment is not specified, but we tend to use IntelliJ.

EC is a Java Maven project that transpiles into the Javascript CASS Libraries via a library called ST-JS (opens new window).

EW is a Java Maven web service development framework that can be deployed in servlet containers.

RS2 and LevrJs are scripting languages developed to utilize the capabilities of EW, and in the case of LevrJs, EC.

# Governance

  • The CASS Project is an open source community created through funding by the Advanced Distributed Learning Initiative.
  • The current governing committee is composed of members from the ADL and its contractors.
    • Individuals and organizations may join the committee, please contact us for more detail.
  • The CASS website, documentation and GitHub is controlled by this committee.
  • The CASS Project accepts contributions in the form of pull requests, communications, suggestions, documents and issues.
    • All contributors retain the copyright of their works.
      • Contributor License Agreements are required before work will be accepted. Contributor License Agreements are similar to the Individual and Corporate Apache Contributor License Agreements.
      • Licenses must be Apache 2.0 for code.
      • Licenses must be Creative Commons for other forms of contribution. Attribution is acceptable.
  • The CASS Project encourages any party to create derivative works or specialized applications under open source, proprietary, or commercial licenses. These may be spotlighted by the CASS Project, but are not subject to this governance structure.

# Architecture

The CaSS Architecture Slides document, available here (opens new window), is a useful set of visualizations for understanding CaSS and its architecture.

# Contributing

To contribute a distinct piece of software to the CASS Project, the project should be developed under GitHub and assignment of the project to the CASS Project Group will constitute the contribution of code.

To contribute changes to CASS, cloning the project to your GitHub will allow you to submit changes from your clone of the project to the main project via Pull Requests. This is the preferred method of submitting changes to existing code. The lead developer will review and approve or deny pull requests.

To contribute other resources, please contact our community manager, Kevin, or the lead developer, Fritz.