[Cuis-dev] Porting State of Magma
Philip Bernhart
philip.bernhart at posteo.de
Sun May 16 13:43:11 PDT 2021
Hi,
some people were interested into porting Magma to Cuis.
After investing roughly a week into that project,
I think I'll invest my time now a little bit in other
more promising projects and come back to it after I
got _atleast_ my mail re-implementation working:
https://github.com/Phantasus/Cuis-Smalltalk-Mail/
The current state of it is documented at:
https://github.com/Phantasus/Cuis-Smalltalk-Magma
What is the current state?
1. Core packages converted in format for Cuis
2. Hooks were disabled, which caused crashes when
magma registered them on loading the package (startup/shutdown
hooks)
3. Notification handling is turned off, as there is no mechanism
for them in Cuis as they behave in Squeak
4. MaCollections tests pass, Serializer tests pass. The server
tests don't
5. A good bunch of the Squeak classes were replaced by Cuis versions
6. Some code was refactored/rewritten just to make it useable in Cuis
or to understand an error
7. Special hooks still exist in the codebase, but were reduced by
me so that Project, monticello and Environments don't need to be
re-programmed just to get Magma running.
8. Creating an on-disk repository kind of works, magma asks for
a user id then and you need enter it twice, because for some
reason which I don't yet understand is that the first time is
discarded and then causes an corruption error, which shows
an error screen with the text that the database is corrupt
and is restoring, then it tries to read an object from it
and the object id isn't valid and in turn causes a new
MagmaInvalidOid error.
What makes it hard?
1. Hard squeak bindings and hooks, so you need to have all the time
a Squeak image running, just to be able to understand some errors.
2. Complexity, complexity
3. Concurrency of processes and critical paths within the image as
Magma starts them all the time for different housekeeping tasks.
4. Notifications and exceptions, they are signaled all over the place
and can contribute to the overall porting difficulty.
5. Sometimes rather dense coding style, so things need to be rewritten
that even the average joe can understand it. I can't read nested
blocks with indentation which is for my taste rather obscure.
Cheers,
Philip
--
More information about the Cuis-dev
mailing list