exercism / v3-dashboard

The source code for Exercism's v3 maintenance dashboard
MIT License
6 stars 4 forks source link

Exercise Graph - Next steps #88

Open neenjaw opened 4 years ago

neenjaw commented 4 years ago

I'm opening this issue to explore possible next steps for refining/revising/expanding on the exercise graph. Incidentally, I may interchangeably use the terms graph, tree, DAG -- I mean to refer to this graph so the term doesn't really matter to me.

As such, the current state of the graph is:

The result:

Screenshot from 2020-06-22 13-39-29


Next steps

Representing a more complete graph

During the group call, some ideas were floated about how this graph may be expanded upon. Ideas were focused around altering the format of the config.json file to allow for incomplete or unimplemented exercises to be represented in the graph.

Exercises in different states can be easily represented with different shapes / colors.

I have a hesitation when it comes to expanding this feature is that it may promote the idea that the tree must be completed before exercises, which I believe to be putting the cart before the horse with my experience with the elixir track so far. I have tried to conceptualize the complete track (see: graph - mar 20) which I think hindered attempts to just start writing exercises -- which was by far the best method to flush out concepts more fully and create a more natural progression.

Simplifying or Untangling the Graph

The graph is noisy in its current state and I think there are at least two reasons:

Simplifying the graph

I think this is easily accomplished by only showing the exercises's closest dependencies (which then represent the unlock progression) then displaying the dependencies as an additional layer which can be hidden or visible.

An example of this: Screenshot from 2020-06-28 17-10-32

Untangling the graph

I think there is likely only so much untangling that can be done on a graph which may have multiple source nodes, a vertical [or horizontal] orientation (to imply an progression). But one question I have is if there are any suggestions on how this graph may be displayed more compactly?

It could be compacted a lot if there was no text present, but then I think it loses a lot of value as a reference. I haven't had much success finding similar graphs and am not really a designer so some input would be really nice here.

This is what Jetbrains Academy is doing with its java curriculum map:

Table View: Screenshot from 2020-06-28 17-17-37

Tree View: Screenshot from 2020-06-28 17-18-09

Increasing Usability


So what do you think are the next steps for this graph?

ErikSchierboom commented 4 years ago

I think this is easily accomplished by only showing the exercises's closest dependencies (which then represent the unlock progression) then displaying the dependencies as an additional layer which can be hidden or visible.

I like that idea! It would be at least a good idea to try it out I think.

neenjaw commented 4 years ago

I think it is one of the simpler ideas. I think most others start to re-write the drawing/positioning (which I don't have many ideas for at this time). This will just divide the set of edges to visible and not visible.

ErikSchierboom commented 4 years ago

I think it is one of the simpler ideas.

Indeed, but it might be a very nice improvement.

tehsphinx commented 4 years ago

Right now we have 2 states for nodes: image

An exercise that is registered in the config.json but not implemented yet, shows as grey (implemented). It would be great if we could see the difference in the tree. It could show in yellow for example, because it is planned, but not implemented yet.

There are several ideas on how to check/indicate if an exercise is not yet implemented:

See also https://github.com/exercism/v3/issues/2031

neenjaw commented 4 years ago

style based on the uuid being null would be simpler than adding a new flag or checking the exercise folders, since this graph is build from the config.json and the schema doesn't have a todo flag in it yet.

I am not sure if this affects any of @ErikSchierboom's other dashboard tooling though.

ErikSchierboom commented 4 years ago

As far as I can tell, we've now used null for this right?

neenjaw commented 4 years ago

Yes, the exercise node now changes representation when the uuid is null.