-
-
Notifications
You must be signed in to change notification settings - Fork 1k
Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
This is a very high-level overview of the project, intended as a starting point for people who think they might want to contribute.
- Loading branch information
Katrina Owen
committed
Feb 11, 2017
1 parent
3517875
commit c014204
Showing
1 changed file
with
66 additions
and
1 deletion.
There are no files selected for viewing
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -1 +1,66 @@ | ||
*(This page needs to be written. See [exercism/exercism.io#3253](https://github.com/exercism/exercism.io/issues/3253) for details.)* | ||
# Overview of Exercism | ||
|
||
Exercism—as an open source project—has two distinct parts. | ||
|
||
1. The Product | ||
2. The Curriculum | ||
|
||
Most open source projects are code that people incorporate into their own projects. They're tools and components used to build software: libraries and frameworks, packages and infrastructure. | ||
|
||
Exercism is unusual in the open source landscape. Exercism isn't a component or infrastructure. Exercism is an experience targeted at the end-user. | ||
|
||
If you want to follow along on the high-level goings-on on the Exercism project, watch the [discussions][] repository, and sign up for the [newsletter][]. | ||
|
||
## The Product | ||
|
||
The product consists of a website and a command-line client (CLI). | ||
|
||
We are currently investing our efforts in design research and product design. | ||
|
||
While we welcome fixes and improvements to the existing site, we are taking a step back from it and doing design research from scratch. You can read more about this in the article [The Delightful Design of Exercism][design-of-exercism]. | ||
|
||
## The Curriculum | ||
|
||
The curriculum is much more like a traditional open source project. It consists of many small, well-defined components, and it is a lot easier to contribute to. | ||
|
||
The goal of the curriculum is to create many small, trivial exercises. These provide lots of achievable challenges, giving people many small wins. | ||
|
||
There is a common pool of exercises which are implemented in many different programming languages. | ||
|
||
### The Common Pool | ||
|
||
An exercise is a description of a problem to solve. This description is not specific to any particular programming language or library or tool. | ||
|
||
An example is: | ||
|
||
> Determine whether or not a word is an [isogram][]. | ||
You could do this on the back of a napkin, or on a whiteboard, or by writing code. | ||
|
||
There are many ways to contribute to the common pool: | ||
|
||
- fix typos | ||
- improve exercise descriptions | ||
- document edge cases | ||
- discuss philosophical questions | ||
- make up more exercises | ||
- define canonical data-sets to make it easier to implement the exercise | ||
|
||
The common pool is maintained in the [exercism/x-common][x-common] repository. | ||
|
||
### The Language Tracks | ||
|
||
A programming language that implements exercises from the common pool is called a _language track_. | ||
|
||
A language-specific implementation of an exercise consists of a collection of automated tests, that define the requirements of the solution. | ||
|
||
A good test suite will not mandate a particular approach, but will allow people to try many different approaches, and solve the exercise in many different ways. | ||
|
||
There are many ways to contribute to a language track, described in the document [Getting Involved in a Language Track][getting-started-track]. | ||
|
||
[isogram]: https://en.wikipedia.org/wiki/Isogram | ||
[discussions]: https://github.com/exercism/discussions/issues | ||
[newsletter]: http://tinyletter.com/exercism | ||
[design-of-exercism]: http://tinyletter.com/exercism/letters/the-delightful-design-of-exercism | ||
[x-common]: https://github.com/exercism/x-common | ||
[getting-started-track]: /docs/getting-involved-in-a-track.md |