Just like Node is Twisted in Python or EventMachine in Ruby.
So it's not exactly a new technique, "just" a new technology bringing a lot of fresh air. :)
I don't think anything like Mojolicious exists in other programming languages. It's a mix of a lot of concepts, while still being standalone, while still providing everything you need and while still being fast. I think everyone that isn't forced to use something else should give it a try (maybe even reimplement something in a different language), because I never saw a quicker way to get where you want.
Mojolicious starts out as Flask/Sinatra, with some added options to grow beyond that.
It does pride itself as a batteries-included, modular framework. And one that doesn't pull in loads of dependencies. Which I can appreciate on one hand, on the other, you do reinvent a lot of stuff that would be on CPAN.
(But, well, looking at the dependency list of Moose alone…)
I really don't understand where this oft-repeated FUD about Moose having a lot of deps comes from. Take a look at the list of deps on https://metacpan.org/release/Moose
I count 18 direct dependencies, 2 of which are core. If you look at the full expanded deps list at http://deps.cpantesters.org/?module=Moose it's not many more, especially since most of the 2nd (or more) order deps are core modules like ExtUtils::MakeMaker, Test::More, etc.
For extra added irony, a bunch of the Moose deps are tiny modules we extracted from Moose or Class::MOP in order to make their functionality availability _without having to install Moose_. This includes Class::Load(::XS), Package::Stash(::XS), Devel::GlobalDestruction, Package::DeprecationManager, Eval::Closure, and Dist::CheckConflicts.
Had we just note bothered to break things up we'd have to deal with a lot less complaining.
18 isn't "lots"? I'm not saying that I've got a problem with this, as installing CPAN modules and deploying them isn't really a problem at all. I think in the end it's probably the wrong decision to avoid using features just because of something easily automated.
I just meant that I can understand the desire. We programmers try to make code clear and concise (hopefully), so that we can better keep the system in our heads. Apply this on a larger scale, and you often get reinvented wheels and proprietary solutions. "Other people's code" is often used as a curse.
Hey, my day job involves Catalyst and Moose heavily, and I wouldn't ever want to go back to enterprise Java. So if I came of as "fuddy", I'm sorry.
For those looking at Dancer as a framework, be aware that there is a Dancer 2 "rewrite" project. The purpose of the new project is to "fix" the use of globals and also to have a consistent core API.
Funny you should mention Catalyst, because the last time I tried to return to Perl (2007?) I tried Catalyst and the experience was not positive.
The page reads like a "me too" of web development. The term "Modern Perl" sounds like it will be innovative and different from other options on other platforms. I would love a compelling reason to use Perl again! But I never see one. The innovation is happening elsewhere. Calling things "modern" doesn't make them that.
I would love a compelling reason to use Perl again! But I never see one.
The combination of Moose, Catalyst, Plack, and DBIx::Class is unbeatable for me. Throw in Dist::Zilla, perlbrew, and cpanminus and I'm almost unstoppable. That's my preference, but the difference between this and pre-modern Perl feels to me like the difference between writing client-side JavaScript by hand and using jQuery.
In 2007 you had Catalyst and DBIx::Class with much less maturity.
Maybe you want to see more amazing new ideas that have never been done before (and that's fine), but even if these things are only incremental inventions or syncretized ideas (and Moose alone is more than that), the combination is very powerful.
That combination is all the more powerful when it takes advantage of the entire CPAN ecosystem.
It is a joke. To quote Guido Van Rossum, "if you look at it from 10km above, Python and Ruby and Perl are exactly the same language". I find it funny when people hate on Perl for its syntax, because it's so similar to languages people rave about. Perl's syntax is very expressive and if one knew it, it would seem as natural as Python's whitespace to a Pythonista.
I often forget the trailing colon in conditionals in Python the same way that I almost always include a trailing comma after the final element of a list in JavaScript.
20 comments
[ 466 ms ] story [ 1034 ms ] threadJust like Node is Twisted in Python or EventMachine in Ruby.
So it's not exactly a new technique, "just" a new technology bringing a lot of fresh air. :)
I don't think anything like Mojolicious exists in other programming languages. It's a mix of a lot of concepts, while still being standalone, while still providing everything you need and while still being fast. I think everyone that isn't forced to use something else should give it a try (maybe even reimplement something in a different language), because I never saw a quicker way to get where you want.
It does pride itself as a batteries-included, modular framework. And one that doesn't pull in loads of dependencies. Which I can appreciate on one hand, on the other, you do reinvent a lot of stuff that would be on CPAN.
(But, well, looking at the dependency list of Moose alone…)
I count 18 direct dependencies, 2 of which are core. If you look at the full expanded deps list at http://deps.cpantesters.org/?module=Moose it's not many more, especially since most of the 2nd (or more) order deps are core modules like ExtUtils::MakeMaker, Test::More, etc.
For extra added irony, a bunch of the Moose deps are tiny modules we extracted from Moose or Class::MOP in order to make their functionality availability _without having to install Moose_. This includes Class::Load(::XS), Package::Stash(::XS), Devel::GlobalDestruction, Package::DeprecationManager, Eval::Closure, and Dist::CheckConflicts.
Had we just note bothered to break things up we'd have to deal with a lot less complaining.
I just meant that I can understand the desire. We programmers try to make code clear and concise (hopefully), so that we can better keep the system in our heads. Apply this on a larger scale, and you often get reinvented wheels and proprietary solutions. "Other people's code" is often used as a curse.
Hey, my day job involves Catalyst and Moose heavily, and I wouldn't ever want to go back to enterprise Java. So if I came of as "fuddy", I'm sorry.
http://advent.perldancer.org/2011/8
The page reads like a "me too" of web development. The term "Modern Perl" sounds like it will be innovative and different from other options on other platforms. I would love a compelling reason to use Perl again! But I never see one. The innovation is happening elsewhere. Calling things "modern" doesn't make them that.
The combination of Moose, Catalyst, Plack, and DBIx::Class is unbeatable for me. Throw in Dist::Zilla, perlbrew, and cpanminus and I'm almost unstoppable. That's my preference, but the difference between this and pre-modern Perl feels to me like the difference between writing client-side JavaScript by hand and using jQuery.
In 2007 you had Catalyst and DBIx::Class with much less maturity.
Maybe you want to see more amazing new ideas that have never been done before (and that's fine), but even if these things are only incremental inventions or syncretized ideas (and Moose alone is more than that), the combination is very powerful.
That combination is all the more powerful when it takes advantage of the entire CPAN ecosystem.
I often forget the trailing colon in conditionals in Python the same way that I almost always include a trailing comma after the final element of a list in JavaScript.
I don't have these problems in Haskell.