New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Mark abstract classes in Microdown package - Second attempt #9211
Comments
I have developed and I still develop Microdown. |
Your statistics are not really good. |
BTW
So it means that all the tools such calypso cannot use the isAbstract information correctly. |
So to me isAbstract is a bad concept. Different users should introduce specific methods that clarifies the intent. |
Yes - which to me looks more to be the reason you now object. Because for other packages it was
It already is part of Pharo since a long time. I did not invent it - just use it like it is used by others
It's also not my statistics - it is the number of implementors the standard image shows.
You ask what is the added value of abstract classes? For sure I do not have to tell you The mentioned classes at the moment respond wrongly to their API as they return false If you are now convinced that making a distinction into concrete vs. abstract classes is bad At least to me #isAbstract is communication to the user to know if and how the class could/should be used.
The discussion is independent from past problems in tools like Calypso. If I'm not mistaken it is about having
So why do you (as author of the package) state them then as abstract in some names and comments yourself?
I'm not aware that abstract vs. concrete classes are a concept of static typed systems only.
I do not ignore what you say - still I'm not convinced why we should do it differently for Microdown. The result If the majority agrees with you to get rid of #isAbstract now then this is fine too - but it should then be done If a classes in some packages respond correctly and classes in other packages (like Microdown) respond wrongly |
Which I do not BTW |
In Issue #9175 and related PR #9176 a change was proposed from my side for the classes
to return true for #isAbstract (like it is done for many classes in the image) as these classes:
Applying the proposed change in PR #9176 would:
The proposed change was following the regular contribution process in having a review from another person first:
it got reviewed and accepted by @MarcusDenker and was merged then.
Right after that:
which is totally unclear as no discussion happened (at least not visible in the issue tracker)
SORRY: to be honest from the outside point of view this behavior is neither rational or clear nor in any way reproducible
regarding reasoning. There was neither "a real discussion" as said nor a real reason to revert (or even
violate the integration process with another pair of eyes). One could also call it short-term "mood decision".
Can we please return to rational decisions?
Beside the already mentioned reasons I gave above the following could be said additionally:
Implementing #isAbstract to return true for abstract classes is a common pattern ever since. It might not be ideal, but
its common practice. It is following what used in many well known and respected internal and external packages from
SUnit, Roassal, Zinc, ... up to Seaside and many other.
We have 361 implementors of #isAbstract within the Pharo 9 image in the various packages and now Microdown
package should be an exception and not implement it or continue to wrongly return false although the classes are abstract?
Sorry - but I really fail to see why the change was reverted. I do not understand why @Ducasse brings the image back to a state where these classes wrongly respond to #isAbstract with false although either from name or comment of these classes it says that they are abstract.
So I propose it again and gently ask for more opinions from Pharo team and community side.
The text was updated successfully, but these errors were encountered: