LMPX.COM |
Home | Linux | Mysql | PHP | XML | ||
|
|
|||
From: Alexis Sukrieh Date: Mon Sep 29 00:42:09 2008 Subject: Re: Mouse and Coat
Hi, Sartak a écrit : > Hi Alexis, > > I've been aware of Coat since you started it. (But I hadn't seen the > value of a lite Moose until much later). I had even contributed two > patches. :) Indeed, and I thank you for that ;) > I started Mouse (originally called Neutrino) a few months ago for fun, > to better understand how Moose fits together. It wasn't going to be > anything serious or used by anything. But then I mentioned it to a few > people and here we are. Ok, > Mouse strives very hard to be a *compatible*, fast, light replacement > for Moose. Coat is the latter two. It's marginally compatible, but > running s/Coat/Moose/g will probably not work for a decent sized > project. Maybe, but I think I should precise my baseline when I'm at working on Coat: Coat should be as compatible as possible to Moose when it's not about meta. To be short: there's no point to rewrite Class::MOP, I don't think a tiny-fast-perl5-core-only code will be able to do what Class::MOP does. After talking with Stevan on IRC a couple of months ago, we agreed on that: if you need strong meta information, go use Moose; otherwise, it's a descent target for Coat to be a light-remplacement. Yes, I know, it's not already the case, and some parts are just not even started (like Roles) but this is a target for me. That's why I'm taking as many tests I can from Moose's test-suite and add them to Coat. I want Coat features to be as compatible as possible to Moose. So, again, I fear we're starting to do duplicate work here, I would be so glad to welcome you to the Coat maintenance, if you'd like to ;) > There are too many details that are different. For example, > if you leave out the "is" option to "has" in Coat, you get a > read-write accessor. In Moose, you get no accessor (not even > read-only). Coat probably did this to optimize for convenience. But it > is something you have to know about when upgrading from Coat to Moose. Well, as I said above : this is a bug in Coat. Every Moose's feature implemented in Coat should behave like in Moose, as long as it doesn't involve meta-data exposition. I'm going to fix that soon, hopefully I can find a test that put that issue into the light). > I've tried to model even Mouse's internals on Moose as well. I have > Mouse::Meta::Attribute, Mouse::Meta::Class->linearized_isa, etc. Mouse > does provide a very barebones MOP, but that's often all you need. > Almost all of the features provided by Mouse's MOP are given the same > name and functionality as Moose. Even if you use the MOP you can > probably safely upgrade from Mouse to Moose. Coat's MOP is quite a bit > different (not bad, just different). Then we have a divergence of concept there. Indeed Coat's MOP is different from Moose's, for the reasons I explained before. > There are a number of Moose features (such as practically all the type > features) that Coat has that Moose doesn't have yet. Coat::Persistent > is also nowhere to be seen in Mouse. So I think there's plenty of room > in this space for two (or five) lightweight Mooses. :) I don't think Coat::Persistent as something to do with this debate ;) It's just an ORM that is using Coat. Anyways, as the Perl mantra said: "there's more than one way to do it"[1], so I understand your path, but don't forget you're more than welcome if you like to contribute to Coat (event tests that shows up bug of Moose's compatibility). Regards, Alexis 1: by the way I had to fight a little when I starting working on Coat, some people were angry because of the idea behind Coat; I'm happy to see that, at the end, I was right: there's is room and even need for light-weight Mooses.
| Navigate in group perl.moose at sever nntp.perl.org | |
| Previous | Next |
| © No Copyright You are free to use Anything |
Site Maintained by PHP Developer
Powered By PHP Consultants |