Introduction
DNN is coming up on
our 11 year anniversary and even after all these years, we still have not found
the perfect set of management tools for our project. There are so many
different options available, and more are becoming available every year. None
of the current market leaders even existed when DNN first started.
Recently, we made the decision to move our source code
repository to GitHub and moved our issue
tracker to Jira. Our
previous source repository and issue tracker were great tools, but they no
longer fit the needs of our project.
Finding the Right Tool is Like Finding the Right Home
I remember fondly when I first started apartment hunting. My
budget didn’t extend quite as far as I wanted it to. There was no fancy pool,
manicured lawns or even covered parking spaces. I quickly made a list of must-haves
and nice-to-haves and then matched that up with the available housing.
Even though I didn’t exactly find my dream home, I did find
a place that suited my needs. Eventually, I moved out of that apartment into a
bigger apartment, and ultimately into a house of my own. DNN has followed a
similar path, moving from one project hosting service to another as our needs
changed.
Finding a good project hosting service for your Open Source
project is a lot like searching for an apartment or house. The features you can
live without as a small project can become critical as your project grows.
Below are five tips that I learned managing an open source project over the
last decade.
Tip #1: Location, Location, Location
The key to any successful open source project is your
community. Part of building your community is making it easy for new people to
find your project. Just like houses, having a project hosted at a popular
location and using popular tools will make it easier for users to find and
participate in your project.
Your choice of issue tracker and project hosting says a lot
about your project. If your project caters to developers on the Microsoft
stack, then you might be able to host on a site like CodePlex. However, if you want to attract
PHP, Ruby or NodeJS developers, then there are much better project hosting
options available for those environments.
When choosing a home for your project, take a look around
the neighborhood to see what other projects are there. Is it a ghost town or an
up and coming community of projects? For many years, SourceForge hosted many of
the newest and largest Open Source projects; in recent years, however, you will
find most of the hottest projects being hosted at GitHub.
Tip #2: Don’t Forget Your Community
Many open source projects start out by serving the needs of
just a couple of people. As the project grows, it begins developing a community of users and project
contributors. When looking for the perfect set of management tools for your
project, make sure you think about the community members who will be using
those tools.
Does your community prefer using TFS, SVN, Mercurial or GIT?
How easy is it for your users to create new bug reports? What about
communication between the community and project team – does the project hosting
service support forums, a wiki or
even project pages? When deciding what tools are best suited for your project,
take a few minutes to think about it from the perspective of your community
members.
Tip #3: Plan for Growth
Every Open Source project starts out pretty small. You may
just have a few code files and some simple instructions for installation and
usage. As your project grows and the community gets larger, the tools that were
once acceptable will start to cause problems for your project.
When looking for management tools and a hosting location for
your project, make sure you think about what you might need as your project
grows. How well will the integrated issue tracker handle dozens or even
hundreds of issues? Are you limited in the number of contributors who can
participate on the project? Can you disable features you have outgrown?
Tip #4: Plan for Migration
Eventually, your project may be faced with the prospect of
moving all or part of your management toolset. If your project becomes super
successful, you may eventually outgrow the capabilities offered by many of the
current crop of project hosting services.
Your current service provider might not keep up with modern
development trends or maybe your provider becomes a sleepy backwater and all of
the new open source projects have moved to a new neighborhood.
Whatever the reason, you need to think about how you would
move your code and data to another service. Over the course of the DNN project we have used four
different open source project hosting providers, four different source code
repositories and three different issue trackers.
Each move has required us to evaluate not only how easy it
was to move our data into the new tool, but potentially how easy it would be to
migrate data out of the tool when we eventually outgrow it. We did not think
about this for our first two project hosting providers and we ended up losing a
lot of project history and data.
Don’t let this happen to you. Plan for the migration up
front and it will make it much easier when it becomes time to move.
Tip #5: Integration
Every open source project finds that it relies very heavily
on four or five key project management tools: source code repository, issue
tracker, discussion forum,
project pages and a wiki. Your project may not need all of these tools or may
have alternative tools that you want to substitute for the tools that are
provided out of the box.
The benefit of using the tools provided by a single provider
is that they are all integrated and easily accessible to your community
members. When your project outgrows the capabilities of the integrated tools,
how easy is it to turn off that tool and integrate a third party solution?
What if you want to develop custom reporting tools for your project – can you
access the underlying project data to develop your reports? Maybe you want
custom processes kicked off whenever someone checks in some code – is that
possible with your chosen project hosting service? These are just a couple of
the integration scenarios you will want to investigate when choosing where to
host your project.
Bonus Tip: There is No Perfect Tool
Regardless of how well you research project management tools
and hosting services, you will eventually find that there is no perfect tool that
will match 100% of your needs. Even if you find something that is close to your
requirements, you will often find that, just like your first apartment, you
will eventually outgrow that space. So instead of looking for the perfect
solution, look for a solution that solves most of your current challenges while
still having some room to grow. Given the pace of change in the industry, it is
likely that there will be even better choices by the time you are ready to
move.
Conclusion
The DNN team has been very happy with our move to GitHub and
Jira. Jira has made it much easier to manage our issues – whether it is the
stories created by our product managers when developing new features, or the
enhancement requests submitted by our
community or even the bugs logged by our QA team and community members.
Jira has the flexibility to handle all of our requirements
and even has some integration with GitHub so that we can easily see which
commits and files were changed to deal with a specific issue.
Likewise, GitHub has made it easier for us to open up our
repository for public inspection and contribution. In addition, GitHub (being
based on Git) has made it much easier to handle multiple branches and a
distributed development team consisting of both internal and external
contributors.
Overall, we are very happy with our recent move, but we know
that in another 3 or 4 years we may just be looking for another set of
management tools for our project. If that happens, we are well prepared to make
the move.