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

PERL FOUNDATION BOYCOTT

13       Due to a lack of transparency and accountability of and by the board,
14       we are boycotting The Perl Foundation. Recent events regarding the
15       Community Affairs Team have unfortunately shown that it does not
16       represent values such as openness and inclusion to the same extent we
17       do anymore. The Mojolicious Project and its core team will therefore be
18       withdrawing from Foundation involvement and Foundation-run activities,
19       and we ask you to cease personal donations to the Foundation until it
20       has been reformed.
21
22       Members of the Mojolicious community are encouraged to politely, but
23       firmly, advocate for the same values in a way that they see fit, while
24       not violating the Mojolicious Code of Conduct.
25

REPORTING BUGS

27       We use the GitHub issue tracker
28       <https://github.com/mojolicious/mojo/issues>,  so you'll need to create
29       a (free) GitHub account to be able to submit issues, comments and pull
30       requests.
31
32       First of all, make sure you are using the latest version of
33       Mojolicious, it is quite likely that your bug has already been fixed.
34       If that doesn't help, take a look at the list of currently open issues,
35       perhaps it has already been reported by someone else and you can just
36       add a comment confirming it.
37
38       If it hasn't been reported yet, try to prepare a test case
39       demonstrating the bug, you are not expected to fix it yourself, but
40       you'll have to make sure the developers can replicate your problem.
41       Sending in your whole application generally does more harm than good,
42       the "t" directory of this distribution has many good examples for how
43       to do it right. Writing a test is usually the hardest part of fixing a
44       bug, so the better your test case the faster it can be fixed. ;)
45
46       And don't forget to add a descriptive title and text, when you create a
47       new issue. If your issue does not contain enough information or is
48       unintelligible, it might get closed pretty quickly. But don't be
49       disheartened, if there's new activity it will get reopened just as
50       quickly.
51
52   Reporting security issues
53       Please report security issues directly to Sebastian Riedel
54       ("kraih@mojolicious.org"), and give us a few days to develop and
55       release a proper fix.
56

RESOLVING ISSUES

58       There are many ways in which you can help us resolve existing issues on
59       the GitHub issue tracker <https://github.com/mojolicious/mojo/issues>.
60
61       Can you replicate the problem on your computer? Add a comment saying
62       that you're seeing the same. Perhaps you can provide additional
63       information that will make it easier for others to replicate the
64       problem, maybe even contribute a better test case.
65
66       And for all code contributions we very much appreciate additional
67       testing and code review, just add a comment to show your approval or to
68       point out flaws that need to be addressed.
69

CONTRIBUTING DOCUMENTATION

71       One of the easiest ways to contribute to Mojolicious is through
72       documentation improvements. While the Mojolicious::Guides are carefully
73       curated by the core team, everybody with a (free) GitHub account can
74       make changes and add new information to the Mojolicious wiki
75       <https://github.com/mojolicious/mojo/wiki>.
76
77       Pull requests with additions or changes to the documentation included
78       in the Mojolicious distribution follow the same rules as code
79       contributions. Please don't send pull requests for overly simplistic
80       changes, such as the addition of a comma or semicolon.
81

CONTRIBUTING CODE

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

CODE OF CONDUCT

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

FORK POLICY

290       The Mojolicious core team believes that there is a lot of value in the
291       entire toolkit being a unified project. Forks drain resources from a
292       project, not just mindshare but also very valuable bug reports and
293       patches, which can have very serious security implications. Therefore
294       we ask that you please not publically fork pieces of the Mojolicious
295       distribution without our consent. As doing so is against our express
296       wishes, individuals who engage in unauthorized forking may be denied
297       from participating in community sponsored spaces.
298
299       For developers considering the use of a forked module, we strongly
300       recommend that you make yourself familiar with its history and track
301       record. While many parts of Mojolicious have been forked in the past,
302       very few forks have been able to keep up with Mojolicious development,
303       and most are missing critical bug fixes.
304

MORE

306       You can continue with Mojolicious::Guides now or take a look at the
307       Mojolicious wiki <https://github.com/mojolicious/mojo/wiki>, which
308       contains a lot more documentation and examples by many different
309       authors.
310

SUPPORT

312       If you have any questions the documentation might not yet answer, don't
313       hesitate to ask in the Forum <https://forum.mojolicious.org>, on Matrix
314       <https://matrix.to/#/#mojo:matrix.org>, or IRC
315       <https://web.libera.chat/#mojo>.
316
317
318
319perl v5.36.0                      2023-01-2M0ojolicious::Guides::Contributing(3)
Impressum