Development Tools-As-Services Are A Cash Crop
These days, lots of software development tools are turning into hosted services. GitHub and VCS hosting are the most obvious example, but there are others too. Most recently, I came across http://codeclimate.com which provides static analysis services for Ruby code. I think there are some great opportunities for an enterprising Perl developer to cash in here. Read on to learn more...
I am biased, but I honestly believe Perl has the best static analyzer among all the major dynamic languages. I think you could easily put together a web service for running Perl::Critic with nice reports and graphs and gauges. That's what I had always wanted for perlcritic.com. In fact, if I wasn't already knee-deep with Stratopan, that is probably what I would be doing.
I think Code Climate proves there is real money to be earned here. Their enterprise package costs $399 a month, and all they really provide is complexity and security analysis. Perl::Critic can already do all of that and more. A lot more. You just need a good UI and some hooks into Git. Businesses really do want a succinct dashboard to help them understand the health of their code.
And there are other possibilities too. For example, imagine a service that runs Devel::NYTProf on every commit and helps me identify bottlenecks and tracks application performance over time. Or one that tracks test coverage (see http://coveralls.io). Yes, all this can be done by hand. But why bother? Many businesses would much rather hand over a few bucks every month for a service than pay expensive developer time to configure and maintain these tools locally. Heck, I would rather pay them than spend my own time.
I think there is a world of opportunities out there. And since we are a bit behind the curve, you can probably command a premium for supporting Perl. And eventually, you can branch out into other languages and services. These may not be GitHub-sized businesses, but they are plenty big enough to support several enterprising Perl developers.
So who's going to be the first to harvest some of this cash?
1) I use codeclimate at work (with Ruby On Rails), Looks like it differs from perlcritic.
It reports some higher level stuff (like code duplication, function "complexity", size). (but that part actually is much simpler, than what perlcritic do).
It reports security issues (mostly applicable for frameworks, not for core language, IMHO).
I don't think it ever reports something like "Comma used to separate statements" or "Return value of flagged function ignored"
Most complex part of codeclimate is not code analyzing code, but whole Web GUI, worksflows, design.
2) Coverals: I've tried it (it works with Perl!). It's full of bugs. I feel it's simply not working. It's probably a modern trend to release software with a huge technical dept,
then try to scale it, getting debt even more huge. I wonder if coverals ever had any non-zero code coverage.
3) Devel::NYTProf need probably to have benchmark suite first. Also profiling can be complicated at multitasking environment.
Perl-Critic has always reported code complexity and other statistics (the most valuable feature, IMHO). And code duplication is easy to implement too. All the code-style and bug sniffing stuff that Perl-Critic gives you is gravy.
And Perl-Critic has great support for language-level security checks. A lot of the policies tie in directly to the CERT standards for secure coding. That would be a great selling point.
You could certainly write plugin policies to detect security issues at the framework level too. I just don't know any of the web frameworks well enough to say what the best practices are. But I'm sure some people do know.
Creating a nice UI isn't trivial, but not rocket science either. At the very least you could just follow the example that Code Climate has given. All the nuts and bolts are there, just waiting to be assembled.
I think the hardest part is convincing shops to send their code over the wire. But that isn't impossible (they do it with perlcritic.com every day). If not, then you sell them the enterprise version so they can run it inside their firewall!
So go out there and start a business :)
Sure. Imagine having a .nytprof file that describes how to run one (or more) jobs for analysis. When you commit, the service just runs the jobs and collects the results. Maybe send out warnings if there is a big slowdown. Or give kudos if performance improves.
Continuous integration used to be a complicated thing too. But Travis has simplified it quite a bit. These services don't have to be all-powerful. They just have to be good enough to justify the cost. And considering that most shops do very little static analysis or profiling it shouldn't be hard to provide a good value for them, even if you don't have every possible feature.
Real-time online metrics (like NewRelic or AppDynamics) would be even better. I have lamented about the absence of those tools in Perl-land before. But just basic offline profiling is a service I would use, and I bet others would too.
I'm actually working on a tool like codeclimate. Not because of the cash though, that is at best an afterthought for when it outgrows my current hosting capacities. It needs to be done because Perl needs it.
Woot Mithaldu!