Skip to content

Commit fc5af04

Browse files
committed
add Who can Contribute FAQ
1 parent 12ba865 commit fc5af04

File tree

5 files changed

+212
-125
lines changed

5 files changed

+212
-125
lines changed

_config.yml

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -148,7 +148,7 @@ defaults:
148148
path: "_overviews/contribute"
149149
values:
150150
partof: scala-contribution
151-
overview-name: Contributing to Scala
151+
overview-name: Contributing to Scala's OSS Ecosystem
152152
layout: multipage-overview
153153
permalink: "/contribute/:title.html"
154154
-
Lines changed: 31 additions & 27 deletions
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,7 @@
11
{% assign pagetype = page.type %}
22
<div class="content-nav">
33
<div class="inner-box sidebar-toc-wrapper {% if pagetype %}book{% endif %}" style="">
4-
<h5 class="contents">Contents</h5>
4+
<h5 class="contents">Contents</h5>
55
{% if pagetype %}
66
<div class="inner-toc book" id="sidebar-toc">
77
{% else %}
@@ -10,28 +10,32 @@ <h5 class="contents">Contents</h5>
1010
<ul>
1111
{% assign sorted = site[page.collection] | sort: 'num' %}
1212
{% for pg in sorted %}
13-
{% if pg.num == page.num %}
14-
{% capture toc %}
15-
<div id="toc"></div>
16-
{% endcapture %}
17-
{% endif %}
13+
<!-- Do not show the a page with sidebarState == "hidden" -->
14+
{% if pg.sidebarState != "hidden" %}
15+
{% capture toc %}
16+
{% if pg.num == page.num %}
17+
<div id="toc"></div>
18+
{% endif %}
19+
{% endcapture %}
1820

19-
{% if pg.num and (page.partof == pg.partof) %}
20-
{% if page.language %} <!-- if page is a translation, get the translated title -->
21-
{% assign prefix = page.language | prepend: '/' %}
22-
{% assign localizedId = pg.id | prepend: prefix %}
23-
{% for lpg in site.[page.language] %}
24-
{% if lpg.id == localizedId %}
25-
<li><a {% if page.title == lpg.title %}class="active"{% endif %} href="/{{ site.baseurl }}{{ page.language }}{{ pg.url }}">{{ lpg.title }}</a>
26-
{{ toc }}</li>
27-
{% endif %}
28-
{% endfor %}
29-
{% else %} <!-- this must be English, so get the other documents' titles -->
3021

31-
{% if pg.type %} <!-- if a type is set in a document, we add it as a class. Used in Scala book to diff between chapter and section -->
32-
<li class="type-{{ pg.type }}"><a {% if page.num == pg.num %}class="active"{% endif %} href="{{ site.baseurl }}{{ pg.url }}">{{ pg.title }}</a>{{toc}}</li>
33-
{% else %}
34-
<li><a {% if page.num == pg.num %}class="active"{% endif %} href="{{ site.baseurl }}{{ pg.url }}">{{ pg.title }}</a>{{toc}}</li>
22+
{% if pg.num and (page.partof == pg.partof) %}
23+
{% if page.language %} <!-- if page is a translation, get the translated title -->
24+
{% assign prefix = page.language | prepend: '/' %}
25+
{% assign localizedId = pg.id | prepend: prefix %}
26+
{% for lpg in site.[page.language] %}
27+
{% if lpg.id == localizedId %}
28+
<li><a {% if page.title == lpg.title %}class="active"{% endif %} href="/{{ site.baseurl }}{{ page.language }}{{ pg.url }}">{{ lpg.title }}</a>
29+
{{ toc }}</li>
30+
{% endif %}
31+
{% endfor %}
32+
{% else %} <!-- this must be English, so get the other documents' titles -->
33+
34+
{% if pg.type %} <!-- if a type is set in a document, we add it as a class. Used in Scala book to diff between chapter and section -->
35+
<li class="type-{{ pg.type }}"><a {% if page.num == pg.num %}class="active"{% endif %} href="{{ site.baseurl }}{{ pg.url }}">{{ pg.title }}</a>{{toc}}</li>
36+
{% else %}
37+
<li><a {% if page.num == pg.num %}class="active"{% endif %} href="{{ site.baseurl }}{{ pg.url }}">{{ pg.title }}</a>{{toc}}</li>
38+
{% endif %}
3539
{% endif %}
3640
{% endif %}
3741
{% endif %}
@@ -44,8 +48,8 @@ <h5 class="contents">Contents</h5>
4448
{% for l in page.languages %}
4549
{% capture intermediate %}{{ page.url }}{% endcapture %}
4650
{% capture rootTutorialURL %}{{ intermediate | remove_first: '/' }}{% endcapture %}
47-
{% assign lang = site.data.languages[l] %}
48-
<li><a href="{{ site.baseurl }}/{{ l }}/{{ rootTutorialURL }}" class="lang">{{ lang.name }}</a></li>
51+
{% assign lang = site.data.languages[l] %}
52+
<li><a href="{{ site.baseurl }}/{{ l }}/{{ rootTutorialURL }}" class="lang">{{ lang.name }}</a></li>
4953
{% endfor %}
5054
</ul>
5155
{% elsif page.language %}
@@ -59,8 +63,8 @@ <h5 class="contents">Contents</h5>
5963
{% endfor %}
6064
</ul>
6165
{% endif %}
62-
</div>
63-
<hr>
64-
<div class="help-us"><a href="https://github.com/scala/docs.scala-lang/blob/main/{% if page.collection %}{{ page.relative_path }}{% else %}{{ page.path }}{% endif %}"><i class="fa fa-pencil" aria-hidden="true"></i> Problem with this page?<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Please help us fix it!</a></div>
65-
</div>
66+
</div>
67+
<hr>
68+
<div class="help-us"><a href="https://github.com/scala/docs.scala-lang/blob/main/{% if page.collection %}{{ page.relative_path }}{% else %}{{ page.path }}{% endif %}"><i class="fa fa-pencil" aria-hidden="true"></i> Problem with this page?<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Please help us fix it!</a></div>
69+
</div>
6670
</div>
Lines changed: 84 additions & 23 deletions
Original file line numberDiff line numberDiff line change
@@ -1,34 +1,95 @@
11
---
22
title: Contribution FAQ
33
num: 2
4+
sidebarState: hidden # hide from sidebar
45
---
56

6-
## Why contribute?
7-
Open Source Software (OSS) libraries are the flesh on top of the bone structure of the core language itself. They power vast majority of the commercial and non-commercial projects out there alike.
7+
{% capture backButton %}
8+
<p>
9+
<a href="index.html#newcomers-faq">
10+
<i class="fa-solid fa-angle-left"></i>
11+
<span> back</span>
12+
</a>
13+
</p>
14+
{% endcapture %}
815

9-
Contributing is a great way to strengthen your CV. It's also good from the community standpoint: if you do it consistently, with time, you get to know people, and people get to know you. Such a networking can lead to all sorts of opportunities.
16+
## Who Can Contribute To Open Source?
17+
{{backButton}}
18+
- **Everyone:** No matter your skills or background, non-technical or otherwise, there is always
19+
[some way](#how-can-i-contribute-to-open-source) you can contribute to a project.
20+
- **Community organisers:** Communities often form around open source projects, perhaps you would like to help grow a
21+
community.
22+
- **Scala learners:** If you are at the start of your Scala journey, once you have a basic understanding of everyday
23+
Scala programming, becoming familiar with open source code will show you new techniques, helping you to improve
24+
your expertise.
25+
- **Got a cool idea?** Perhaps you have gained confidence in your skills and are looking to give back to the community,
26+
start a new project that fills that perfect niche, or maybe is the life-changing tool everyone never knew they needed.
27+
{{backButton}}
1028

11-
Contributing to open source libraries is a great way to learn Scala. A standard practice in open source software is code review – which means you are going to get expert feedback about your code. Learning together with feedback from competent people is much faster than making all the mistakes and figuring them out alone.
12-
13-
Finally, by contributing you improve the projects you are using yourself. Being a part of a maintainer team can be a source of personal satisfaction, and working on an innovative library can be a lot of fun.
29+
## Why Should I Contribute to Open Source?
30+
{{backButton}}
31+
- **The world is built on OSS:**
32+
Open Source Software (OSS) libraries are the flesh on top of the bone structure of the core language itself.
33+
They power vast majority of the commercial and non-commercial projects out there alike.
34+
- **Become more visible:**
35+
Contributing is a great way to strengthen your CV. It's also good from the community standpoint: if you do it
36+
consistently, with time, you get to know people, and people get to know you. Such a networking can lead to all
37+
sorts of opportunities.
38+
- **Learn by doing something practical:** Contributing to open source libraries is a great way to learn Scala.
39+
A standard practice in open source software is code review – which means you are going to get expert feedback
40+
about your code. Learning together with feedback from competent people is much faster than making all the
41+
mistakes and figuring them out alone.
42+
- **Have fun and help out:** Finally, by contributing you improve the projects you are using yourself. Being a part of
43+
a maintainer team can be a source of personal satisfaction, and working on an innovative library can be a lot of fun.
1444

1545
The above benefits are something good to achieve regardless of your level of experience.
46+
{{backButton}}
1647

17-
## Ways to contribute
18-
Often, when people are talking about contributing to OSS, they think of fixing issues or implementing new features. While a valuable help, these are far from the only ways you can contribute. Following are some other ways you should consider:
19-
20-
- **Documentation**. Often it is outdated, incomplete, erroneous. If you see a way to improve a documentation for a project you are using, you should consider finding out if the the documentation is hosted on github in which case you can submit a pull request to fix it.
21-
- **Issue minimization**. Many of the reported issues found on a project's issue tracker are hard to reproduce and the reproduction involves a lot of code. However, it is very frequently the case that only a tiny fraction of the reported setup and code is necessary to reproduce the issue. More reproduction code means more work for the maintainer to fix an issue. You can help them considerably by investigating already reported issues in an attempt to make their reproduction as small as possible.
22-
- **Issue reproduction**. Some reported issues lack reproduction instructions at all! If a maintainer can't reproduce it, they won't be able to fix it. Pinning down exact conditions that make an issue manifest is another way to contribute.
23-
- **Open-source your own project**. Do you have a pet project you are working on? Is there anything you're working on at work parts of which are generic enough that you can share them online? Open-sourcing your work is a way to solve a problem for other programmers who may also have it. If you are interested in going open-source, here is an excellent guide on how to get started: [https://docs.scala-lang.org/overviews/contributors/index.html](https://docs.scala-lang.org/overviews/contributors/index.html).
24-
25-
## Choosing Where to Contribute
26-
The best project to contribute to is the one that you are using yourself. Take an inventory of your work and hobby projects: what OSS libraries do they use? Have you ever encountered bugs in them? Or have you ever wanted a certain feature implemented? Pick a bug and a feature and commit to fixing or implementing it. Clone the project you are trying to improve, figure out how the tests are written and run there. Write a test for your feature or bug.
27-
28-
While implementing or fixing the feature, it is important to ask for help early when you feel stuck. Even if your code doesn't work, don't hesitate to submit a pull request while stating clearly that you need help. More information about the guidelines of good contribution you can find in the [talk by Seth Tisue](https://youtu.be/DTUpSTrnI-0) on how to be a good contributor.
29-
30-
If you can't immediately see a bug or feature that you personally would like to use, a good idea is to learn a new Scala library, push it to its limits and see where it can be improved. You can find popular Scala libraries on [Scaladex](https://index.scala-lang.org/awesome). It's not a good idea to just pick a random library from the list and try fixing random bugs in it: you need to really spend the time with it to start seeing what's important and how to improve it right. So if you are passionate about contributing but don't see any immediate contribution options that would attract you, this should be your cue that it is time to expand your horizons and learn something new.
31-
32-
There is also an option to contribute to the Scala 3 compiler itself. The Scala Center runs the Compiler Academy project to onboard and educate new people in the Scala 3 compiler. One of the Compiler Academy projects is an Issue Spree – an event that takes place every 3 weeks where people fix Scala 3 compiler issues in pair programming sessions while learning the compiler together. You can apply for the Spree participation by [filling the form](https://forms.gle/DfoSuHFm3T6MA3L59).
48+
## How Can I Contribute to Open Source?
49+
{{backButton}}
50+
- **Documentation:** Often it is outdated, incomplete, or with mistakes. If you see a way to improve the
51+
documentation for a project you are using, you should consider if the project is accepting contributions,
52+
in which case you can submit a pull request to include your changes.
53+
- **Building community:** All projects have users, and users come together to form communities. Managing and growing
54+
communities takes coordination and effort.
55+
- **Issue minimization:** Many of the reported issues found on a project's issue tracker are hard to reproduce and the
56+
reproduction involves a lot of code. However, it is very frequently the case that only a tiny fraction of the
57+
reported setup and code is necessary to reproduce the issue. More reproduction code means more work for the
58+
maintainer to fix an issue. You can help them considerably by investigating already reported issues in an attempt
59+
to make their reproduction as small as possible.
60+
- **Issue reproduction:** Some reported issues lack reproduction instructions at all! If a maintainer can't
61+
reproduce it, they won't be able to fix it. Pinning down exact conditions that make an issue manifest is another
62+
way to contribute.
63+
- **Fixing a bug:** If you are comfortable with reproducing an issue, perhaps you would like to trace its
64+
origin in code, and even try to build a solution that prevents the issue from occurring.
65+
- **Adding a feature:** Sometimes projects maintain lists of planned or requested features, and you could assist
66+
in bringing those ideas to reality. Although please beware - you should only do this if the core maintainers
67+
have already approved the idea for the feature, they are not obligated to accept your additions!
68+
- **Feel free to ask for help:** While implementing or fixing the feature, it is important to ask for help early
69+
when you feel stuck. Even if your code doesn't work, don't hesitate to submit a pull request while stating clearly
70+
that you need help. More information about the guidelines of good contribution you can find in the
71+
[talk by Seth Tisue](https://youtu.be/DTUpSTrnI-0) on how to be a good contributor.
72+
- **Open-source your own project:** Do you have a pet project you are working on? Is there anything you're working
73+
on at work parts of which are generic enough that you can share them online? Open-sourcing your work is a way to
74+
solve a problem for other programmers who may also have it. If you are interested in going open-source, the
75+
[Library Author's Guide](https://docs.scala-lang.org/overviews/contributors/index.html) is an
76+
excellent resource on how to get started.
77+
{{backButton}}
3378

34-
You may want to keep an eye on the Scala Center [LinkedIn](https://www.linkedin.com/company/scala-center/) and [Twitter](https://twitter.com/scala_lang) to stay up-to-date with the possible contribution opportunities. For example, every year, the Scala Center participates in the Google Summer of Code program where you are paid to work on open source Scala projects over the course of summer.
79+
## How Do I Choose Where To Contribute?
80+
{{backButton}}
81+
- **Ask yourself, what am I using?** The best project to contribute to is the one that you are using yourself.
82+
Take an inventory of your work and hobby projects: what OSS libraries do they use? Have you ever encountered bugs in
83+
them? Or have you ever wanted a certain feature implemented? Pick a bug and a feature and commit to fixing or
84+
implementing it. Clone the project you are trying to improve, figure out how the tests are written and run there.
85+
Write a test for your feature or bug.
86+
- **Try out an awesome library:** [Scaladex](https://index.scala-lang.org/awesome) is a great place to find new
87+
libraries. If you are passionate about contributing but don't see any attractive opportunities to contribute
88+
to projects you are already using, try learning a new Scala library, push it to its limits and see where it can
89+
be improved. For best results, spend a lot of time with the library to get a feel of what's important
90+
and what can improve.
91+
- **Lookout for announcements:** You may want to keep an eye on the Scala Center
92+
[LinkedIn](https://www.linkedin.com/company/scala-center/) and [Twitter](https://twitter.com/scala_lang) to stay up-to-date with the possible contribution opportunities. For example, every year, the Scala Center participates
93+
in the Google Summer of Code program where you are paid to work on open source Scala projects over the course
94+
of summer.
95+
{{backButton}}
Lines changed: 68 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,68 @@
1+
---
2+
title: Grab Bag of Stuff
3+
num: 15
4+
---
5+
6+
### Why You Should Contribute To Scala
7+
The Scala programming language is an open source project with a very
8+
diverse community, where people from all over the world contribute their work,
9+
with everyone benefiting from friendly help and advice, and
10+
kindly helping others in return. So why not join the Scala community and help
11+
everyone make things better?
12+
13+
**What Can I Do?**
14+
That depends on what you want to contribute. Below are some getting started resources for different contribution domains. Please read all the documentation and follow all the links from the topic pages below before attempting to contribute, as many of the questions you have will already be answered.
15+
16+
### Reporting bugs
17+
18+
See our [bug reporting guide][bug-reporting-guide] to learn
19+
how to efficiently report a bug.
20+
21+
### Contribute
22+
23+
Coordination of contribution efforts takes place on
24+
[Scala Contributors](https://contributors.scala-lang.org/).
25+
26+
{% include column-list-of-items.html collection=site.contribute_resources %}
27+
28+
### Guidelines
29+
30+
When contributing, please follow:
31+
32+
* The [Scala Code of Conduct](https://scala-lang.org/conduct/)
33+
* The [Inclusive Language Guide][inclusive-language-guide]
34+
35+
### Community Tickets
36+
37+
All issues can be found in the [Scala bug tracker](https://github.com/scala/bug), or the [Scala 3 issue tracker](https://github.com/lampepfl/dotty/issues). Most issues are labeled
38+
to make it easier to find issues you are interested in.
39+
40+
### Tools and Libraries
41+
42+
The Scala ecosystem includes a great many diverse open-source projects
43+
with their own maintainers and community of contributors. Helping out
44+
one of these projects is another way to help Scala. Consider lending
45+
on a hand on a project you're already using. Or, to find out about
46+
other projects, see the
47+
[Libraries and Tools section](https://scala-lang.org/community/#community-libraries-and-tools)
48+
on our Community page.
49+
50+
### Scala Community Build
51+
52+
The Scala community build enables the Scala compiler team
53+
to build and test a corpus of
54+
Scala open source projects
55+
against development versions of the Scala compiler and standard
56+
library in order to discover regressions prior to releases.
57+
The build uses Lightbend's
58+
[dbuild](https://github.com/typesafehub/dbuild) tool,
59+
which leverages [sbt](https://www.scala-sbt.org).
60+
61+
If you're the maintainer -- or just an interested user! -- of an
62+
open-source Scala library or tool, please visit the
63+
[community build documentation](https://github.com/scala/community-build/wiki)
64+
for guidelines on what projects are suitable for the community build
65+
and how projects can be added.
66+
67+
[bug-reporting-guide]: {% link _overviews/contribute/bug-reporting-guide.md %}
68+
[inclusive-language-guide]: {% link _overviews/contribute/inclusive-language-guide.md %}

0 commit comments

Comments
 (0)