Manual Reference Pages - MOJOLICIOUS::GUIDES::CONTRIBUTING (3)
Mojolicious::Guides::Contributing - Contributing to Mojolicious
There are many ways to contribute to Mojolicious, this guide will show you a
few of them.
We use the GitHub issue tracker <https://github.com/kraih/mojo/issues>, so
youll 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 doesnt 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 hasnt been reported yet, try to prepare a test case demonstrating the
bug, you are not expected to fix it yourself, but youll 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
And dont forget to add a descriptive title and text, when you create a new
issue. If your issue does not contain enough information or is unintelligible,
it might get closed pretty quickly. But dont be disheartened, if theres 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 email@example.com, and give us a few days to
develop and release a proper fix.
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
youre 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.
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.
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.
Mojo is a web development toolkit, with all the basic tools and helpers
needed to write simple web applications and higher level web frameworks, such as
All components should be reusable in other projects, and in a UNIXish way only
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.
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
Any core developer may nominate a new one, who must then be accepted by a 2/3
The pumpkin-holder has veto rights and may select their successor.
Its 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
New features can be marked as experimental to be excluded from deprecation
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
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 doesnt increase readability.
No names outside of Mojolicious.pm.
Please consider sponsoring the ongoing development of Mojolicious, especially
if your company benefits from this project. We welcome your patronage on
Bountysource <https://www.bountysource.com/teams/mojolicious> or
Grants for contiguous full-time development, over the period of a few days, can
also have a huge impact. They allow us to tackle complex issues that are
otherwise left to linger until somebody cant afford to not fix them. To arrange
such a grant for a core developer please email firstname.lastname@example.org.
CODE OF CONDUCT
Like the technical community as a whole, the Mojolicious team and community is
made up of a mixture of professionals and volunteers from all over the world,
working on every aspect of the mission - including mentorship, teaching, and
Diversity is one of our huge strengths, but it can also lead to communication
issues and unhappiness. To that end, we have a few ground rules that we ask
people to adhere to. This code applies equally to founders, mentors and those
seeking help and guidance.
This isnXt an exhaustive list of things that you canXt do. Rather, take it in
the spirit in which itXs intended - a guide to make it easier to enrich all of
us and the technical communities in which we participate.
This code of conduct applies to all spaces managed by the Mojolicious project.
This includes IRC, the mailing lists, the issue tracker, and any other forums
created by the project team which the community uses for communication. In
addition, violations of this code outside these spaces may affect a persons
ability to participate within them.
If you believe someone is violating the code of conduct, we ask that you report
it by emailing email@example.com or other members of
Original text courtesy of the Speak Up! project <http://speakup.io/coc.html>.
<B>Be friendly and patient.B>
<B>Be welcoming.B> We strive to be a community that welcomes and supports
people of all backgrounds and identities. This includes, but is not limited to
members of any race, ethnicity, culture, national origin, colour, immigration
status, social and economic class, educational level, sex, sexual orientation,
gender identity and expression, age, size, family status, political belief,
religion, and mental and physical ability.
<B>Be considerate.B> Your work will be used by other people, and you in
turn will depend on the work of others. Any decision you take will affect users
and colleagues, and you should take those consequences into account when making
decisions. Remember that were a world-wide community, so you might not be
communicating in someone elses primary language.
<B>Be respectful.B> Not all of us will agree all the time, but
disagreement is no excuse for poor behavior and poor manners. We might all
experience some frustration now and then, but we cannot allow that frustration
to turn into a personal attack. ItXs important to remember that a community
where people feel uncomfortable or threatened is not a productive one. Members
of the Mojolicious community should be respectful when dealing with other
members as well as with people outside the Mojolicious community.
<B>Be careful in the words that you choose.B> We are a community of
professionals, and we conduct ourselves professionally. Be kind to others. Do
not insult or put down other participants. Harassment and other exclusionary
behavior arent acceptable. This includes, but is not limited to:
Violent threats or language directed against another person.
Discriminatory jokes and language.
Posting sexually explicit or violent material.
Posting (or threatening to post) other peoples personally identifying
Personal insults, especially those using racist or sexist terms.
Unwelcome sexual attention.
Advocating for, or encouraging, any of the above behavior.
Repeated harassment of others. In general, if someone asks you to stop,
<B>When we disagree, try to understand why.B> Disagreements, both social
and technical, happen all the time and Mojolicious is no exception. It is
important that we resolve disagreements and differing views constructively.
Remember that weXre different. The strength of Mojolicious comes from its varied
community, people from a wide range of backgrounds. Different people have
different perspectives on issues. Being unable to understand why someone holds a
viewpoint doesnXt mean that theyXre wrong. DonXt forget that it is human to err
and blaming each other doesnXt get us anywhere. Instead, focus on helping to
resolve issues and learning from mistakes.
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.
If you have any questions the documentation might not yet answer, dont
hesitate to ask on the
mailing-list <http://groups.google.com/group/mojolicious> or the official IRC
channel #mojo on irc.perl.org.
|perl v5.20.3 ||MOJOLICIOUS::GUIDES::CONTRIBUTING (3) ||2016-03-15 |
Visit the GSP FreeBSD Man Page Interface.
Output converted with manServer 1.07.