osscommunity / starters

discussions around helping new open source contributors
https://github.com/osscommunity/starters/issues
Creative Commons Zero v1.0 Universal
24 stars 2 forks source link

What is this for? #1

Open afeld opened 9 years ago

afeld commented 9 years ago

This org came out of tweet from @trek on the Twitters:

https://twitter.com/trek/status/555385216651776001

What do we want this org to be?

/cc @sindresorhus

sindresorhus commented 9 years ago

Good idea! I've been wanting to do something around making it easier for people to get started in OSS and/or contribute to new projects.

One misconception I feel we have today is that you can mostly only contribute code. That couldn't be more wrong. Maybe this place could outline various ways to contribute based on different skills.

What are your thoughts around this org?

trek commented 9 years ago

:+1: on contribution don't just need to be code.

afeld commented 9 years ago

Existing things around this space (and the links that stem out from them):

My big questions are:

As one example, I remember hearing that the MongoDB issue tracker has a label neweng, meaning issues that are small and a good entry point for new contributors to the project.

trek commented 9 years ago

One major reason I think the "help wanted" label idea hasn't panned out is just knowing someone wants help is rarely actionable.

I've seen this play out in 2 ways

Owner/Collaborators forget they keep a lot of implicit information about a project in their head. For them there are a few obvious paths forward, but to someone new, a "small task" actually looks like this:

  1. Read entire project and internalize all its style and unspoken organization
  2. Issue "small" PR

Documenting a "project's structure" to help new people sounds like a good idea, but ossifies really quickly as projects naturally change over time.

I've been playing with first investigating an issue until I understand a way forward and then listing what I think the smaller stages a successful PR would be: https://github.com/trek/beautiful-open/issues/256, https://github.com/trek/ember-api/issues/15

At this point I understand the problem enough to offer guidance to a new contributor. The instinct I have to fight is the feeling that "well, I can just do it myself now!" Fantastic for short term velocity, but long-term less so.

As they say

If you want to go quickly, go alone. If you want to go far, go together.

FrancescaK commented 9 years ago

A good resource is the Community Kit I created while I was at MongoDB:

https://github.com/FrancescaK/MongoDB_Community_Kit

It outlines a number of ways someone can be involved in FOSS. One of the best things people can do is contribute via a 'neweng' label, as Aidan pointed out, but offering support on forums or IRC and contributing to documentation is also equally valuable. It's not all about contributing code. Contributing your skills in any capacity is a very powerful thing in FOSS.

botimer commented 9 years ago

I support all of these goals and steps. This is something that has been an important challenge to me over the last ten years of open source engagement. Working hands-on with a volunteer is great but isn't always practical.

I think the middle ground approach of spiking far enough to be reasonably confident in an approach, yet leaving the proof to the reader can be an effective one. It is much like designing a good exercise or workshop for general teaching. Note that the trade-off is similar: some up-front investment by someone more experienced to illuminate an on-ramp does not solve an immediate problem but gives an opportunity for someone else to step in and solve it and similar problems. This is especially important in community building, where this exchange is not just downstream learning, but social as well.

My choice of terms above is not arbitrary. I tend to think of this with the same analogies as I use with specific software problems. If I build a good tool for moving boxes around (a ramp, maybe), it gives me some mechanical advantage. If I build a good script for generating a manifest and compressing files in a package, it gives me leverage on that type of problem. If I build a good on-ramp for extending a software community, it gives me a way to include more people to help solve more problems while giving those people a way to get there without some generational jump in their own expertise.

Any of this tool building is a short-term investment with the goal of improving the long-term condition of the project. In a big or interesting enough project, building good, simple tools usually repays the investment pretty quickly.

ef4 commented 9 years ago

Read entire project and internalize all its style and unspoken organization

Reading is definitely one of the key gaps between beginners and experienced people. I don't think it's quite as extreme as needing to read an entire project, but the sentiment is correct: veterans can read and navigate unfamiliar codebases quickly (often zooming in on the parts that are relevant without having to read the whole thing), so to them the reading is not a big deal. Newbies lack the practice and cultural exposure, so to them it's much harder.

If this project actually starts generating commits, it would become a valuable source of practical exercises. Each issue is a problem statement plus a real codebase. Each solved issue also includes an accepted answer. Students can gain practical reading experience just by going through all the solved issues and reading them well enough to understand what's going on.

Read enough small successful PRs against a project and pretty soon it stops being magic, you absorb the patterns, and you gain the confidence to submit your own.

daguar commented 9 years ago

For people relatively new to programming/open source, one thing that has jumped to my mind as super valuable and approachable is making the README work for you. For example:

vanhalt commented 9 years ago

+1 @daguar

My idea would be to promote a "Project Starter Kit" for every project containing:

frozzare commented 9 years ago

I think is great to start a org with good documents about how to get started to contribute to projects. :+1:

kytrinyx commented 9 years ago

Another resource that has been useful for me as I try to make my project more accessible is OpenHatch: http://campus.openhatch.org/projects.html, which helps guide projects in developing a good onboarding experience for new contributors.

ahmadnassri commented 8 years ago

adding TODO Group can't seem to find peeps behind it, but seems very well aligned with this initiative.