Oct 2013 interview

Toby Inkster edited this page Nov 1, 2013 · 1 revision

UNEDITED TEXT

* 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.