1
0
Fork 0
mirror of https://we.phorge.it/source/phorge.git synced 2024-12-24 22:40:55 +01:00

Update contributor documentation

Summary:
It's fairly common for people to show up and be interested in finding easy stuff to work on. This stuff basically doesn't exist and probably never will: it doesn't make much sense to deliberately leave easy bugs broken just because someone might show up and want to fix a couple of easy bugs.

Almost all of the work that's valuable to us requires a depth or bredth of context which can't be acquired in a few hours here and there, and probably always will. I think it also always //should//, in that as long as we continue refactoring and clearing technical debt aggressively and having solid static analysis support tools, we should never have a large backlog of human-intelligence codebase tasks. The closest we've ever come were probably `pht()` and `phutil_tag()`, which both have a lot of subtleties and we mostly automated `phutil_tag()` anyway. These tasks are also //incredibly boring// to write and review.

So, accept this as a reality and realign the contributor documentation to try to deal with this case:

  - Set expectations about starter tasks not existing and throwing a couple of hours at the project writing code being a hard path.
  - Suggest non-code contributions which anyone can do.
  - Segue into code contributions with context and suggestions.

Test Plan: Generated and read documentation.

Reviewers: btrahan, chad

Reviewed By: chad

Subscribers: epriestley

Differential Revision: https://secure.phabricator.com/D8872
This commit is contained in:
epriestley 2014-04-26 22:30:19 -07:00
parent fc74ad4443
commit 2823547f2c

View file

@ -3,43 +3,110 @@
Introduction to contributing to Phabricator, Arcanist and libphutil. Introduction to contributing to Phabricator, Arcanist and libphutil.
= You Are Awesome = Overview
========
Contributors are awesome. If you're thinking about contributing, that means If you'd like to contribute to Phabricator, this document can guide you though
you're thinking about being awesome. That already makes you a little bit ways you can help improve the project.
awesome. But if you contribute you'll definitely be really, seriously awesome.
Writing code is valuable, but often isn't the best or easiest way to contribute.
In most cases we are pretty good at fixing easy stuff quickly, so we don't have
a big pile of easy stuff sitting around waiting for new contributors.
This can make it difficult to contribute code if you only have a little bit of
time to spend since most of the work that needs to be done usually requires some
heavy lifting.
Without writing any code, learning the whole codebase, making a big time
commitment, or having to touch PHP, here are some ways you can materially
contribute to Phabricator:
- Send us an email or drop by IRC just to say "thanks". A big part of the
reason we build this software is to help people solve problems, and knowing
that our efforts are appreciated is really rewarding. You can find ways to
get in touch in @{article:Give Feedback! Get Support!}
- Recommend Phabricator to people who you think might find it useful. Our
most powerful growth channel is word of mouth, and mentioning or tweeting
about Phabricator helps the project grow. If writing a tweet sounds like
too much work, you can use one of these form tweets written by our PR
department to quickly and easily shill on our behalf. Hail corporate!
> Phabricator seems like it's pretty okay
> I am not being paid to mention Phabricator in this extemporaneous, completely organic tweet
> Phabricator is objectively the best thing. Source: I am a certified, internationally recognized expert.
- Report bugs and request features. We may not always be able to fix or build
things right away, but knowing about issues users are encountering or
features they'd like to see improves our ability to plan and prioritize.
For ways to do this, see @{article:Give Feedback! Get Support!}
- Give us feedback on planned features. Most of what we'll build in the next
6-12 months currently exists on the [[ Roadmap ]] or in Maniphest. Telling
us about use cases you have can help us build better products when the time
comes to write the code.
- Hang out in IRC, and maybe answer a question or two. IRC is a completely
legit place for serious hackers to hang out anyway, but while you're there
you might see someone ask a question that you know the answer to. Helping
them out (or pointing them to the right documentation) is a big help to us.
You can find details about the IRC channel in
@{article:Give Feedback! Get Support!}
If all of this sounds nice but you really just want to write some code, that's
awesome too. The rest of this document (and the other articles in this section
of the documentation) can help you get started.
= Legal Stuff = = Legal Stuff =
Before we can accept contributions, you need to submit a super fine and fancy Before we can accept source code contributions, you need to submit a super fine
legal document called a Facebook Contributor License Agreement, which you can and fancy legal document called a Facebook Contributor License Agreement, which
find here: you can find here:
https://developers.facebook.com/opensource/cla https://developers.facebook.com/opensource/cla
= Not Sure Where To Get Started? = = Not Sure Where To Get Started? =
If you want to contribute but aren't sure how (or want to try submitting a small Because we're usually quick to fix easy bugs and issues, we often don't have a
patch before you build something bigger) you can search the Phabricator very good backlog of starter tasks.
development install for open tasks (these are pretty up-to-date) or come find
us in IRC and ask for some pointers. You can try searching in Maniphest for tasks tagged with "Easy", which might
have something, but a lot of time this list is small and the tasks on it aren't
very fun or interesting even if they aren't technically too difficult.
In general, the best way to contribute is to come to us with a problem you
encountered or something you're interested in building, and then work with us
to find a solution to it or a plan to build it. We can help turn a hacky patch
into something that's upstreamable, and you'll get a fix or feature you want.
You can also look though the rest of the open tasks for something more
substantive that you're interested in. This will give you a better chance of
finding something that's relevant to you, but many tasks are large or blocked
by other large tasks.
If you do find something, feel free to leave a comment like "I'm interested in
working on this, is this something I could reasonably help with?". We're happy
to walk through things, break larger tasks down into more detail, provide
pointers to similar changes and the right places in the codebase to get started,
and generally figure out how to attack a problem.
You can also just come find us in IRC and ask how to get started.
= Submitting Patches = = Submitting Patches =
To submit patches against libphutil, Arcanist or Phabricator, create a commit To submit patches against libphutil, Arcanist or Phabricator, create a commit
and use ##arc## to send it for review (probably with ##epriestley## as a and use `arc` to send it for review (probably with `epriestley` as a reviewer):
reviewer):
$ arc diff $ arc diff
When your change is accepted, send a pull request on GitHub. (You can also You can also submit a pull request on GitHub, but Differential is strongly
just submit a pull request, but Differential is preferred for nontrivial preferred.
changes.)
= Suggested Reading = = Suggested Reading =
You should read the relevant coding convention documents before you submit a You should read the relevant coding convention documents before you submit a
change and make sure you're following the project guidelines: change. If you're a new contributor, you don't need to worry about this too
much. Just try to make your code look similar to the code around it, and we
can help you through the details during review.
- @{article:General Coding Standards} (for all languages) - @{article:General Coding Standards} (for all languages)
- @{article:PHP Coding Standards} (for PHP) - @{article:PHP Coding Standards} (for PHP)