| Dancer documentation | view source | Contained in the Dancer distribution. |
Dancer::Development - guide for developers interested in contributing
This guide has been written to help anyone interested in contributing to the development of Dancer.
First of all - thank you for your interest in the project! It's the community of helpful contributors who've helped Dancer experience phenominal growth to get to where it is today.
Please read this guide before contributing to Dancer, to avoid wasted effort and maximise the chances of your contributions being used.
There are many ways to contribute to the project. Dancer is a young yet active project and any kind of help is very much appreciated!
You don't have to start by hacking the code, spreading the word is very valuable as well!
If you have a blog, just feel free to speak about Dancer.
If you're a Twitter user, you can tweet about it with the hashtag #perl (and
feel free to follow @PerlDancer for news and updates on Dancer!).
Of course, dissemination efforts don't have to limited to blogs or Twitter. Feel free to spread the word in whatever way you consider fit and drop us a line on the Dancer user mailing list, see below.
Also, if you're using and enjoying Dancer, http://cpanratings.perl.org/dist/Dancer|rating us on cpanratings.perl.org explaining what you like about Dancer is another very valuable contribution, to help other new users find us!
Subscribing to the mailing list and/or hanging our on our IRC channel and providing assistance to new users is incredibly valuable.
#dancer on irc.perl.org, or http://www.perldancer.org/irc for
quick web client.We do value documentation very much, but it's difficult to keep it up-to-date. If you find a typo or an error in the documentation please do let us know - ideally, by submitting a patch with your fix (see "Patch Submission").
Especially, if you have access to perl on rare operating systems, please consider contributing tests. See http://wiki.cpantesters.org/wiki/TestDuringInstall for more information.
You can write extensions (so-called plugins) for Dancer extending Dancer's core functionality or contribute to Dancer's core code, see "Patch Submission" below.
This section lists high-level recommendations for developing Dancer, for more detailled guidelines, see "Coding Guidelines" below.
Dancer should be able to install for all Perl versions since 5.8, on any platform for which Perl exists.
We should avoid regressions as much as possible and keep backwards compatibility in mind when refactoring. Stable releases will not break functionality and new releases provide upgrade path and upgrade tips, e.g. warn about deprecated functionality.
Our weapon for being aware of our quality is the CPAN testers platform: http://www.cpantesters.org.
A good way to help the project is to find a failing build log on the CPAN testers: http://www.cpantesters.org/distro/D/Dancer.html
If you find a failing test report, feel free to report it as a GitHub issue: http://github.com/sukria/Dancer/issues.
We prefer to have all our bug reports on GitHub, in the issues section: <http://github.com/sukria/Dancer/issues>. It's possible though to report bugs on RT as well: https://rt.cpan.org/Dist/Display.html?Queue=Dancer
Please make sure the bug you're reporting does not yet exist. In doubt please ask on IRC.
The Dancer development team uses GitHub to collaborate. We greatly appreciate contributions submitted via GitHub, as it makes tracking these contributions and applying them much, much easier - therefore giving a much better chance of your contribution being integrated into Dancer quickly!
To help us achieve high-quality, stable releases, git-flow workflow is used to
handle pull-requests, that means contributors must work on their devel branch
rather than on their master. (Master should be touched only by the core dev
team when preparing a release to CPAN; all ongoing development happens in
branches which are merged to the devel branch.)
Here is the workflow for submitting a patch:
$ git clone git://github.com/myname/Dancer.git
devel branch of
your clone (master is used only for building releases).
$ git remote add upstream https://github.com/sukria/Dancer.git
$ git fetch upstream
$ git checkout -b devel upstream/devel
devel and that
will track the official devel branch. That way, if you have more or
less commits than the upstream repo, you'll be immediately notified by git. # you should be in devel here
git checkout -b pr/$name
# ... commits ...
git push origin pr/$name
irc.perl.org, chan #dancer
or http://www.perldancer.org/irc. git checkout devel
git branch -D pr/$name
git push origin :pr/$name
git pull upstream devel
git push origin devel
Since version 1.2, the team has decided to take a step further toward production concerns: Dancer now promises to provide an API-stable and feature frozen release, whose updates will only be about bugfixes and documentation updates.
After some discussion with the core-team members, it has been agreed that the 1.2xx release series will be the first of this kind, and will live as long as 1.3xx lives.
As soon as the last 1.3xx release is mature enough and tha the core team is happy with, it will be uploaded as the first version of the 1.4xx series, and 1.2xx will become obsolete.
This let us evolves quickly in our main track (devel in GitHub will contain all the daily work we want to make 1.3xx better) but as well, it lets us assure maintainability for the 1.2 series, as we will probably have to fix a bug somewhere in 1.2 without merging with new stuff contained in the devel branch.
That's why a maintenance branch is added to the repo. To be very clear, this branch is named "frozen", to reflect the idea that the source-code in this branch is not meant to evolve regarding features. It should only contains fixes for bug or documentation updates.
If you want to submit a pull-request to the frozen branch (that means
1.3xx is out and you've found a bug in 1.2xx) you need to base your
work on the frozen branch. Use the same procedure explained before,
but with the frozen branch.
A mailing list is available here: http://lists.perldancer.org/cgi-bin/listinfo/dancer-users
You can reach the development team on irc.perl.org, chan #dancer or via a web chat interface at http://www.perldancer.org/irc. We're always happy to hear from users and contributors.
The official repository is hosted on GitHub at the following location: http://github.com/sukria/Dancer.
Official developers have write access to this repository, contributors are invited to fork it if they want to submit patches, as explained in the Patch submission section.
The repository layout is organised as follows:
masterThis branch is dedicated to prepare CPAN releases. We push to that branch only for packaging a new release. Every CPAN version are made from this branch.
develThis is the development branch. New features are pushed here, and will be merged to master when the next release is being prepared.
This section describes standards and requirements for coding. For more broad guidelines, see "GENERAL DEVELOPMENT GUIDELINES" above.
Dancer is intended to be a micro-framework. That means among other things that it should remain lightweight. For this reason we try very hard to keep the dependency bag as low as possible. But we don't want to reinvent the wheel either.
The balance is not easy to do but you can keep in mind that unless for a very good reason, the team won't accept a new dependency to be added to the core.
If a patch provides a new feature that depends on a module, the solution is to perform a dynamic loading. Dancer has a class dedicated to that job: Dancer::ModuleLoader. Here is an example of how to use it:
package Dancer::Some::Thing;
use Carp;
sub init {
Dancer::ModuleLoader->load('Some::Deps')
or croak "the feature provided by Dancer::Some::Thing needs Some::Deps";
}
That way, an optional feature doesn't block Dancer from being installed as the dependency check is performed at runtime.
Public and stable releases are those without an underline ('_') in the version number. The latest stable release can be downloaded from CPAN and github.com.
Developer releases are those which include an underline ('_') in the version number. Whenever the devel branch has been merged into the master branch, the CPAN release built must be a developer version (the version number contains a '_').
Before a new release is made, the uploaders must wait for the CPAN testers reports. This is done to make sure the new merge doesn't bring regressions.
For current information on Dancer's plans for the future, see the file TODO at https://github.com/sukria/Dancer/blob/master/TODO.
This document has been written by Alexis Sukrieh sukria@cpan.org
| Dancer documentation | view source | Contained in the Dancer distribution. |