1Mojolicious::Guides::CoUnsterribCuotnitnrgi(b3u)ted PerlMoDjoocluimceinotuast:i:oGnuides::Contributing(3)
2
3
4
6 Mojolicious::Guides::Contributing - Contributing to Mojolicious
7
9 There are many ways to contribute to Mojolicious, this guide will show
10 you a few of them.
11
13 We use the GitHub issue tracker
14 <https://github.com/mojolicious/mojo/issues>, so you'll need to create
15 a (free) GitHub account to be able to submit issues, comments and pull
16 requests.
17
18 First of all, make sure you are using the latest version of
19 Mojolicious, it is quite likely that your bug has already been fixed.
20 If that doesn't help, take a look at the list of currently open issues,
21 perhaps it has already been reported by someone else and you can just
22 add a comment confirming it.
23
24 If it hasn't been reported yet, try to prepare a test case
25 demonstrating the bug, you are not expected to fix it yourself, but
26 you'll have to make sure the developers can replicate your problem.
27 Sending in your whole application generally does more harm than good,
28 the "t" directory of this distribution has many good examples for how
29 to do it right. Writing a test is usually the hardest part of fixing a
30 bug, so the better your test case the faster it can be fixed. ;)
31
32 And don't forget to add a descriptive title and text, when you create a
33 new issue. If your issue does not contain enough information or is
34 unintelligible, it might get closed pretty quickly. But don't be
35 disheartened, if there's new activity it will get reopened just as
36 quickly.
37
38 Reporting security issues
39 Please report security issues directly to the pumpkin-holder via email,
40 which is currently Sebastian Riedel ("kraih@mojolicious.org"), and give
41 us a few days to develop and release a proper fix.
42
44 There are many ways in which you can help us resolve existing issues on
45 the GitHub issue tracker <https://github.com/mojolicious/mojo/issues>.
46
47 Can you replicate the problem on your computer? Add a comment saying
48 that you're seeing the same. Perhaps you can provide additional
49 information that will make it easier for others to replicate the
50 problem, maybe even contribute a better test case.
51
52 And for all code contributions we very much appreciate additional
53 testing and code review, just add a comment to show your approval or to
54 point out flaws that need to be addressed.
55
57 One of the easiest ways to contribute to Mojolicious is through
58 documentation improvements. While the Mojolicious::Guides are carefully
59 curated by the core team, everybody with a (free) GitHub account can
60 make changes and add new information to the Mojolicious wiki
61 <http://github.com/mojolicious/mojo/wiki>.
62
63 Pull requests with additions or changes to the documentation included
64 in the Mojolicious distribution follow the same rules as code
65 contributions. Please don't send pull requests for overly simplistic
66 changes, such as the addition of a comma or semicolon.
67
69 All code contributions should be sent as GitHub pull requests
70 <https://help.github.com/articles/using-pull-requests>. But please try
71 to avoid pull requests with very simplistic changes, such as a single
72 typo fix somewhere in the documentation or comments.
73
74 An expressive title and detailed description are invaluable during the
75 review process, which usually ends when members of the community have
76 voiced their opinions and the core team voted for or against a change.
77 All code changes should emulate the style of the surrounding code,
78 include tests that fail without them, and update relevant
79 documentation.
80
81 While the Mojolicious distribution covers a wide range of features, we
82 are rather conservative when it comes to adding new ones. So if your
83 contribution is not a simple bug fix, it is strongly recommended that
84 you discuss it in advance on the mailing list
85 <http://groups.google.com/group/mojolicious> or the official IRC
86 channel "#mojo" on "irc.freenode.net" (chat now!
87 <https://kiwiirc.com/nextclient/#irc://irc.freenode.net/mojo?nick=guest-?>),
88 to avoid unnecessary work and to increase its chances of getting
89 accepted.
90
91 The following mission statement and rules are the foundation of all
92 Mojo and Mojolicious development. Please make sure that your
93 contribution aligns well with them before sending a pull request.
94
95 Mission statement
96 Mojo is a web development toolkit, with all the basic tools and helpers
97 needed to write simple web applications and higher level web
98 frameworks, such as Mojolicious.
99
100 All components should be reusable in other projects, and in a UNIXish
101 way only loosely coupled.
102
103 Especially for people new to Perl it should be as easy as possible to
104 install Mojolicious and get started. Writing web applications can be
105 one of the most fun ways to learn a language!
106
107 For developers of other web frameworks, it should be possible to reuse
108 all the infrastructure and just consider the higher levels of the
109 Mojolicious distribution an example application.
110
111 Rules
112 Web development should be easy and fun, this is what we optimize for.
113
114 The web is a moving target, to stay relevant we have to stay in
115 motion too.
116
117 Keep it simple, no magic unless absolutely necessary.
118
119 The installation process should be as fast and painless as possible.
120 (Less than a minute on most common hardware is a good rule of thumb)
121
122 The addition and modification of features is decided by majority vote
123 or the pumpkin-holder.
124
125 Any core developer may nominate a new one, who must then be accepted
126 by a 2/3 majority vote.
127
128 The pumpkin-holder has veto rights and may select their successor.
129
130 It's not a feature without a test and documentation.
131
132 A feature is only needed when the majority of the user base benefits
133 from it.
134
135 Features may only be changed in a major release, to fix a serious
136 security issue, or after being deprecated for at least 3 months.
137
138 Refactoring and deprecations should be avoided if there are no
139 substantial benefits.
140
141 New features can be marked as experimental to be excluded from
142 deprecation policies.
143
144 A major release is signaled by a new major version number and a
145 unique code name based on a Unicode character.
146
147 Only add dependencies if absolutely necessary and make them optional
148 if possible.
149
150 Domain specific languages should be avoided in favor of Perl-ish
151 solutions.
152
153 No inline POD.
154
155 Documentation belongs to the guides, module POD is just an API
156 reference.
157
158 The main focus of the included documentation should be on examples,
159 no walls of text. (An example for every one or two sentences is a
160 good rule of thumb)
161
162 Everything should be ordered alphabetically if possible, or at least
163 be consistent if not.
164
165 The master source code repository should always be kept in a stable
166 state, use feature branches for actual development.
167
168 Code has to be run through Perl::Tidy with the included .perltidyrc
169 <https://github.com/mojolicious/mojo/blob/master/.perltidyrc>, and
170 everything should look like it was written by a single person.
171
172 Functions and methods should be as short as possible, no spaghetti
173 code.
174
175 Comments should be correctly capitalized, and funny if possible,
176 punctuation is optional if it doesn't increase readability.
177
178 No names outside of "Mojolicious.pm".
179
181 Mojolicious is open source and free to use. However, the amount of
182 effort needed to maintain the project and develop new features for it
183 is not sustainable without proper financial backing. You can support
184 the ongoing development of Mojolicious through PayPal
185 <https://www.paypal.me/kraih>.
186
187 If you run a business and use Mojolicious in a revenue generating
188 product, it makes business sense to support Mojolicious development.
189 Because it ensures that the project your product relies on stays
190 healthy and actively maintained. It can also help your exposure within
191 the community and will make it easier to attract Mojolicious
192 developers.
193
194 Please email Sebastian Riedel ("kraih@mojolicious.org") if you have any
195 questions about becoming a sponsor.
196
198 Like the technical community as a whole, the Mojolicious team and
199 community is made up of a mixture of professionals and volunteers from
200 all over the world, working on every aspect of the mission - including
201 mentorship, teaching, and connecting people.
202
203 Diversity is one of our huge strengths, but it can also lead to
204 communication issues and unhappiness. To that end, we have a few ground
205 rules that we ask people to adhere to. This code applies equally to
206 founders, mentors and those seeking help and guidance.
207
208 This isn't an exhaustive list of things that you can't do. Rather, take
209 it in the spirit in which it’s intended - a guide to make it easier to
210 enrich all of us and the technical communities in which we participate.
211
212 This code of conduct applies to all spaces managed by the Mojolicious
213 project. This includes IRC, the mailing lists, the issue tracker, and
214 any other forums created by the project team which the community uses
215 for communication. In addition, violations of this code outside these
216 spaces may affect a person's ability to participate within them.
217
218 If you believe someone is violating the code of conduct, we ask that
219 you report it by emailing Joel Berger ("jberger@mojolicious.org") or
220 other members of the team.
221
222 · Be friendly and patient.
223
224 · Be welcoming. We strive to be a community that welcomes and supports
225 people of all backgrounds and identities. This includes, but is not
226 limited to members of any race, ethnicity, culture, national origin,
227 colour, immigration status, social and economic class, educational
228 level, sex, sexual orientation, gender identity and expression, age,
229 size, family status, political belief, religion, and mental and
230 physical ability.
231
232 · Be considerate. Your work will be used by other people, and you in
233 turn will depend on the work of others. Any decision you take will
234 affect users and colleagues, and you should take those consequences
235 into account when making decisions. Remember that we're a world-wide
236 community, so you might not be communicating in someone else's
237 primary language.
238
239 · Be respectful. Not all of us will agree all the time, but
240 disagreement is no excuse for poor behavior and poor manners. We
241 might all experience some frustration now and then, but we cannot
242 allow that frustration to turn into a personal attack. It’s important
243 to remember that a community where people feel uncomfortable or
244 threatened is not a productive one. Members of the Mojolicious
245 community should be respectful when dealing with other members as
246 well as with people outside the Mojolicious community.
247
248 · Be careful in the words that you choose. We are a community of
249 professionals, and we conduct ourselves professionally. Be kind to
250 others. Do not insult or put down other participants. Harassment and
251 other exclusionary behavior aren't acceptable. This includes, but is
252 not limited to:
253
254 · Violent threats or language directed against another person.
255
256 · Discriminatory jokes and language.
257
258 · Posting sexually explicit or violent material.
259
260 · Posting (or threatening to post) other people's personally
261 identifying information ("doxing").
262
263 · Personal insults, especially those using racist or sexist terms.
264
265 · Unwelcome sexual attention.
266
267 · Advocating for, or encouraging, any of the above behavior.
268
269 · Repeated harassment of others. In general, if someone asks you to
270 stop, then stop.
271
272 · When we disagree, try to understand why. Disagreements, both social
273 and technical, happen all the time and Mojolicious is no exception.
274 It is important that we resolve disagreements and differing views
275 constructively. Remember that we’re different. The strength of
276 Mojolicious comes from its varied community, people from a wide range
277 of backgrounds. Different people have different perspectives on
278 issues. Being unable to understand why someone holds a viewpoint
279 doesn’t mean that they’re wrong. Don’t forget that it is human to err
280 and blaming each other doesn’t get us anywhere. Instead, focus on
281 helping to resolve issues and learning from mistakes.
282
284 The Mojolicious core team believes that there is a lot of value in the
285 entire toolkit being a unified project. Forks drain resources from a
286 project, not just mindshare but also very valuable bug reports and
287 patches, which can have very serious security implications. Therefore
288 we ask that you please not publically fork pieces of the Mojolicious
289 distribution without our consent. As doing so is against our express
290 wishes, individuals who engage in unauthorized forking may be denied
291 from participating in community sponsored spaces.
292
293 For developers considering the use of a forked module, we strongly
294 recommend that you make yourself familiar with its history and track
295 record. While many parts of Mojolicious have been forked in the past,
296 very few forks have been able to keep up with Mojolicious development,
297 and most are missing critical bug fixes.
298
300 You can continue with Mojolicious::Guides now or take a look at the
301 Mojolicious wiki <http://github.com/mojolicious/mojo/wiki>, which
302 contains a lot more documentation and examples by many different
303 authors.
304
306 If you have any questions the documentation might not yet answer, don't
307 hesitate to ask on the mailing list
308 <http://groups.google.com/group/mojolicious> or the official IRC
309 channel "#mojo" on "irc.freenode.net" (chat now!
310 <https://kiwiirc.com/nextclient/#irc://irc.freenode.net/mojo?nick=guest-?>).
311
312
313
314perl v5.28.0 2018-10-2M7ojolicious::Guides::Contributing(3)