I really like how Euphemia has shaped up internally. It is better than Merva in a number of ways. I applied what I learned from Merva but did some things better. This would not have been easy in Merva as there is so much code to change to even try some ideas out. I guess; if someone finds themselves working in a large code base they should consider starting fresh to flesh out some ideas and then consider moving what works well into the larger code base.
With this in mind I have started implementing some of these new ideas in Euphemia (small code base) into Merva (large code base).
My optimistic thinking has me tempted to try to do this in one pass but I know from experience that an incremental approach can be a much safer way to go. For example; when it comes to implementing layers in Merva I will;
- use existing diagram interface as the layer interface
- get a single layer working (the existing diagram)
- move guides and grid etc out of the layer
- get multi-layer working with just layers based upon existing diagram
- improve the layer interface to make more generic
- implement layers for; paint, grid, transparency
To flesh out some of this I have done some quick modelling (in System Architect (aka Merva) itself) to visualize the transition between the different steps.