[Freemind-developer] FreeMind Design aspects
A premier mind-mapping software written in Java
Brought to you by:
christianfoltin,
danielpolansky
From: Dimitry P. <dpo...@gm...> - 2008-01-05 12:45:48
|
Hello, last days I have spent many time analyzing current state of the program design. And I have run into troubles: IMHO the complexity of the program which can be measured on amount of different interfaces, classes and dependencies between them, is significantly bigger than required by the features we have. The purposes of many classes and the patterns they follow are neither documented nor self evident, the class and methods names are not really helpful either. Because simplicity and clarity of the program design is very important for both its long life and my satisfaction as a developer, I am not very happy about it. I see the following ways to deal with the problem: 1. Because the only two persons significantly contributed to the program in the last years, we could try to exchange and complete our knowledge. We could provide a javadoc documentation explaining the intention of the relevant classes and packages. We could also use any kind of synchronous communication with the purpose of understanding the things before trying to change them. We could use chat, skype or phone, but I could also personally come to Berlin for one or two sessions. This way we could design the changes together. 2. Alternatively I could develop a new design by myself. The new design would have a relatively small kernel and further mutually independent packages depending only on this small kernel. The new design would extensively use the Extension Object pattern proposed by Erich Gamma and used in Eclipse. The pattern is described in his book "Contributing to eclipse", it is also explained in http://www-st.inf.tu-dresden.de/Lehre/WS04-05/dpf/slides/9-framework-extensibility.pdf (Personally I have read the book, the pdf is just a link returned by google). This pattern makes possible attaching of the any extension objects to some object which does not depend on them by itself. Using this pattern we could attach new actions to the controller or new model elements to maps or nodes without changing their own code. Such design would make no difference between managing of the freemind "native" actions and model elements and of the elements coming from a plug-in. (NodeView is already able to display added elements, it results from refactoring I did 2007). The current plug-in framework (which IMHO is very difficult to use and to understand) could be replaced by more transparent and light-weight solution. But if I had to work alone, I would be not able to consider Chris's ideas and wishes. Dear Chris, that's why I would like to ask you to write your wishes about how to organize our work and communication here if this list. Best regards, Dimitry |