Oct 2013 interview
Clone this wiki locally
* Out of all the OPW projects, what attracted you to the Perl one? It's a long story :D. I started learning Perl in January, 2012 and using it since then for solving Project Euler problems and other programming related tasks. When I got to know about OPW, without giving even a single thought, I decided to contribute to MetaCPAN, forked & cloned its git repository. I told about this to my brother, he suggested me not to do it because MetaCPAN is a heavy project & it won't work well on my laptop. So, I dropped my plan of contributing to MetaCPAN. Dancer was the other OPW project, but I didn't think of doing it. Reason was Mojolicious. By chance, I was learning mojolicious before getting involoved in OPW & I found it a bit tough to learn. Mojolicious is well documented, but its documentation is a bit scattered (it's just what I felt, no intentions of hurting anyone). Though I managed to learn it, but it took a lot of time. I heard that Dancer is a bit similar to Mojolicious, so I refrained myself from checking out Dancer. Then I checked out some other projects also, most of them were Perl projects (but not sponsored by The Perl Foundation), check out this post of mine for the details : http://upasana.me/2013/05/18/meta-cpan-debian-wikimedia-twisted-dancer-moose/. I decided to contribute to Twisted (an event-driven network engine written in Python) & dropped all of my plans to contribute to any Perl project. After application submission (on 3rd May), Marina Zhurakhinskaya told me that Perl projects have got only one applicant :( (sadly, it's true :(). Due to my Perl background, she suggested me to try for a Perl project, if I'm interested, because Twisted got so many applicants. When she told this to me, I was quite disappointed because I worked very hard for Twisted, I decided that I'll contribute to a Perl project, but Twisted will remain my first preference. I sent a mail to Sawyer(Dancer's mentor), but he was unavailable due to weekend. So, I just tried to explore Dancer, joined its IRC channel, asked people about how to get started & a person named fuzzix (on #dancer on irc.perl.org) gave me some references (Dancer's documentation & Dancer Advent Calendar) for getting started. I also forked its git repository, in the README file, I got to know about Dancer2, which pointed me to Alexis Sukrieh's blog. There I saw that Dancer2 uses Modern Perl concepts. I heard about Modern Perl before, but never tried to explore it. Then, while trolling on the Perl foundation's OPW page, I noticed that there is one more project named Moose (I overlooked it in the first time). I just read a bit about Moose and saw that it's also about Modern Perl. Seeing this similarity between Dancer2 & Moose, I decided to learn Modern Perl. I conversed with Moose' mentor (Shawn) and told him the whole story about how I came to know about Moose & I'll contribute to Moose if & only if I'll find it more interesting than Dancer. I went through chapter 7 of the Modern Perl book on Shawn's suggestion & found it quite interesting. Before that I only knew about horrible way of doing OOP in Perl & Moose made it so easy. By that time, Sawyer also replied to me, I told him that I came to know about Moose via Dancer2 and I'm thinking of contributing to Moose. This is what Sawyer said (how kind & honest, he is!): <sawyer_> you can't lose with Shawn and Moose, i assure you :) <sawyer_> and Moose is basically used by a large portion of Modern Perl code, so you'll be making a substantial contribution to the community Thanks to Sawyer! I decided to contribute to Moose. I told Sawyer that I'll definitely learn Dancer, post OPW & I'm standing by my words :D. So, now I was left with Moose & Twisted. I was totally lost in Moose & to be very honest, I didn't even touch Twisted after picking up that Modern Perl book. On 8th May, when I had to submit my application for OPW for Moose, I mentioned Moose as my first preference (just opposite to what I said above). Main reason for choosing Moose over Twisted is awesome Moose community, Twisted community is also good, but I felt Moose community is more organized than Twisted community. Also, Moose mentor(Shawn) is awesome. If I would say that Moose is a better project than Twisted, then it doesn't make much sense, because both of them are totally different from each other. * What change would you make to Moose if backwards compatibility were not an issue. I'd like to change some metaclass compatibility code (if I'd have given enough time & Jesse's mentorship B-) ). There're around 5-6 exceptions from that part which annoyed me most. For example, this exception, CannotFixMetaclassCompatibility is being thrown at four different places, Jesse showed me similar code in p5-mop, which handled it at one place & in a less complex way, so I'd like to see that thing in Moose also. That metaclass compatibility thing is a big scary monster :(. Also, this exception : "Can only clone an instance" annoyed me, it's related to bootstrapping process. I'd like to change it too (again time & mentor are the primary requirements :D). So that if in future, some other OPW/GSoC intern will work on Moose, he/she won't need to fight with these monsters. * Now that your internship is over, do you plan on continuing to contribute to Moose and/or other Perl projects? Yes, I'll keep on contributing to Moose (though just taking a month's break from contributing to Moose). Yes, I've plan of contributing to other Perl projects. I've already started with Dancer, but I made a mistake. I started with a tough issue (related to session in Dancer2). Since, I'm quite new to Dancer, so it would have been better if I would have started with an easier issue. Also, I talked to rjbs about working on some Dist::Zilla issues, so will definitely try them. Other projects about which I checked in past few days are p5-mop (quite similar to Moose), Moe (didn't understand anything) & some work related to packaging Perl modules in Ubuntu/Debian (I'm planning to learn packaging perl modules). Apart from Perl, I'd love to work on other languages also, primarily C.