Yay! Moose is free from stringy exceptions!
I did an internship for Moose as part of GNOME's Outreach Program for Women. I was supposed to convert all stringy exceptions in Moose to structured exceptions or exception objects. This is my first major contribution to a FOSS project :).
Code
This is my merged pull request (a bit late, but better late than never).
Diff stats
If you're interested, then you can check out diff stats here. Caution : You may get lost in that big stats, so better not to click on that URL ;).
In short :
368 changed files with 23,830 additions and 1,479 deletions.
Resources which I've used for understanding Moose
- Modern Perl Book
- Moose documentation
- The Art of the Metaobject Protocol
- Introduction to Moose by Dave Rolsky
- Role Usage Patterns
- Introduction to Moose by Shawn M. Moore
- Extending Moose for Applications
- Exception handling slides by John SJ anderson
- Apart from above, my mentors & people on #moose and #moose-dev on irc.perl.org were extremely helpful
Technical things which I've learnt through this internship?
- Perl.
Pre-internship : I used it for writing small scripts & solving project euler problems.
Post internship : Now, I know about :
- goodness of perl one liners
- weird behaviour of Perl
- XS
- Exception handling in Perl
- Moose
Pre-internship: I never heard about it.
Post-internship: I am familiar with most of Moose internals.
- Git
Pre-internship : I knew only git basics like add, commit, push, pull, merge etc.
Post-internship : I know some advanced git commands like git rebase, git log (with arguments), git reflog etc. But, I still need to work a lot on my git skills. I realized it yesterday, because of this blunder :(.
- Dist::Zilla
Pre-internship : Never even heard about it
Post-internship : Used it while uploading my first CPAN module :D
- Metaobject Protocol
Pre-internship : No idea
Post-internship : Understand it to a fair extent, but still need improvement
Non-technical things which I've learnt through this internship?
- Blogging : I think I've learnt how to write a good blog, but I may be wrong, so please feel free to comment on my blogging skills :)
- Management : I've learnt how to manage work, chatting, eating etc. simultaneously. Yes, I did these things simultaneously :D
- How to handle newbies : Though, I am myself a newbie, but I've learnt how to handle newbies' questions. I've met so many newbie friendly people in this community, who patiently listen & answer questions of newbies. Perl people, please always stay like this.
Credits:
I'd like to thank these people for their help & support at one or the other point.
- Shawn M. Moore (official mentor) & Jesse Luehrs (unofficial mentor)
- Karen Etheridge
- Matt S. Trout
- Graham Knop
- Ricardo Signes
- Chris Prather
- John SJ Anderson
- Florian Ragwitz
- Dave Rolsky
- Jay Hannah
- John Napiorkowski
- Stevan Little (for creating Moose)
These people/organizations didn't help me in my Moose work directly, but they were behind the scenes:
- Karen Pauley
- Yaakov Sloman
- Marina Zhurakhinskaya & Karen Sandler
- GNOME foundation
- The Perl Foundation
- Dan Wright
- Allen J. Martello
- Sawyer X (for suggesting me Moose, because initially, I came for Dancer & ended up with Moose)
If any of you (people mentioned above) want your name to be removed from this post, then please mail me at me@upasana.me
A humble request to GNOME foundation
Please keep organizing the Outreach Program for Women :)
A humble question to The Perl Foundation:
Though, I'm no one to question anyone, but still why Perl doesn't participate in every round of Outreach Program for Women & Google Summer of code? :(
This is wonderful news! Moose's error reporting has long been its ugliest wart.
For those of us who have test suites that match various exception messages against regexps, may I ask if the stringifications of these exception objects are mostly compatible with the existing error messages?
As to why there aren't more of these sort of projects in GSoC, etc, I suppose that very few of the subcommunities within the larger Perl community are as organized as Moose is.
PS: jnap is John Napiorkowski.
Thank you for such a nice comment :)
Yes, stringification of exception objects are mostly compatible with the existing error messages. Some of the modules which have not been updated from a long time are failing on my branch.
Thank you, I've updated it :)
Toby, we tried our best to match the existing exception messages. There are a few places we couldn't, but those were for such obscure exceptions (such as in metaclass incompatibility) that no one will notice the change.
We even kept a list of exception messages that could be improved, once everyone has changed their regex checks to ->isa checks: https://github.com/sartak/OPW/issues/17
Congratulations on the awesome work you did! Keep it up! :)
Great work Upasana.
Thank you so much :)
Thank you so much :)
Good job! And thanks for adding the complete list of what you followed during your journey!
Thank you so much :)
Upasana, thank you! This is great news :)
You're welcome & thank you :)