Call for collaboration: mini-article series on object systems and Dist::Zilla plugins

Aside from the mini-article series on option parsing modules that I have recently completed, there are two more series I currently have in mind: one on object systems (Moose, Mouse, Moo, Mo, Object::Tiny, Class::Accessor, and so on) and another on Dist::Zilla plugins. However, as I don't feel familiar with many of the modules or plugins, I think it would be nice if more people could write the articles.

The format of the series is 24-25 (mini-)articles, each comprised of minimum 250-300 words, 3-5 paragraphs. This is equivalent to the amount of text of a typical essay one is expected to write in a TOEFL test in 20-30 minutes time. So it should relatively easy to write even for non-native English speakers. I personally find that writing a blog post in 30-60 minutes time is ideal: it can be done in one sitting and does not take too much time to interrupt your daily work. It can even be done during a break. There is no maximum length limit.

Each article should discuss or review a single module. Ideally the author of the article is not the author or (co-)maintainer of the reviewed module. The article should first describe the module (its brief history, popularity, position in the CPAN river) then proceed to discussion on the user interface and design of the module and finally close with the author's overall view on the module (whether the module is well designed, whether the module is useful to her, whether the module is worth using compared to other modules).

If you are interested in collaborating, please contact me at perlancar gmail. I expect the series on object systems to be posted on Feb 1st, 2017 and the series on dzil plugins on Apr 1st.



  1. gnustavo · December 29, 2016

    Great idea! I’m not qualified to contribute but I’m very much interested in reading the articles. Please, go for it!

    Liked by 1 person

    • perlancar · December 29, 2016

      Thanks, and do reconsider contributing. We can always edit the articles together first.


  2. Ron Savage · December 30, 2016
    • perlancar · December 30, 2016

      Thanks, the links surely look handy. Any last update time on that? For example, I’m not seeing Object::Simple. Also, any particular favorite of yours or ones you are using? Perhaps you are interested in writing a review or two? 🙂

      I also have this as a starter:


      • Ron Savage · December 31, 2016

        I have not updated the list since the date in the header, 2012-11-16. Frankly, even compiling the list exhausted me.
        As for favourites, yes indeed – Moo. I use it everywhere now and just ignore the alternatives, meaning I have other things to do. See e.g.
        As for articles, I’m reluctant to spend the time since I assume each person is committed to their choice, otherwise (seriously) why haven’t they switched, e.g. to Moo, already? There have been various such articles over the year, usually cast as comparisons all in one article, but the typical response is ‘I use X because …’, which tells me something I suppose, but I’m not intending to change, and the authors’ of such replies clearly aren’t, either.
        The other thing which would be good to see in your series, is in each article a link to the previous, not just to the first.


        • perlancar · December 31, 2016

          First of all, not everyone who will read the article will have already made a decision on what object system to use. Second, even if they have and the articles won’t change their mind, it’s okay because the goal of an article or an argument is not always persuasion 🙂 Third, true, previous module comparsion articles have been written. But new modules are written everyday and older modules get updated. I personally find it rather exciting looking for new and interesting module, it’s like unboxing a wrapped toy. It could turn out to be a hidden gem or an utter crap, but nevertheless 🙂


          • Ron Savage · December 31, 2016

            Yes, good points.


  3. jnareb · December 30, 2016

    Among newer object systems not mentioned by you there is Moops


    • perlancar · December 30, 2016

      No worry, Moops is already under radar. The modules listed in Bencher::Scenarios::Accessors is by no means complete. (But I think Moops uses Moo underneath?)


  4. perlancar · December 30, 2016

    A few weeks ago I actually have written an article on Object::Tiny and another on Class::Struct. And I have these modules in my draft of the line up (which I expect to change radically later):

    day 0: prologue
    day 1: Object::Tiny
    day 2: Class::Struct
    day 3: Class::Tiny
    day 4: Class::Accessor & Class::XSAccessor
    day 5: Class::Accessor::Array & Class::XSAccessor::Array
    day 6: Object::Simple
    day 7: Class::Tiny::Antlers
    day 8: Simple::Accessor
    day 9: Role::Tiny
    day 10: Evo::Class
    day 11: Class::Std
    day 12: Class::Accessor::Tiny
    day 13: Class::Accessor::Lvalue
    day 14: Class::Base
    day 15: Class::Builder
    day 16: Class::Declare
    day 17: Class::Easy
    day 18: Mojo::Base & Mojo::Base::XS
    day 19: Mo
    day 20: Moo
    day 21: Moos
    day 22: Moose
    day 23: Mouse
    day 24: Moops
    day 25: epilogue


    • OIO User · January 9, 2017

      You left out the only proper module: Object::InsideOut


      • perlancar · January 9, 2017

        Thanks, added to the list. I also added Dios (this one is based on Object::InsideOut), as well as alternate implementations of inside-out objects like Hash::Util::FieldHash (core and the base for MooseX::InsideOut and MooX::InsideOut), Class::InsideOut and OO::InsideOut. In particular I’m interested in how Object::InsideOut compares to Hash::Util::FieldHash.


Leave a Reply

Fill in your details below or click an icon to log in: Logo

You are commenting using your account. Log Out /  Change )

Google+ photo

You are commenting using your Google+ account. Log Out /  Change )

Twitter picture

You are commenting using your Twitter account. Log Out /  Change )

Facebook photo

You are commenting using your Facebook account. Log Out /  Change )


Connecting to %s