1Mojolicious::Guides::CoUnsterribCuotnitnrgi(b3u)ted PerlMoDjoocluimceinotuast:i:oGnuides::Contributing(3)
2
3
4

NAME

6       Mojolicious::Guides::Contributing - Contributing to Mojolicious
7

OVERVIEW

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

REPORTING BUGS

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 Sebastian Riedel
40       ("kraih@mojolicious.org"), and give us a few days to develop and
41       release a proper fix.
42

RESOLVING ISSUES

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

CONTRIBUTING DOCUMENTATION

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       <https://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

CONTRIBUTING CODE

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 reviewed the changes. For a
77       pull request to get merged it requires three positive reviews from
78       voting members of the core team.
79
80       All code changes should emulate the style of the surrounding code,
81       include tests that fail without them, and update relevant
82       documentation.
83
84       While the Mojolicious distribution covers a wide range of features, we
85       are rather conservative when it comes to adding new ones. So if your
86       contribution is not a simple bug fix, it is strongly recommended that
87       you discuss it in advance in the Forum <https://forum.mojolicious.org>
88       or the official IRC channel "#mojo" on "irc.libera.chat" (chat now!
89       <https://web.libera.chat/#mojo>), to avoid unnecessary work and to
90       increase its chances of getting accepted.
91
92       The following mission statement and rules are the foundation of all
93       Mojo and Mojolicious development. Please make sure that your
94       contribution aligns well with them before sending a pull request.
95
96   Mission statement
97       Mojo is a web development toolkit, with all the basic tools and helpers
98       needed to write simple web applications and higher level web
99       frameworks, such as Mojolicious.
100
101       All components should be reusable in other projects, and in a UNIXish
102       way only loosely coupled.
103
104       Especially for people new to Perl it should be as easy as possible to
105       install Mojolicious and get started. Writing web applications can be
106       one of the most fun ways to learn a language!
107
108       For developers of other web frameworks, it should be possible to reuse
109       all the infrastructure and just consider the higher levels of the
110       Mojolicious distribution an example application.
111
112   Rules
113       General rules for the project:
114
115         Web development should be easy and fun, this is what we optimize for.
116
117         The web is a moving target, to stay relevant we have to stay in
118         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.
123         (Less than a minute on most common hardware is a good rule of thumb)
124
125         It's not a feature without a test and documentation.
126
127         A feature is only needed when the majority of the user base benefits
128         from it.
129
130         Features may only be changed in a major release, to fix a serious
131         security issue, or after being deprecated for at least 3 months.
132
133         Refactoring and deprecations should be avoided if there are no
134         substantial benefits.
135
136         New features can be marked as experimental to be excluded from
137         deprecation policies.
138
139         A major release is signaled by a new major version number and a
140         unique code name based on a Unicode character.
141
142         Only add dependencies if absolutely necessary and make them optional
143         if possible.
144
145         Emulate the style of the existing code and documentation, but don't
146         be afraid to adopt newer best practices if you can apply them
147         consistently.
148
149         Domain specific languages should be avoided in favor of Perl-ish
150         solutions.
151
152         Documentation belongs to the guides, module POD is just an API
153         reference.
154
155         The main focus of the included documentation should be on examples,
156         no walls of text. (An example for every one or two sentences is a
157         good rule of thumb)
158
159         Everything should be ordered alphabetically if possible, or at least
160         be consistent if not.
161
162         The main source code repository should always be kept in a stable
163         state, use feature branches for actual development.
164
165         Code has to be run through Perl::Tidy with the included .perltidyrc
166         <https://github.com/mojolicious/mojo/blob/main/.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
170         code.
171
172         Comments should be correctly capitalized, and funny if possible,
173         punctuation is optional if it doesn't increase readability.
174
175         No names outside of "Mojolicious.pm".
176
177   Voting Rules
178       The voting process used to make decisions for the project:
179
180         A feature can be added or modified when at least 3 members of the
181         core team have cast a vote in favour, or the BDFL overruled the vote.
182
183         Any core team member may nominate new members, who must then be
184         accepted by a 2/3 majority vote.
185
186         Sebastian has veto rights on all decisions and will resolve issues
187         that could not be decided with a vote.
188

CODE OF CONDUCT

190       Like the technical community as a whole, the Mojolicious team and
191       community is made up of a mixture of professionals and volunteers from
192       all over the world, working on every aspect of the mission - including
193       mentorship, teaching, and connecting people.
194
195       Diversity is one of our huge strengths, but it can also lead to
196       communication issues and unhappiness. To that end, we have a few ground
197       rules that we ask people to adhere to. This code applies equally to
198       founders, mentors and those seeking help and guidance.
199
200       This isn't an exhaustive list of things that you can't do. Rather, take
201       it in the spirit in which it’s intended - a guide to make it easier to
202       enrich all of us and the technical communities in which we participate.
203
204       This code of conduct applies to all spaces managed by the Mojolicious
205       project. This includes IRC, the mailing lists, the issue tracker, and
206       any other forums created by the project team which the community uses
207       for communication. In addition, violations of this code outside these
208       spaces may affect a person's ability to participate within them.
209
210       If you believe someone is violating the code of conduct, we ask that
211       you report it by emailing Joel Berger ("jberger@mojolicious.org") or
212       other members of the team.
213
214Be friendly and patient.
215
216Be welcoming. We strive to be a community that welcomes and supports
217         people of all backgrounds and identities. This includes, but is not
218         limited to members of any race, ethnicity, culture, national origin,
219         colour, immigration status, social and economic class, educational
220         level, sex, sexual orientation, gender identity and expression, age,
221         size, family status, political belief, religion, and mental and
222         physical ability.
223
224Be considerate. Your work will be used by other people, and you in
225         turn will depend on the work of others.  Any decision you take will
226         affect users and colleagues, and you should take those consequences
227         into account when making decisions. Remember that we're a world-wide
228         community, so you might not be communicating in someone else's
229         primary language.
230
231Be respectful. Not all of us will agree all the time, but
232         disagreement is no excuse for poor behavior and poor manners. We
233         might all experience some frustration now and then, but we cannot
234         allow that frustration to turn into a personal attack. It’s important
235         to remember that a community where people feel uncomfortable or
236         threatened is not a productive one. Members of the Mojolicious
237         community should be respectful when dealing with other members as
238         well as with people outside the Mojolicious community.
239
240Be careful in the words that you choose. We are a community of
241         professionals, and we conduct ourselves professionally. Be kind to
242         others. Do not insult or put down other participants. Harassment and
243         other exclusionary behavior aren't acceptable. This includes, but is
244         not limited to:
245
246         • Violent threats or language directed against another person.
247
248         • Discriminatory jokes and language.
249
250         • Posting sexually explicit or violent material.
251
252         • Posting (or threatening to post) other people's personally
253           identifying information ("doxing").
254
255         • Personal insults, especially those using racist or sexist terms.
256
257         • Unwelcome sexual attention.
258
259         • Advocating for, or encouraging, any of the above behavior.
260
261         • Repeated harassment of others. In general, if someone asks you to
262           stop, then stop.
263
264When we disagree, try to understand why. Disagreements, both social
265         and technical, happen all the time and Mojolicious is no exception.
266         It is important that we resolve disagreements and differing views
267         constructively.  Remember that we’re different. The strength of
268         Mojolicious comes from its varied community, people from a wide range
269         of backgrounds. Different people have different perspectives on
270         issues. Being unable to understand why someone holds a viewpoint
271         doesn’t mean that they’re wrong. Don’t forget that it is human to err
272         and blaming each other doesn’t get us anywhere. Instead, focus on
273         helping to resolve issues and learning from mistakes.
274

FORK POLICY

276       The Mojolicious core team believes that there is a lot of value in the
277       entire toolkit being a unified project. Forks drain resources from a
278       project, not just mindshare but also very valuable bug reports and
279       patches, which can have very serious security implications. Therefore
280       we ask that you please not publically fork pieces of the Mojolicious
281       distribution without our consent. As doing so is against our express
282       wishes, individuals who engage in unauthorized forking may be denied
283       from participating in community sponsored spaces.
284
285       For developers considering the use of a forked module, we strongly
286       recommend that you make yourself familiar with its history and track
287       record. While many parts of Mojolicious have been forked in the past,
288       very few forks have been able to keep up with Mojolicious development,
289       and most are missing critical bug fixes.
290

MORE

292       You can continue with Mojolicious::Guides now or take a look at the
293       Mojolicious wiki <https://github.com/mojolicious/mojo/wiki>, which
294       contains a lot more documentation and examples by many different
295       authors.
296

SUPPORT

298       If you have any questions the documentation might not yet answer, don't
299       hesitate to ask in the Forum <https://forum.mojolicious.org> or the
300       official IRC channel "#mojo" on "irc.libera.chat" (chat now!
301       <https://web.libera.chat/#mojo>).
302
303
304
305perl v5.34.0                      2021-07-2M2ojolicious::Guides::Contributing(3)
Impressum