> This doesn't work.  Mouse doesn't see the superclass's attributes because they
> were declared by a different namespace, TB2::Mouse.  The subclass must use
> TB2::Mouse if it wants to override attributes.  I hadn't realized that.  It
> also must use TB2::Mouse if it wants to consume TB2 roles.

Well, there's another option. Don't use any sort of Mouse. I know that
you wanted to save a lot of development work, but the trade-offs seems
to be mucking up everything. It seems to me that you're forcing the
issue and we're going to end up with something that's as fragile and
unworkable as what we had before. You have a lot invested, and
sometimes that makes it hard to dump work when it should be dumped.

I'm not saying that you should dump Mouse, but when I see a design
decision reach this far into the world (when nobody should have ever
noticed it), I generally think it's time to consider if it was really a
good idea. However, I have no experience with TB2 development.

As a person who will have to subclass TB2, I'm really not looking
forward to any of this. I shouldn't have "to deal" or even know about
the TB2 internals.

Is there anyway that you can create a subclassing interface so I don't
have to know?

    use TB2::Subclasser;

    my $subclass = TB2::Subclasser->new( ... );

I won't think much harder on that because I start thinking about Self
and how much I'd rather have that system over Python's. :)

Reply via email to