[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