add files
|
1 | |
2 |
=encoding utf8 |
|
3 | ||
4 |
=head1 NAME |
|
5 | ||
6 |
Mojolicious::Guides::Contributing - Contributing to Mojolicious |
|
7 | ||
8 |
=head1 OVERVIEW |
|
9 | ||
10 |
There are many ways to contribute to L<Mojolicious>, this guide will show you |
|
11 |
a few of them. |
|
12 | ||
13 |
=head1 REPORTING BUGS |
|
14 | ||
15 |
We use the L<GitHub issue tracker|https://github.com/kraih/mojo/issues>, so |
|
16 |
you'll need to create a (free) GitHub account to be able to submit issues, |
|
17 |
comments and pull requests. |
|
18 | ||
19 |
First of all, make sure you are using the latest version of L<Mojolicious>, it |
|
20 |
is quite likely that your bug has already been fixed. If that doesn't help, |
|
21 |
take a look at the list of currently open issues, perhaps it has already been |
|
22 |
reported by someone else and you can just add a comment confirming it. |
|
23 | ||
24 |
If it hasn't been reported yet, try to prepare a test case demonstrating the |
|
25 |
bug, you are not expected to fix it yourself, but you'll have to make sure the |
|
26 |
developers can replicate your problem. Sending in your whole application |
|
27 |
generally does more harm than good, the C<t> directory of this distribution |
|
28 |
has many good examples for how to do it right. Writing a test is usually the |
|
29 |
hardest part of fixing a bug, so the better your test case the faster it can |
|
30 |
be fixed. ;) |
|
31 | ||
32 |
And don't forget to add a descriptive title and text when you create a new |
|
33 |
issue. |
|
34 | ||
35 |
=head2 Reporting security issues |
|
36 | ||
37 |
Please report security issues directly to the CPAN email address of the |
|
38 |
pumpking, which is currently C<sri@cpan.org>, and give us a few days to |
|
39 |
develop and release a proper fix. |
|
40 | ||
41 |
=head2 Feature requests |
|
42 | ||
43 |
Please do not open GitHub issues for feature requests, if there's something |
|
44 |
you would like to see in a future version of L<Mojolicious>, you have to write |
|
45 |
the code yourself. |
|
46 | ||
47 |
If you're looking for feedback on your ideas, you're welcome to discuss them |
|
48 |
on the L<mailing-list|http://groups.google.com/group/mojolicious> or the |
|
49 |
official IRC channel C<#mojo> on C<irc.perl.org>. |
|
50 | ||
51 |
=head1 RESOLVING ISSUES |
|
52 | ||
53 |
There are many ways in which you can help us resolve existing issues on the |
|
54 |
L<GitHub issue tracker|https://github.com/kraih/mojo/issues>. |
|
55 | ||
56 |
Can you replicate the problem on your computer? Add a comment saying that |
|
57 |
you're seeing the same. Perhaps you can provide additional information that |
|
58 |
will make it easier for others to replicate the problem, maybe even contribute |
|
59 |
a better test case. |
|
60 | ||
61 |
And for all code contributions we very much appreciate additional testing and |
|
62 |
code review, just add a comment to show your approval or to point out flaws |
|
63 |
that need to be addressed. |
|
64 | ||
65 |
=head1 CONTRIBUTING DOCUMENTATION |
|
66 | ||
67 |
One of the easiest ways to contribute to L<Mojolicious> is through |
|
68 |
documentation improvements. While the L<Mojolicious::Guides> are carefully |
|
69 |
curated by the core team, everybody with a (free) GitHub account can make |
|
70 |
changes and add new information to the |
|
71 |
L<Mojolicious wiki|http://github.com/kraih/mojo/wiki>. |
|
72 | ||
73 |
=head1 CONTRIBUTING CODE |
|
74 | ||
75 |
All code contributions should be sent as |
|
76 |
L<GitHub pull requests|https://help.github.com/articles/using-pull-requests>. |
|
77 | ||
78 |
An expressive title and detailed description are invaluable during the review |
|
79 |
process, which usually ends when members of the community have voiced their |
|
80 |
opinions and the core team voted for or against a change. All code changes |
|
81 |
should emulate the style of the surrounding code, include tests that fail |
|
82 |
without them, and update relevant documentation. |
|
83 | ||
84 |
While the L<Mojolicious> distribution covers a wide range of features, we are |
|
85 |
rather conservative when it comes to adding new ones. So if your contribution |
|
86 |
is not a bugfix, you can drastically increase its chances of getting accepted |
|
87 |
by discussing it in advance on the |
|
88 |
L<mailing-list|http://groups.google.com/group/mojolicious> or the official IRC |
|
89 |
channel C<#mojo> on C<irc.perl.org>. |
|
90 | ||
91 |
The following mission statement and rules are the foundation of all L<Mojo> |
|
92 |
and L<Mojolicious> development. Please make sure that your contribution aligns |
|
93 |
well with them before sending a pull request. |
|
94 | ||
95 |
=head2 Mission statement |
|
96 | ||
97 |
L<Mojo> is a runtime environment for Perl real-time web frameworks. It |
|
98 |
provides all the basic tools and helpers needed to write simple web |
|
99 |
applications and higher level web frameworks, such as L<Mojolicious>. |
|
100 | ||
101 |
All components should be reusable in other projects, and in a UNIXish way only |
|
102 |
loosely coupled. |
|
103 | ||
104 |
Especially for people new to Perl it should be as easy as possible to install |
|
105 |
L<Mojolicious> and get started. Writing web applications can be one of the |
|
106 |
most fun ways to learn a language! |
|
107 | ||
108 |
For developers of other web frameworks, it should be possible to reuse all the |
|
109 |
infrastructure and just consider the higher levels of the L<Mojolicious> |
|
110 |
distribution an example application. |
|
111 | ||
112 |
=head2 Rules |
|
113 | ||
114 |
=over 2 |
|
115 | ||
116 |
Web development should be easy and fun, this is what we optimize for. |
|
117 | ||
118 |
The web is a moving target, to stay relevant we have to stay in motion too. |
|
119 | ||
120 |
Keep it simple, no magic unless absolutely necessary. |
|
121 | ||
122 |
The installation process should be as fast and painless as possible. (Less |
|
123 |
than a minute on most common hardware is a good rule of thumb) |
|
124 | ||
125 |
The addition and modification of features is decided by majority vote or the |
|
126 |
pumpking. |
|
127 | ||
128 |
Any core developer may nominate a new one, who must then be accepted by a 2/3 |
|
129 |
majority vote. |
|
130 | ||
131 |
The pumpking has veto rights and may select his successor. |
|
132 | ||
133 |
It's not a feature without a test and documentation. |
|
134 | ||
135 |
A feature is only needed when the majority of the user base benefits from it. |
|
136 | ||
137 |
Features may only be changed in a major release or after being deprecated for |
|
138 |
at least 3 months. |
|
139 | ||
140 |
Refactoring and deprecations should be avoided if no important feature depends |
|
141 |
on it. |
|
142 | ||
143 |
New features can be marked as experimental to be excluded from deprecation |
|
144 |
policies. |
|
145 | ||
146 |
A major release is signaled by a new major version number and a unique code |
|
147 |
name based on a Unicode character. |
|
148 | ||
149 |
Only add dependencies if absolutely necessary and make them optional if |
|
150 |
possible. |
|
151 | ||
152 |
Domain specific languages should be avoided in favor of Perl-ish solutions. |
|
153 | ||
154 |
No inline POD. |
|
155 | ||
156 |
Documentation belongs to the guides, module POD is just an API reference. |
|
157 | ||
158 |
The main focus of the included documentation should be on examples, no walls |
|
159 |
of text. (An example for every one or two sentences is a good rule of thumb) |
|
160 | ||
161 |
Everything should be ordered alphabetically if possible. |
|
162 | ||
163 |
The master source code repository should always be kept in a stable state, use |
|
164 |
feature branches for actual development. |
|
165 | ||
166 |
Code has to be run through L<Perl::Tidy> with the included C<.perltidyrc>, and |
|
167 |
everything should look like it was written by a single person. |
|
168 | ||
169 |
Functions and methods should be as short as possible, no spaghetti code. |
|
170 | ||
171 |
Comments should be correctly capitalized, and funny if possible, punctuation |
|
172 |
is optional if it doesn't increase readability. |
|
173 | ||
174 |
No names outside of C<Mojolicious.pm>. |
|
175 | ||
176 |
No Elitism. |
|
177 | ||
178 |
Peace! |
|
179 | ||
180 |
=back |
|
181 | ||
182 |
=head1 MORE |
|
183 | ||
184 |
You can continue with L<Mojolicious::Guides> now or take a look at the |
|
185 |
L<Mojolicious wiki|http://github.com/kraih/mojo/wiki>, which contains a lot |
|
186 |
more documentation and examples by many different authors. |
|
187 | ||
188 |
=head1 SUPPORT |
|
189 | ||
190 |
If you have any questions the documentation might not yet answer, don't |
|
191 |
hesitate to ask on the |
|
192 |
L<mailing-list|http://groups.google.com/group/mojolicious> or the official IRC |
|
193 |
channel C<#mojo> on C<irc.perl.org>. |
|
194 | ||
195 |
=cut |