Hehe, no problem, because any method from SecondThirdPartyRandomExtensio
nPackage would know which z slot to use.
Or if you insist on uniqueness, you can invent decorators like well known
languages ;)

It could get more complex if a FourthThirdPartyExtension would like to
extend the second extension further and directly access this specific z
slot ;)


2013/10/31 Igor Stasenko <siguc...@gmail.com>

>
>
>
> On 31 October 2013 08:25, Tudor Girba <tu...@tudorgirba.com> wrote:
>
>> I completely disagree with this point of view :).
>>
>> We should assume an open world, not a close one. From this point of view,
>> any part of the system should be extensible by anyone. In most other
>> languages I know, it is not even possible to extend easily a class with new
>> functionality. In Pharo we can, and we know it is a powerful mechanism. It
>> is not the responsibility of the base class to know what extensions are out
>> there and protect against them. Just like with subclassing, It is in the
>> responsibility of the extender.
>>
>> We should be able to do the same with state as well. Without this
>> mechanism, we are forced to put in place clunky dictionary-based mechanism
>> to support state extension. Essentially, any white-box framework does that.
>> For example, Morphic does that, FAMIX and Roassal do that, too (and yes,
>> this is not a bad thing).
>>
>> We need this mechanism in the environment, and if I understand Slots
>> correctly, now we have first class support for it. This also means that
>> overrides will be easier to deal with, too. Of course, overrides can induce
>> headaches from time to time, but we should treat these headaches with
>> proper tools, not by forbidding the world to extend.
>>
>> And if we are at it, we should also be able to extend a class with
>> Traits, too.
>>
>> it is doable, and easily, as others saying nothing prevents you from
> saying
> SomeClass addInstvarNames: 'foo'
>
> but the problems in not extending per se, but how you manage it at source
> level?
>
> Like you said, we now having slots.. so
> then how you think a class definition may look like if some class has
> extension slots
> defined by other package?
>
> Object subclass: #Point
> slots: {
>   x, y -> Kernel-Classes
>   z -> ThirdPartyRandomExtensionPackage
>   z -> SecondThirdPartyRandomExtensionPackage
>   z -> ThirdThirdPartyRandomExtensionPackage
> }
>
> i am not against being open.
> i am against being open to opening can of worms ;)
>
> (Apart from completely inadequate proportion between effort to implement
> such feature and supporting it in many tools (MC etc) comparing to the
> actual/current need of having it).
>
> Clearly, there is no limits in complexity where we can go in attempt to
> describe our systems with metadata up to tiniest level of detail.
> Except from some real-world ones:
>  - implementation effort
>  - ease of learn & use
>  - and at last.. sanity :)
>
> Cheers,
>> Doru
>>
>>
>>
>>
>> On Wed, Oct 30, 2013 at 10:54 PM, Camillo Bruni 
>> <camillobr...@gmail.com>wrote:
>>
>>>
>>> On 2013-10-30, at 22:36, Igor Stasenko <siguc...@gmail.com> wrote:
>>>
>>> > I don't think there's something to fix.
>>> > You cannot 'extend' classes belonging to other package in any other way
>>> > than adding extension methods.
>>> > Allowing extension of ivars or any other vars by foreign package
>>> > is road to nowhere.
>>> >
>>> > I would not like if shape of my kernel classes depends on what
>>> packages i load
>>> > or in what order i loaded them.
>>> > To me it is clear that if one needs to add/remove/modify instance
>>> variables
>>> > of some class, those changes should belong to the package containing
>>> that class,
>>> > not some random package.
>>>
>>> Exactly, it would cause the same problem as we have with overrides in
>>> monticello
>>>
>>
>>
>>
>> --
>> www.tudorgirba.com
>>
>> "Every thing has its own flow"
>>
>
>
>
> --
> Best regards,
> Igor Stasenko.
>

Reply via email to