Vti runs the PrgamaticPerl.com website, which is a Russian monthly review about the Perl programming language. He asked me if I was willing to answer an interview, mostly about Dancer but also about myself. As the interview is published in Russian, I’ll post here the full content in english.
How and when did you learn to program?
I started learning how to program when I was in high school, it was on my calculator, a Casio I think, there was a little BASIC language embedded in the system and I started playing with it. I think my first program was a little text-based lottery game. That’s pretty much where I learned if-then-else structures and while loops.
What editor do you use?
Vim! I can’t use anything else to write code. Every time I try another editor, I go back to Vim in less than 10 minutes, I suppose my brain is cabled with Vim.
When and how have you been introduced to Perl?
It was during my very first job (almost 13 years ago). I was asked to build a small statistics tool that should fetch a bunch of MySQL data and produce nice reports in PDF via LaTeX. They introduced me to the Perl language, giving me the O’Reilly “Introduction to Perl” book and of course, the “Camel Book”. And that was it. After a couple of days playing with it, I was in love with the language. So easy to learn, so intuitive, I never stopped using Perl ever since.
What are other programming languages you enjoy working with?
I’ve been working with Ruby for a while, when I was working for Yoolink (a company that I co-founded and where I was the CTO). The webapp we built is based on Ruby on Rails. That was very hype at that time (2008) and we wanted to experiment that new shiny tool. I’ve enjoyed a lot working with Rails at that time but never lost the pleasure of working with Perl.
I guess I’ve never found the freedom I have with Perl. It’s like I know that I can code virtually anything with Perl, even extending its syntax with … a DSL. You see me coming, right?
What do you think is the most strongest Perl advantage?
Oh, I’m sorry, I’ve already answered that in the previous one! So yes, to me, the killer feature of Perl is the freedom it gives. You can really extend it as much as you like. It’s also its drawback, because this freedom comes at the price of a very … “tolerant” syntax and lots of programmers prefer strictness (like Python offers for instance). That’s understandable, I think both philosophies make their point, and it’s good we have both styles out there. The Perl way really fits my needs.
Also, of course, I could not stop here if we speak about Perl’s strongest advantages… CPAN, obviously. Even the worst language on Earth would be awesome if it had CPAN. This is why you come to Perl in the first place, I think. Because you know any problem you can face can be solved with a good use of appropriate CPAN modules.
And if we speak about CPAN, we speak about the Perl community. Many brilliant people are contributing to the language everyday, very smart ideas rise (Moose being one of the most impressive and Perl-world-changing one), and the tools we have to maintain, process and test our distributions are very powerful. The test smokers, the MetaCPAN, cpanminus, all that goodness contributes to the pleasure of working with Perl.
What do you think is the most important feature of the languages of the future?
Wow, that’s a tricky question! Let me see… If I could snap my fingers and magically have the ultimate language of the future, what would it be? Hmm, I think it would have a syntax very close to a natural language. A syntax that would let the programmer “describe” (rather than program) the data he needs to work on and the behavior of that data (if we can say).
Maybe we could write the specification of our program in plain English (with of course a lot of conventions to respect) and then submit that description to that magical tool. It would then compile the document into a program and a test. We would be able to review the test and move from there. Something like that, I suppose.
I have the feeling that whenever we speak about the future of computer science we speak about a world where the machine gets better and better at understanding us, the human beings. So the languages of the future would definitely be something like that.
What drives you in being so active in Perl community and open source in general?
Well, firstly, I must be honest: I’m not as active in the Perl or open source community as I used to be. At my most “active” time, I was developing and maintaining Backup Manager, contributing to Debian (I’ve been a Debian developer for three years) and – of course – contributing to CPAN. Sadly enough my personal and professional life don’t allow me to contribute as much anymore. So I’ve focused all the “free software” time that I have on Dancer.
What drives me into that? Very good question. I suppose the pleasure of writing code for the only purpose of … writing code. Free Software is the only place where you can find that: whenever money comes into play, the beauty of the code itself is altered, because of external priorities. Here, time does not matter. The only thing that matters is what you produce. From an intellectual point of view that is very satisfying, and very encouraging.
It’s also one of the best way that I know to enhance your skills at programming: writing code in a free software environment will eventually attract a lot of experienced eyes on your lines of code. Eyes that are only motivated by the appropriate way of solving a problem, nothing else. That’s why when I do job interviews I give a lot of credit to applicants who are open source contributors, for that very reason. It teaches you humility, a lot.
Writing, releasing and maintaining free software also makes you enhance a lot of skills that are different from purely programming. You need to market your product, to provide support to your users, to document the code and the product, to handle bugs… it really takes you to another level as a programmer, that’s for sure and it is very valuable. It enlarges your vision as a software developer, you really see the big picture then.
Also, eventually it can make you answer a friendly interview, and that may be the real reason why you want to be involved in free software! Narcissism!
Dancer is no doubt one of the most popular Perl web frameworks. When and why did you start the Dancer project? Why do you think the project became so popular and attracted so many contributors?
It’s a very hard question to answer. I can explain what I think contributed to that popularity but there is a lot of unknown there.
First of all, Dancer filled a gap. Back in summer 2009, there was nothing similar to Sinatra on CPAN: a complete micro-framework that provides a feature-rich DSL for writing a webapp. That’s a first point, Dancer introduced a new way of solving the “web development” problem with Perl.
Then there is its spirit: be as intuitive as possible. This is why you don’t have $self in the route handlers, that’s a deliberate choice. Everything that can be removed from the syntax should be. Less noise as possible. This is what brings at the end of the day that great feeling that developing a webapp with Dancer is easy, lightweight and fun. Most of the users say they love Dancer because it doesn’t force them to do things as the framework wants, it doesn’t get in their way. That’s because of that very thin and intuitive layer that is the DSL.
And finally, the fact that I’ve always tried to promote community efforts contributed to attract more and more contributors, I think.
Very soon I granted commit bits to other developers, this rapidly led to the “core team idea and helped a lot the maintenance and created a lot of energy around the project.
Look at the changelog of Dancer, and count the names… That’s probably one of the most satisfying feeling: seeing so many people joining the effort you’ve started. It must be that something was not too bad in the idea of Dancer in the first place!
Why do you think releasing and maintaining Dancer and Dancer2 at the same time is a good idea?
Because it’s actually two different ways of implementing the Dancer concept, and the design changes are so drastic it’s not possible to provide a complete backward compatibility with all the existing Dancer1 ecosystem. I’ve explained in details that decision on my blog. The conclusion of that blog-entry summarizes the decision:
There is out there a lot of real-life D1 applications. Most of them use engines that won’t work transparently under D2. Also the app-scoping can break things with some applications, if the app is decoupled in many packages.
For that reason, I’m going to release Dancer 2 in its own namespace, and that will bring a lot of energy in both projects:
- Dancer 1 is at the same time unfrozen, development can continue there (as long as the features added are not something that would lead to a new Dancer 2!)
- Dancer 2 is released on CPAN and its ecosystem can rise
- Dancer 1 users are happy
- Dancer 2 users are happy
- Migrating an app becomes something under control.
There have been several widespread attempts to bad-mouth the project. What helped you to face that? Why do you think this happens in open source world and how to deal with it?
Haha, those times are over now. But indeed the early days/months of Dancer were surrounded by passions and warfare! At the beginning, there was this misunderstanding about the origin of Dancer vs Mojolicious::Lite, as both projects were released almost at the same time, it created confusion. This confusion led to create “sides” and exposed Dancer as a competitor for Mojo (or the other way around), which was in fact completely wrong: Mojolicious is a great project with a tons of brilliant features. It’s a complete suite for web development with a different philosophy (which is good). Dancer addresses another field, it has another vision: it’s to web development what Perl is to programming: a minimal and extensible set of keywords to describe a solution to a problem. At the beginning, none of us (in both sides) realized that we were playing in different fields (myself included, I admit it). So we all were a bit childish and contributed to feed that trolls army!
In the end, there was even an individual who spent time polluting anonymously our CPAN ratings or who was flooding our Hacker News announcements, even posing as members of the Sinatra community to say how much they hated Dancer! The only result was this official statement on Sinatra’s blog: Sinatra Loves Dancer !
So in the end, you realize that the more harm you try to do online to a project, the more you give it strength, because it always comes back to the project as positive energy at the end of the day. Even badly intended, a spotlight is still light.
When all this happened I found the energy of continuing my work for a simple reason: the positive feedback of all the users we have, take a look at our testimonials page, it’s really a booster. I thought: if what I did is so wrong with Dancer, then why are there so many excited developers about it? Some of them being well-known and respected Perl hackers? I must have done something good somewhere, it can’t be that bad!
Why does this kind of things happen in the open source world? Well, for sure because the way we communicate online is completely … cold. There are no feelings in an email, no way to understand irony or being able to see that someone is hurt or amused. That’s why getting upset by email is a very bad idea. Your words can be interpreted in hundred ways. This is why, I think, hackers can fight so hard when they disagree online!
But at the end of the day, you need to realize it’s just about lines of code! It’s not a big deal!
Where do you work right now? Does your company use Perl? Do you think it’s important to support the Perl language and community on the business level?
I work at Weborama one of the European leader (and we’re in Russia since last summer by the way!) in the online advertising industry. I’m in charge of the R&D team and I work with very talented people, I’m very happy to be working with that team. We tried very hard to create our platform with the full power of Perl. Not only the language but also the “culture”: we use CPAN-Mini to create our own private mirrors that host our in-house modules (in the Weborama namespace). Everything we code here is a CPAN distribution, written in Modern Perl (Moose/Moo/Dancer…) and is deployed in a perlbrew. We have mimicked the real-world CPAN to benefit of the whole tool chain: unit tests, smokers, cpanminus as our deployment tool… We use Perl::Critic plugged into Git hooks to make sure everyone respect our coding standards. Well you see the point, everything is based on the Perl way here. That’s a really great pleasure to be able to work like that, and it helps us a lot to provide very high-quality software to the company.
Also we try to attract as much as we can talented Perl hackers, we recently posted a job offer on Linkedin and on jobs.perl.org and we got many interesting applications, from all over the world, people willing to relocate to Paris to join our team. That’s really exciting to work in that environment! OK, I’m biased! I’m in charge of that team so I won’t say it’s a bad one, huh! But I think if you ask some of my colleagues they won’t say the opposite (I hope!).
I do think it’s important to support the Perl language on the business level, and we do at Weborama. We’ve been sponsoring Perl events for some time now, French Perl Workshops, YAPC::EU, or others. We also provide help to our employees who wish to attend such events like sponsoring their travel/hosting expenses or letting them go there without using a day off.
Promoting the Perl community is very valuable for a company that work with it, that’s just good sense.
Should we encourage young people to learn Perl right now?
I think so. Perl is a language that is very easy to learn and with a huge potential thanks to its ecosystem and community. Working with Perl can be very efficient and for that reason I really think the more young Perl developers we have the better. Any effort that can attract new developers to the community is worth a try.
Questions from our readers (some of them are just jokes :):
OK! I’ll try to answer without being too much of joker myself then!
Do you use Mojolicious?
Of course! All my webapps are written with Mojolicious. I could not think of any other way of writing a webapp.
Did you remember when I said earlier it was hard to catch irony in an email? More seriously, I’ve not used Mojolicious but I’ve read part of the code when I started Dancer 2. I wanted to see how things were done here and there and that’s when I really realized that Dancer is clearly not the same thing as Mojolicious::Lite. Lite is a little DSL over a huge MVC framework. Dancer is a complete feature-rich DSL. It’s not exactly the same thing. Again, I really think both approaches are good.
So no, I don’t use Mojolicious but I think it’s a great project!
So you think you can dance?
I think my Moonwalk is not so bad! And no, I won’t send you a video, you need to trust my words.
Do you know any working in production big projects written with Dancer?
First of all, at Weborama, our adserver tool (Weborama Campaign Manager) provides an API service that serves the web interface and third-party clients. This API webservice is written with Dancer (version 1) and is working like a charm. We also have released one of our last product recently with Dancer 2. Outside of Weborama, there are many “real-world” companies that use Dancer, for instance Moonfruit.com is proudly powered by Dancer. I’ve also heard of Novell who has released a deployment tool for servers called Baracus , that tool has an embedded ReST API service that is built with Dancer as well. You can also take a look at this page on the website for more “real-world” users.
Will you come to Kiev for YAPC::EU?
I don’t know yet, it depends on my personal agenda, who knows!
Did you leave Dancer1 for the community or do you still participate?
Dancer 1 is now maintained by Yanick Champoux but it doesn’t mean I’m out of the discussions. I’m not far from it even if all my energy is dedicated to Dancer 2.
Thanks for that interview, use Perl and dance!