Clarifications about AnyEvent::Mojo
It seems that I need to clarify some stuff, based on Sebastian comments in my last post and via Twitter. I really hope this is the last time I have to talk about it. I rather spend my time coding.
First, you can look at the code of AnyEvent::Mojo::Server::Connection
: no private Mojo
APIs are being used.
They might have been with early releases, but as Sebastian says, I did work with him to improve Mojo
so that I didn't have to depend on private APIs. That would be wrong.
In fact, given that I was able to write a AnyEvent
-based Mojo
server proves that the code was properly structured.
Second, I have no problems with changing state machines. I like state machines and expect them to change. I was eager to see Sebastian add a "pause" state, that would greatly simplify my own work regarding long-pooling. And the first break included changes in the state machine that I fixed on my side.
But the second break was caused not by the introduction of new states, but the abstraction of some code into the new Mojo::IOLoop
. After the notification of no changes until 1.0.
Now, I totally accept that Sebastian needs to evolve his code base to support the new stuff he wants to support, like WebSockets. But it was nonetheless new code, and a re-factoring of all the Server interface.
I was pissed at having my code broken in that way after the "no changes" declaration, but only for a couple of days, but, and significantly more importantly, that has nothing to do with my deprecation of AnyEvent::Mojo
.
I'm deprecating my module because there is a better way to do it now. I no longer need to keep this module up-to-date, I just have to work with the larger community of the PSGI/Plack, the Perl Web Server. It just makes sense to drop one-off module and switch to a system that is being reused by so many projects.
In a nutshell, I'm deprecating AnyEvent::Mojo
because you have better solutions now. Solutions that I will move to and recommend to others. Solutions based on the PSGI
/Plack
stack, the Perl Web Server.
I am glad to see a clarification about the deprecation policy in the Changes and the http://github.com/kraih/mojo/commit/89fc6baf390d0065ad319abc540dc6a47e0bc812 for the Mojo project, I think it is a big step in the right direction; it can only give assurance to potential users of Mojolicious, and help the project.
I did learn a lot about HTTP that I hadn't pay attention before, the tiny details in the protocol. I do like Mojolicious
MVC stuff, I just think that the Plack
HTTP stack is better than the Mojo
HTTP stack.
And I might get the cake and eat it too. I'll wait for Mojo
1.0 but it should be possible to use Mojolicious
, the best part of the project, with Plack
.