exercism / meta

Experimenting with a repo to manage the project-wide, meta todos.
7 stars 2 forks source link

ROSSConf Amsterdam - May 11-12 2018 #100

Closed kytrinyx closed 6 years ago

kytrinyx commented 6 years ago

My main goal for the coming weeks and months is to launch v2 of Exercism.

The TL;DR is that v1 (http://exercism.io) happened by mostly accident and has not benefitted from product thinking and user experience design. We aim to fix this with v2 (https://v2.exercism.io).

The two biggest blockers to launching v2 are the interactive walkthrough for installing the command line client, and the rewrite of the command-line client itself.

If you haven't tried out Exercism before, I'd recommend starting the day by going to http://exercism.io, picking a language you're interested in or know, installing the command line client, and doing one or two exercises, just to get a feel for the platform.

Things to contribute to

Interactive Command-Line Client Walkthrough

Technologies required: This uses some command line tools to sew together text files into a decision tree.

You can see the Interactive CLI Walkthrough as follows:

As you'll see, it currently only has "mac"—we want to also support Linux and Windows.

The repository has an extensive CONTRIBUTING guide that goes through the purpose of the project and how to set it up and compile the text files into the decision tree so you can test it locally in the browser (without any of the fancy design).

V2 Command-Line Client (code name: nextercism)

Technologies required: Go.

The v1 command-line client grew organically. We're doing a complete reboot to have a cleaner set of commands and interactions.

The MOST important things we can do for v2 launch are to have a seamless experience for the two most important commands:

Seamless means two things:

The development for nextercism (as we've codenamed the project) happens in the exercism/cli repository on the nextercism branch, which is currently the default branch. Any fixes to the existing CLI go on master.

We have a pretty extensive CONTRIBUTING guide which should be enough to get up and running.

In order to make this not-a-pain-in-the-butt to work on, I think adding verbose logging throughout the package would be incredibly helpful (I added a global verbose flag, and a way to add messages that only show up in verbose mode, but I've mostly not added any actual debug output). I've opened an issue about that here: https://github.com/exercism/cli/issues/525

While we do have open issues, I think the easiest way to get started would be to start by actually joining a track on v2.exercism.io and trying to download an exercise.

Open Issues:

Preparing Tracks for V2

Technologies Required: language of your choice to write scripts with, github/hub command-line tool

The v2 site has some key differences when it comes to the language tracks themselves... in particular, v1 has a linear list of exercises for each track. This means that to get to "done" you basically have to do all the exercises, whether you need them or not. Also, it means that as we add more exercises, we're moving the goal post. This is not cool. In v2 we've changed this to have a core set of 15-20 exercises, and each exercise unlocks several optional exercises. If you want to read more about the change I've written about it here.

Additionally, the new site will let you filter all the exercises available to you by topic and difficulty.

This means that each of the track configurations need to be updated to have the core/optional distinction for exercise, as well as which optional exercise is unlocked by which core exercise, as well as topics and difficulties.

I have a few open issues that are mostly "janitorial" for getting the tracks sorted out:

Things that don't require changing the track's config:

Some things do touch the track's config, and we can't do them until the configs are normalized. The open issue for this is https://github.com/exercism/meta/issues/95 but it's long and full of drama so the TL;DR is that we have a tool, configlet, that just got a new release which will correctly normalize the track config so that subsequent PRs don't include noisy, spurious whitespace changes.

Once the tracks are normalized, there are two more config things that both involve writing scripts that rely on github/hub. Mislav, one of today's coaches, is the maintainer of github/hub in case you have questions :)

Bots!

Technologies required: JavaScript

These are all JavaScript, and they all use the :robot: Probot framework which is written explicitly for writing GitHub bots.

Language-independent problem specifications

Technologies required: Plain text, maybe a bit of JSON

We have 45 active tracks on the site, and most of them rely on the same set of problem descriptions, which they implement a test suite for. There are a ton of low-hanging fruit in the problem specifications repository:

https://github.com/exercism/problem-specifications/issues?q=is%3Aissue+is%3Aopen+label%3A%22good+first+issue%22