Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

[wip] Contribution for beginners #3604

Closed

Conversation

josh-works
Copy link

@josh-works josh-works commented Aug 1, 2017

Resolves #3252

Per @jtigger's suggestion for a more detailed, beginner-friendly guide to contributions, I've taken a stab at writing that out.

I'm not positive of protocol here with the "Work In Progress" tag, but this is not yet ready to be merged, though I would like feedback on it.

I'm documenting some of this conversation in the tutorial, and will be snagging some screenshots as I go.

Things I will do before removing the WIP tag

  • Squash this whole thing into one commit
  • Add some screenshots of this conversation process
  • Link to this guide that explains linking issues and PRs

Is there anything else I should plan on doing?

Also, I took a stab at the formatting for this guide, and after looking through this example "launch checklist", I realize I can style this contribution guide to be much more similar to that post.

Would this be an appropriate "refactor", @kytrinyx, @jtigger, or @tejasbubane?

Oh, PS: First time contributor here, not just to Exercism but OSS as a whole, so I'm happy to hear feedback and guidance.

Copy link
Member

@kytrinyx kytrinyx left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

I really like where this is going. I have a bunch of thoughts that I've added throughout. The biggest thing is that with the redesign I'd like to refocus the contributing guide away from the website and towards other parts of the project, maybe language tracks.

Also, I would love for it to live in the docs repository. It might make a good README.md in the contributing directory.

@@ -0,0 +1,245 @@
## Contributing to Exercism

Open source contributions can be intimidating! As you're looking around, wondering where to dive in, you might think everyone _else_ knows what's going on in the code base, or has better grasp of the language, or seems to be well known around the project.
Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

I love this opening. It hits people right where they might be hurting.


As a total beginner, where do you begin?

Right here. This guide will walk you through your first open source contribution.
Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

And this is a great continuation of that opening. It's super welcoming and friendly.


It's going to target the smallest possible fix (improving documentation), as a "bridge" to more complex contributions later.

First, go take a look at [Contributing to Exercism.io](https://github.com/exercism/exercism.io/blob/master/CONTRIBUTING.md#submitting-code-changes)
Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

We've been slowly moving all of our project-wide documentation into the http://github.com/exercism/docs repository. It is still a bit of a mess, but there's a lot of good content, and some of it is even organized fairly well.

I'd love to have this basic guide be about contributing to Exercism as a whole, and maybe use one of the language track repositories as the example instead of the main website repository (long story, but we're doing a ginormous rewrite/redesign, and the website repo is going to go away sometime in the next couple of months).

If we go down the route of having the guide be about the language tracks, then I think maybe we could link to https://github.com/exercism/docs/tree/master/contributing-to-language-tracks instead of the site contributing guide. Or there might be another document that is better, but I think the contributing to tracks one is a pretty good starting point.

Copy link
Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Awesome. I'll take a crack at an update later this week. Thanks, @kytrinyx!


First, go take a look at [Contributing to Exercism.io](https://github.com/exercism/exercism.io/blob/master/CONTRIBUTING.md#submitting-code-changes)

If not all of that makes sense to you, keep reading. This is for you.
Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

❤️


## Table of Contents

- [Find the right contribution](#find-the-right-contribution)
Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

I would say "Finding" here to match format of all the other bullet points.

- [Find the right contribution](#find-the-right-contribution)
- [Claiming that contribution](#claiming-that-contribution)
- [Working on the code](#working-on-the-code)
- [Submitting your contribution](#submitting-your-contribution)
Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Throughout the guide, it might make sense to point to other documents in the docs repo, as "deep dives" on a subject.


Different projects have different ways of "claiming" an issue, but for Exercism, just drop a comment in there, [like so](https://github.com/exercism/exercism.io/issues/3252#issuecomment-312428804).

If it makes sense, someone from the project will jump in, offer some guidance, and (generally) be pleased with your offer.
Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

So true.


# Working on the code

OK, you've got an issue, you've got approval to work on it. Now's the fun part.
Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

I would say that you totally don't need approval. In fact... it's such a huge relief when people jump in and get started (even just a little bit) without asking for approval.

The only caveat is that there's a ton of issues that go stale and the maintainers sometimes lose track of what's open, and then a bunch of stuff turns out to be out of date. So as part of claiming, I would totally recommend asking if the issue is still relevant. If it is you'll get a quick thumbs up, and if not, the maintainers will generally add more context.

Copy link
Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

My favorite phrase is

Unless I hear differently...

source

A comment to the tune of

Unless I hear differently, I'll start working on this issue...

Would be perfect. I'll update this to a "forgiveness, not permission" workflow.

Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Yeah, that's awesome!


OK, you've got an issue, you've got approval to work on it. Now's the fun part.

Now you need to get Exercism running on your local machine.
Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Ahhh. OK, so this bit is going to change a LOT and I have no idea what it's going to look like yet, unfortunately. I'll know more in a few weeks. If we go with a "tracks" guide, then that's easier to define now (go look at their readme, and if they have one, the contributing guide, for how to get the exercises running locally).

Copy link
Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Perfect. I'll drop a note to this extent in the guide, and even add something like

by the time you read this, the setup steps might have changed quite a bit. Exercism is in the middle of some huge updates. If this guide seems out of date, and you've read this far, perhaps updating this out-of-date section of the guide could be your first contribution

Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

💖 that's perfect

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

I believe Docker can do that (setting a local development environment) without pain


# merge your changes into your master branch
$ git checkout your_working_branch
$ git rebase -i your_working_branch master
Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

This is kind of technical, but merging is not rebasing. If you could describe all of this without saying "merge" that would make people who are good at Git twitch a lot less.

Copy link
Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

oof, yeah. I originally described a merge workflow, and then looked at your contribution guidelines, saw "rebase workflow", and forgot to edit the comment on line 172.

Thanks for calling this out.

Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

That makes sense :-)

@kytrinyx
Copy link
Member

kytrinyx commented Aug 2, 2017

I'm not positive of protocol here with the "Work In Progress" tag, but this is not yet ready to be merged, though I would like feedback on it.

Letting us know both the WIP part and the "wants feedback" part is very helpful—you did this just right.

Oh, PS: First time contributor here, not just to Exercism but OSS as a whole, so I'm happy to hear feedback and guidance.

✨ 💛 🌻 💛 ✨ Welcome ✨ 💛 🌻 💛 ✨

Thanks so much for taking this on. It's very, very needed!

Copy link

@ilya-khadykin ilya-khadykin left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Good work, I liked it!


# Find the right contribution

As mentioned in the contribution guideline, take a look at the [open issues](https://github.com/exercism/exercism.io/issues). There's a lot here, so you might want to filter by `label:"good first patch"` [(like this)](https://github.com/exercism/exercism.io/labels/good%20first%20patch).

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

This label helped me find a suitable issue to work on. Not sure about the link to exercism.io repo after reading #r130772596.
Maybe it should lead to problem-specifications as it has more issues to work on at the moment

Correct me if I misunderstood something

Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

I would link to the good first patch label on the exercism org in general here:

https://github.com/search?utf8=%E2%9C%93&q=org%3Aexercism+is%3Aissue+is%3Aopen+label%3A%22good+first+patch%22&type=


OK, you've got an issue, you've got approval to work on it. Now's the fun part.

Now you need to get Exercism running on your local machine.

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

I believe Docker can do that (setting a local development environment) without pain


Make sure to select `exercism/exercism.io`, with `master` as the `base fork`, on the left, and `your_username/exercism.io` as the `head fork` on the right. You can choose to compare whichever branch has your changes on it, either `master` or a different branch you worked on.

If you need to collect feedback on your work, it is convention to label your pull request as a "work in progress", or "wip".

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Good point, thanks!

- [Rewriting history](https://www.atlassian.com/git/tutorials/rewriting-history)
- [Merging vs. Rebasing](https://www.atlassian.com/git/tutorials/merging-vs-rebasing)


Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Maybe here is a good place to mention Gitter chat since these git magic can be overwhelming for newcomers not familiar with it? Something like this:

Don't forget: If you got stuck or something went wrong you can always ask for help in [our support chat (Gitter)](https://gitter.im/exercism/support)

What do you think?

Copy link
Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

100% agreed. I'm heading out of town for a few days (leaving in 30 min!) so I'll update and integrate your feedback when I return.

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Have a good weekend!

This is perfect. Now, go update your current repo with the 'upstream' repo, just run

```shell
git pull upstream master

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

git remote update
git checkout upstream/master -b "my_new_branch_based_on_upstream
_master"

Copy link
Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

oh, Docker... can you link me to a Docker guide? I've never actually used it, so it feels like it's more work than just forking/cloning a repo, but that's just my perception.

Right on w/the git commands, too. 👍

Copy link

@ilya-khadykin ilya-khadykin Aug 5, 2017

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Here it is: Docker and exercism.io (I haven't tried it yet myself).
And I don't think that it's required to cover Docker in this doc, it was just a quick thought.

@Insti
Copy link

Insti commented Oct 4, 2017

Hi @josh-works, do you still want to continue working on this?

@stale
Copy link

stale bot commented Apr 2, 2018

This issue has been automatically marked as stale because it has not had recent activity. It will be closed if no further activity occurs. Thank you for your contributions.

@stale stale bot added the stale label Apr 2, 2018
@stale stale bot closed this Apr 9, 2018
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

Successfully merging this pull request may close these issues.

None yet

4 participants