Send me a pull-request

I read Hadi Hariri’s post and then also Ayende’s and this is what I wanted to put into the comments. Being a bit long, I thought I’d better make a blog post out of it:

As an often user of OSS (thx to NuGet), and not so much a contributor, here is my point-of-view on the matter:

For a complex project like RavenDB, which usually is a very core part of the application, I fully support the way Ayende describes how to (intentionally) keep the barrier for getting the source local and how things that are not in the scope of the core team get a 'send me a pull-request'.
If the feature/bug/whatever I need/want is so important, and given the critical part that RavenDB then often is, I would spend the time to set up an environment, and try to hack out a pull-request. For some OSS projects, I have already done so. It's a hassle, but in the end usually it is worth it. (Not to mention the stuff one learns reading through the code bases)

I do feel like Hadi for a lot of smaller, less critical OSS projects. There are many little bugs/features that could get resolved a lot faster if getting the environment for the project set up would only take a couple of minutes. Be able to hack out the bug/feature and send the pull request. It is something I often see in commercial software development too: to set up a new machine for a new developer is nowhere documented, and usually takes a lot of trial and error to get the new person working on the code base. Usually there is someone on the team there to help the new person get up to speed.  NuGet has also fixed some of these issues, as many of the dependencies are now fetched from NuGet. But most of the time there is no quick developer readme of what steps to take. Simple steps that say:

  1. Install IDE
    Include options A,B,C
    link to download
  2. Install Test Runner xUnit vx.y
    link to download
  3. Install additional component/framework
    link to download
  4. Fork/Branch/Get the Source code
    1. Sub step
    2. Sub step
  5. Set up dependency YadaYada (database, web server, …)
  6. Set up IDE environment (code conventions, tabs vs spaces, …)
  7. How to create a patch/pull-request

NSubtitute has a nice write-up of how to contribute

For .Net and Visual Studio development, something like this would truly help in getting people up and running faster: (please vote).

It would definitely help in keeping my dev machine in a cleaner state. I tend to (need to) rebuild my machine every so often because of all the add-ins and additional stuff gathered getting/keeping several projects running.

Then just having a basic install of Visual Studio, downloading the source code and opening the solution would allow anyone to get started on the code.

Or doing it the other way around like Chocolatey suggests. Perhaps we all need to embrace SharpDevelop more and build out that OSS project to become the core development IDE for our .Net based OSS projects.

It could also be a cloud service for someone to build, to enable to quickly set up such an environment and connect to it remotely. OSS leaders could then define or create a base image including all the tools required: IDE, VCS support, Unit Test runner, ... A new potential contributor could then just request their environment to be loaded, get the latest source using their own credentials (or please even some guest account), hack up the code and quickly create a patch.

Posted by: Rudi Larno
Last revised: 08 Feb, 2012 05:05 PM


No comments yet. Be the first!

blog comments powered by Disqus