= 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 [[https://github.com/cytoscape|GitHub]]. To work on the core, you need to learn how to use [[http://git-scm.com/|git]]. Please read some [[http://git-scm.com/book|books]]/[[http://git-scm.com/documentation|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 [[https://github.com/cytoscape/cytoscape/blob/develop/README.md|README.md]] file for the latest information. == Working with Branches == {{http://nvie.com/img/2009/12/Screen-shot-2009-12-24-at-11.32.03.png}} ~- (This image was created by [[http://nvie.com/posts/a-successful-git-branching-model/|Vincent Driessen]]) -~ === Branching Model for Cytoscape Core Projects === Cytoscape Core projects use the following branching model: * [[http://nvie.com/posts/a-successful-git-branching-model/|A successful Git 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. [[https://github.com/nvie/gitflow|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? == [[https://groups.google.com/forum/?fromgroups#!forum/cytoscape-discuss|Cytoscape mailing lists]] are the best place to ask questions. Let's start '''''social coding'''''! Pull requests are always welcome. == Links == * [[https://github.com/cytoscape|Cytoscape Consortium GitHub Account]] * [[http://yakiloo.com/getting-started-git-flow/|Getting Started – Git-Flow]] * [[http://vimeo.com/16018419|A short introduction to Git Flow (Movie)]]