Provided by: libmojolicious-perl_6.15+dfsg-1ubuntu1_all bug

NAME

       Mojolicious::Guides::Contributing - Contributing to Mojolicious

OVERVIEW

       There are many ways to contribute to Mojolicious, this guide will show you a few of them.

REPORTING BUGS

       We use the GitHub issue tracker <https://github.com/kraih/mojo/issues>, so you'll need to
       create a (free) GitHub account to be able to submit issues, comments and pull requests.

       First of all, make sure you are using the latest version of Mojolicious, it is quite
       likely that your bug has already been fixed. If that doesn't help, take a look at the list
       of currently open issues, perhaps it has already been reported by someone else and you can
       just add a comment confirming it.

       If it hasn't been reported yet, try to prepare a test case demonstrating the bug, you are
       not expected to fix it yourself, but you'll have to make sure the developers can replicate
       your problem. Sending in your whole application generally does more harm than good, the
       "t" directory of this distribution has many good examples for how to do it right. Writing
       a test is usually the hardest part of fixing a bug, so the better your test case the
       faster it can be fixed. ;)

       And don't forget to add a descriptive title and text when you create a new issue. If your
       issue does not contain enough information, it might get closed pretty quickly, but don't
       be disheartened, if there's new activity it will get reopened just as quickly.

   Reporting security issues
       Please report security issues directly to the CPAN email address of the pumpkin-holder,
       which is currently "sri@cpan.org", and give us a few days to develop and release a proper
       fix.

RESOLVING ISSUES

       There are many ways in which you can help us resolve existing issues on the GitHub issue
       tracker <https://github.com/kraih/mojo/issues>.

       Can you replicate the problem on your computer? Add a comment saying that you're seeing
       the same. Perhaps you can provide additional information that will make it easier for
       others to replicate the problem, maybe even contribute a better test case.

       And for all code contributions we very much appreciate additional testing and code review,
       just add a comment to show your approval or to point out flaws that need to be addressed.

CONTRIBUTING DOCUMENTATION

       One of the easiest ways to contribute to Mojolicious is through documentation
       improvements. While the Mojolicious::Guides are carefully curated by the core team,
       everybody with a (free) GitHub account can make changes and add new information to the
       Mojolicious wiki <http://github.com/kraih/mojo/wiki>. Pull requests with additions or
       changes to the documentation included in the Mojolicious distribution follow the same
       rules as code contributions.

CONTRIBUTING CODE

       All code contributions should be sent as GitHub pull requests
       <https://help.github.com/articles/using-pull-requests>.

       An expressive title and detailed description are invaluable during the review process,
       which usually ends when members of the community have voiced their opinions and the core
       team voted for or against a change. All code changes should emulate the style of the
       surrounding code, include tests that fail without them, and update relevant documentation.

       While the Mojolicious distribution covers a wide range of features, we are rather
       conservative when it comes to adding new ones. So if your contribution is not a bug fix,
       you can drastically increase its chances of getting accepted by discussing it in advance
       on the mailing-list <http://groups.google.com/group/mojolicious> or the official IRC
       channel "#mojo" on "irc.perl.org".

       The following mission statement and rules are the foundation of all Mojo and Mojolicious
       development. Please make sure that your contribution aligns well with them before sending
       a pull request.

   Mission statement
       Mojo is a runtime environment for Perl real-time web frameworks. It provides all the basic
       tools and helpers needed to write simple web applications and higher level web frameworks,
       such as Mojolicious.

       All components should be reusable in other projects, and in a UNIXish way only loosely
       coupled.

       Especially for people new to Perl it should be as easy as possible to install Mojolicious
       and get started. Writing web applications can be one of the most fun ways to learn a
       language!

       For developers of other web frameworks, it should be possible to reuse all the
       infrastructure and just consider the higher levels of the Mojolicious distribution an
       example application.

   Rules
         Web development should be easy and fun, this is what we optimize for.

         The web is a moving target, to stay relevant we have to stay in motion too.

         Keep it simple, no magic unless absolutely necessary.

         The installation process should be as fast and painless as possible. (Less than a minute
         on most common hardware is a good rule of thumb)

         The addition and modification of features is decided by majority vote or the pumpkin-
         holder.

         Any core developer may nominate a new one, who must then be accepted by a 2/3 majority
         vote.

         The pumpkin-holder has veto rights and may select their successor.

         It's not a feature without a test and documentation.

         A feature is only needed when the majority of the user base benefits from it.

         Features may only be changed in a major release, to fix a serious security issue, or
         after being deprecated for at least 3 months.

         Refactoring and deprecations should be avoided if there are no substantial benefits.

         New features can be marked as experimental to be excluded from deprecation policies.

         A major release is signaled by a new major version number and a unique code name based
         on a Unicode character.

         Only add dependencies if absolutely necessary and make them optional if possible.

         Domain specific languages should be avoided in favor of Perl-ish solutions.

         No inline POD.

         Documentation belongs to the guides, module POD is just an API reference.

         The main focus of the included documentation should be on examples, no walls of text.
         (An example for every one or two sentences is a good rule of thumb)

         Everything should be ordered alphabetically if possible, or at least be consistent if
         not.

         The master source code repository should always be kept in a stable state, use feature
         branches for actual development.

         Code has to be run through Perl::Tidy with the included .perltidyrc
         <https://github.com/kraih/mojo/blob/master/.perltidyrc>, and everything should look like
         it was written by a single person.

         Functions and methods should be as short as possible, no spaghetti code.

         Comments should be correctly capitalized, and funny if possible, punctuation is optional
         if it doesn't increase readability.

         No names outside of "Mojolicious.pm".

         Be nice to each other.

MORE

       You can continue with Mojolicious::Guides now or take a look at the Mojolicious wiki
       <http://github.com/kraih/mojo/wiki>, which contains a lot more documentation and examples
       by many different authors.

SUPPORT

       If you have any questions the documentation might not yet answer, don't hesitate to ask on
       the mailing-list <http://groups.google.com/group/mojolicious> or the official IRC channel
       "#mojo" on "irc.perl.org".