Hi all,
I've been kicking around an idea for a while that I'd like to share in a bit more detail with everyone.
I like to think that as an open group anyone can join and contribute. I believe this is true in the form of offering criticism or feedback. However when it comes to contributing through programming I'm not so sure. This isn't due to rejected pull requests as much as it is getting someone to understand what a pull request is, as well as a host of other software development specific things.
As an open-science group I think we could really lead the way on how to bring anyone into the programming fold.
I suggested this briefly a while back in one of our meetings and one of the suggested approaches was to place this info in the docs. I think that is a start, although I could easily envision this being its own repo/website. The goal of this repo would be to document details regarding software development (more details below). It wouldn't necessarily need to contain all original content. Its main achievement would be to have a singular place for identifying technologies and approaches as well as describing approaches that group members use to develop software. Most of it would likely be non-Openworm specific, but I think it would be a great resource to point new (and old?) group members to.
Here's some topics off the top of my head, in no particular order, that hopefully illustrate the kinds of topics I think we could flush out. Many of these are issues I've run into myself that took more than a couple of seconds to figure out. I apologize in advance that most of these are Python centric.
- software versioning
- git vs svn vs mercurial etc
- git basics
- git tools for various OSes - e.g. tortoisegit
- github basics
- licensing a repo
- forking vs branching
- recommended Python IDEs for various OSes, especially with a scientific development focus
- proper code documentation standards for each language - this could be generic and then we could provide OW specifics in our docs repo
- how to merge conflicting code
- binary file distribution
- continuous integration
- travis-ci
- json, yml
- md, rst
- HDF5
- readthedocs
- multiple python installations
- targeting pip to a specific python installation
- whl, easy_setup, egg,
- pypi
- Christoph Gohlke's website
- requirements.txt
- virtualenv
- homebrew
- maven
- django
- aws
etc.
Would this be useful? Does something like this already exist? Thoughts?
Jim