It would certainly be hard to get things done without Dimitry's energy and enthusiasm. I think it's best to work out an overall road map for the future, though, especially if we're thinking about doing a major refactoring. I think we need the following goals, most of which Dimitry has already expressed:

  1.  Match the current capabilities of the current FreeMind
  2.  Provide a clear architectural model that is both easy to
     understand and easy to extend. We need to consider possible future
     directions for FreeMind and make sure we don't design ourselves
     into a corner. (I don't think that's likely, but it's always good
     to be cautious.) For instance, I think it would be good to have
     FreeMind support the multiple document model that most Windows
     applications support. The user should be able to have multiple
     maps open in multiple windows. It would also be nice to be able to
     link maps to each other. (If that's not a capability that already
     exists that I've overlooked.) I'm not suggesting we necessarily
     put those in during refactoring, merely that we avoid going down
     paths that would prevent those kinds of additions.
  3.  Provide much clearer and more comprehensive documentation of the
     core code, mostly via JavaDoc. We also should consider developing
     an online documentation Wiki, similar to that used by Blender and
     other projects.
  4. Build with testing in mind. We should plan on building a
     regression test suite that we update with each new release.

Ray

Eric Lavarde wrote:
Hi,

I can't say much about the how, but concerning the what, I do fully agree with Dimitry: the best way to get a community of developers is to have a clear plugin architecture, where new developers can start working on, without caring much about the core of the program.

As a side note, new or old design, javadoc descriptions are very much welcome.

Chris, I truly think that you need to give Dimitry a clear answer about how you want to proceed: either you have the bandwidth to work with him on the "future" (old adapted or new) design, or you should accept that he drives the future direction of FreeMind. I truly think that, for an Open Source project, the person with the most "drive" (Schwung/Dynamik/Antrieb) should drive it, else you loose too much momentum. And currently it's Dimitry who has the most drive (not difficult, he doesn't have a child :-) ).

Hope we can progress on this point,
Eric

Dimitry Polivaev wrote:
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



-------------------------------------------------------------------------
This SF.net email is sponsored by: Microsoft
Defy all challenges. Microsoft(R) Visual Studio 2005.
http://clk.atdmt.com/MRT/go/vse0120000070mrt/direct/01/
_______________________________________________
Freemind-developer mailing list
[email protected]
https://lists.sourceforge.net/lists/listinfo/freemind-developer


-------------------------------------------------------------------------
This SF.net email is sponsored by: Microsoft
Defy all challenges. Microsoft(R) Visual Studio 2005.
http://clk.atdmt.com/MRT/go/vse0120000070mrt/direct/01/
_______________________________________________
Freemind-developer mailing list
[email protected]
https://lists.sourceforge.net/lists/listinfo/freemind-developer

Reply via email to