You can usually judge the maturity of a programming language ecosystem by the breadth of its tooling. For example, Java has a plethora of IDEs that each, in turn, have many well maintained refactoring and code quality plugins (like FindBugs and PMD). C/C++ is equally well established in this space. Even JavaScript is becoming well represented, with a number of static code analyzers and language supersets (like Dart and TypeScript) aimed at improving tooling in the language. But where is Ruby in all of this? This talk will shed some light on the existing tools available in the Ruby world as well as some new tools just starting to be built out in the areas of static analysis, formal verification, and code quality checking. We will look at what kind of tools the Ruby community is good at building, what kind of tools we are bad at, and most of all, some of the tooling we should be working on to really improve our ecosystem and drive more developers to this wonderful language.
The talk will focus on all of the tooling work that is currently being done in the Ruby community, and also the things we are not doing but should be. I will highlight some of the novel Ruby tools that are pushing boundaries, but also talk about great tools from other languages that we should be trying to emulate (and why). Overall, I want to rekindle our community's love of automation and tooling in hopes that we can start building towards a Ruby that has first-class tool support and rivals the support found in other languages-- or, at the very least, keeps up with the pace of up and coming languages like JS, so that we don't get left in the dust.
I also plan on demoing some work in progress static analysis / test case generation tools that I am personally working on in Rubinius and JRuby (using symbolic execution frameworks from the Java and LLVM worlds).