Cytoscape Projects at Github
Introduction
This is a document for developers who are interested in Cytoscape 3.x core development.
Cytoscape Core projects are now hosted at GitHub. To work on the core, you need to learn how to use git. Please read some books/documents about git and understand basic concepts of distributed source code management system.
Cytoscape 3 Core Projects
(This section is not finished yet)
parent
This project contains only one pom.xml file. This is the parent of many sub-projects. Important version numbers, such as OSGi runtime version, maven plugin versions are stored as properties in this file.
api
This project defines public API set for Cytoscape 3. We will not change these API for minor releases.
impl
Actual implementation code. In general, these are hidden from 3rd party developers and not accessible.
support
Misc. sub modules for Cytoscape 3 distributions.
gui-distribution
Desktop version of Cytoscape 3.
headless-distribution
Experimental command-line version of Cytoscape. This will be included from 3.1.x releases.
app-developer
Creates support JAR file for App developers. This bundle also creates public API JavaDocs.
samples
Sample code projects.
Clone Cytoscape 3 Core Projects with repo
Please read README.md file for the latest information.
Working with Branches
(This image was created by Vincent Driessen)
Branching Model for Cytoscape Core Projects
Cytoscape Core projects use the following branching model:
This is one of the best practices used in developers community using git. The following two branches always exist for all sub-projects:
master - for tagging releases. Once we create a release, the code set will be set to HEAD of this branch. This will NOT be used for daily development.
develop - for development. This branch was called trunk in our old SVN repository. Core developers commit their code to this branch.
In addition to these branches, we use the following branches:
hotfix - for bug fix releases. For example, fixes for 3.0.1 release will be maintained in this branch and merged back to both develop and master.
release - once we reach to a milestone, we create this branch for the next release. For example, 3.1.0 code will be maintained in this branch and will be merged back to develop. Once it is ready to release, it will be merged back to master and tagged.
Feature Branches and git-flow
Branching is a very lightweight operation in git. Instead of sticking to one develop branch, creating feature branches is always encouraged.
Git-flow is a collection of shell scripts to save your keystrokes when you perform branching, merging, and tagging.
If you want to create a new feature for Cytoscape, you can create new branch with the following command.
git flow feature start NEW_FEATURE_NAME
And once you finish it, you can run the following:
git flow feature finish NEW_FEATURE_NAME
This automatically merge your new feature back to develop, and delete the feature branch.
Questions?
Cytoscape mailing lists are the best place to ask questions.
Let's start social coding! Pull requests are always welcome.