trivelop @rrrene on

Good Tooling means Education

I have a soft spot for analysis tools, so it was no wonder that I jumped on the opportunity to contribute to Dogma, a code linter trying to bring Rubocop to Elixir (I just realized that I am one of the top contributors as of this writing, yay!).

Now, people coming from Ruby might have heard about Inch, my documentation analysis tool also available for Elixir via InchEx and Inch CI. The idea behind Inch is to show you spots in your code that could benefit from more documentation (original announcement). It does not use coverage points, but gives grades for each object and does not treat undocumented parts of your code as failure. It encourages you to document more and better by showing you a concise list of spots to add/enhance inline-docs.

In my opinion this sentiment is resonated in Elixir’s tools, which don’t blame anybody. People are regularly amazed that even error messages are teaching them (instead of just spouting “D’oh, this did not work!”). And this is a good thing since tooling is an important part of learning and on-boarding new people. Good tooling educates people.

After my talk at EuRuKo and the overwhelming feedback I received for the different approach Inch takes, it became clear that I had to work on something different from Dogma, something more educational: a static analysis tool that would have all the bells and whistles one would expect, but that would also emphasize the fact that a human was using it. A tool that would educate people instead of making them feel bad for not following certain rules. A tool that would not blame anybody, but encourage people to learn.

So, here’s what I came up with. It is the coolest thing I’ve build since Inch.

I am convinced that this project is taking (a) a nicer approach than most tools when it comes to treating the people in front of the monitor like humans and (b) the right path for a community as young as Elixir’s.

Some more moonlighting will be required, but I can’t wait to release it next week.

Fork me on GitHub