On 31 October 2013 22:37, Nicolas Cellier <
nicolas.cellier.aka.n...@gmail.com> wrote:

> 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 ;)
>
> like i said, we can invent anything, put many workaround and/or
conflict-resolution
rules. The main question is it really worth it?

We can endlessly theorize, how to put such thing and what should be
done/changed,
but first i need a compelling reason, clearly showing the advantage of
having it.
So far, i can only see, that it will bring more problems than solve.
I am in favor of KISS, unless there is big and apparent wins in having
extra complexity.


> 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.
>>
>
>


-- 
Best regards,
Igor Stasenko.

Reply via email to