I wanted to share a thought that’s been brewing for a while - something that I believe could add to our experience on Exercism.
The idea is Community Projects. They would be projects that we could collaboratively build. An opportunity to apply our learned skills, work as part of a team, learn from one another, and most importantly, create something meaningful together.
But before anything else, I want to hear from you. It’s important that we shape and document this initiative collectively. I’ve listed some questions below to help guide our discussion:
What kind of projects would you be interested in? What excites you?
Are there any specific languages or technologies you’d like these projects to focus on?
How should we organize project teams? By skill level, language preference, or something else?
What resources or support would you need to contribute effectively to a community project?
How can we ensure that these projects are rewarding and enjoyable for everyone?
These questions are just a starting point, so feel free to share any additional thoughts or ideas and remember, everyone’s input is valuable no matter what stage you’re at in your programming journey.
I believe that Community Projects could add a new dimension to our learning experiences here on Exercism. But it needs community involvement, ideas, and enthusiasm!
Looking forward to hearing your thoughts
Personally, I’d be up for almost anything. I would love to collaborate with others to improve things.
That said, here’s a list of things I would love to collaborate on:
- Adding new exercises to tracks
- Updating tracks to their language’s latest version
- Syncing exercises with the latest data
- Adding new exercises to prob-specs, especially ones that deal with topics that we currently have few exercises for (e.g. dates/time/time zones)
- Adding difficulties to tracks that don’t yet have any difficulties
- Add missing metadata (e.g. missing tags/key features)
- Improve documentation
- Test new tracks
- Test the syllabus of a track
- Test tooling (e.g. test runner output)
- Improve non-track documentation
- Add more “how do I …” guides to the docs
- Ensuring that all tracks have proper CI
- Speeding up CI (e.g. using caching)
- Building test runners
- Building analyzers
- Building representers
- Speeding up tooling (primarily test runners)
- Reducing Docker image size of tooling containers
- Adding new features to
Next month’s #12in23’s featured tracks are an obvious candidate. We can also look at the num exercises/num students ratio (or some alternative measure), to find the tracks most in need of improvement. We could also have a project focus on CI, which would mean focusing on GitHub Actions. Another project could be to reduce Docker image sizes, which means focusing on Docker.
Tough one. I think a mixture of skill levels could work if there is at least one more senior member in the team. Language preference groups might seem like a natural choice, but I would rather organize teams around what they are working on, not the language they’re working on (many tasks don’t require intimate knowledge of a language).
Some team suggestions:
- Practice Exercises
- Concept Exercises
- Syllabus building
- Shared Exercises (basically: prob-specs)
- Test runners
We’d probably need a dedicated section in the forum to allow for public discussions, maybe even private discussions? Other than that, it is of course key to quickly be able to find who is in which teams.
Share the results with the community, e.g. on the Exercism blog, via the Exercism Twitter account or on the forum. It would also help to contact people some time after the project finished to report back how their efforts helped. And maybe some badges or flair?
As for the enjoyable part, personally I would really like to see tangible results. Any PR merged it something I enjoy. And the very fact that one can work together with others is something I (mostly ) enjoy. Combining these two: make sure that any results are shared with the other team members (and the larger community).