Difference between revisions of "Diagrams/Contributing"

From HaskellWiki
Jump to navigation Jump to search
(→‎Getting the sources: add link to tutorial and hub utility)
(→‎Choosing a project: flesh out help on picking a project)
Line 18: Line 18:
 
== Choosing a project ==
 
== Choosing a project ==
   
  +
If you would like to begin contributing to the diagrams project but are not sure where to start, here are a few resources that may be helpful:
* bug tracker
 
  +
* projects page
 
  +
* Take a look at the issue trackers for repositories in the [http://github.com/diagrams diagrams organization on github], especially those for the [http://github.com/diagrams/diagrams-core/issues?state=open diagrams-core], [http://github.com/diagrams/diagrams-lib/issues?state=open diagrams-lib], [http://github.com/diagrams/diagrams-contrib/issues?state=open diagrams-contrib], and [http://github.com/diagrams/diagrams-doc/issues?state=open diagrams-doc] repositories.
* ask on mailing list or IRC
 
  +
* See the [http://www.haskell.org/haskellwiki/Diagrams/Projects projects page] for a list of ongoing projects to get involved with, or new projects to start.
 
* Don't hesitate to ask for ideas on the mailing list or IRC channel.
   
 
== Best practices ==
 
== Best practices ==

Revision as of 15:02, 21 August 2012

This page is under construction -- please help!

Getting involved

There are two major ways to get involved in the diagrams community and find out what is going on:

  • The IRC channel (#diagrams on freenode.org) is fairly active and a good place to interact with other diagrams users and developers. (Be patient: sometimes no one is watching the channel, but if you say something or ask a question, you can be sure that someone will eventually see it and respond.)
  • The mailing list is the place to stay up-to-date with announcements, and also a good place to ask questions, especially longer or more involved ones.

Getting the sources

All the core diagrams code can be found in the diagrams organization on github.

If you don't already know how to work with repositories hosted on github, take a look at a tutorial. The hub utility is an optional but recommended tool for simplifying common tasks involving github.

Choosing a project

If you would like to begin contributing to the diagrams project but are not sure where to start, here are a few resources that may be helpful:

Best practices

XXX walk through example of checking out repo, making and committing changes, and submitting a pull request. Show how to do it manually and also using 'hub' utility.

  • use topic branches
  • encourage submitting update to documentation
  • link to coding style document

TODO: expand/clean up the below

But the short version is that a pull request is not for a set of commits, it is for a *branch*. In particular, you add new commits to a pull request simply by pushing to the branch which the pull request is from. So best practice when working on a new feature is

  • make a new branch (a "feature" or "topic" branch). If you have push access you can make a branch directly in the main repo; otherwise, fork it and make a branch in your fork.
  • Make some commits in your branch.
  • Open a pull request from your branch to 'master'.
  • If necessary, make revisions etc. by pushing additional commits to the branch. There's no need to "revise" the original commits; it's useful to have the entire history of development with comments, etc.
  • Once your commits have been merged, you can delete the branch.

The important point is that it's usually a bad idea to open a pull request from the 'master' branch of your fork because then you can't do anything else while waiting for your changes to be merged.

Another interesting point is that there's not necessarily any reason to wait until you are "done" to open a pull request. Just make sure you state that the feature is "in progess", and then you can get useful early feedback as you continue to work on the feature and push more commits. Of course, branches/pull requests also make for a nice way to work on a new feature collaboratively.


Walkthrough

Here's how you can clone all of the repositories:

#!/bin/sh
git clone https://github.com/diagrams/docutils
git clone https://github.com/diagrams/dual-tree
git clone https://github.com/diagrams/monoid-extras
git clone https://github.com/diagrams/vector-space-points
git clone https://github.com/diagrams/diagrams-core
git clone https://github.com/diagrams/active
git clone https://github.com/diagrams/diagrams-lib
git clone https://github.com/diagrams/diagrams-cairo
git clone https://github.com/diagrams/diagrams-contrib

# optional
git clone https://github.com/diagrams/diagrams-doc

Here's how you can install all of those repositories:

#!/bin/sh
cd active
cabal install --avoid-reinstalls --user

cd ../monoid-extras
cabal install --avoid-reinstalls --user

cd ../dual-tree
cabal install --avoid-reinstalls --user

cd ../diagrams-core
cabal install --avoid-reinstalls --user

cd ../diagrams-lib
cabal install --avoid-reinstalls --user

cd ../diagrams-cairo
cabal install --avoid-reinstalls --user

cd ../diagrams-contrib
cabal install --avoid-reinstalls --user