Free Mind development
Release 0.3.0
FreeMind Applet. I think the future of FreeMind will be the Web. The only mode yet available in the applet is the new "Browse" mode, so FreeMind maps can now be used on peoples websites, either to provide an overview or to replace the html. I also tried to get some system into all the keyboard shortcuts (sorry, folks ;-) (alt means: edit a node (toggle folded), ctrl means: command for the program (save) and shift means to modify the command (apply it to the whole branch) ). I also fixed some nasty bugs.
Fifth release (0.2.0) Usable for normal user: Intuitive menu structure. Comletely rewritten node-positioning algorithm to enable future extensions (named edges) and for better performance. Many small bugfixes and improvements.
To add named edges, I had to completely rewrite the view (especially the nodepositioning algorithm). Also improved the internal architecture and the controller.
Fourth release (0.1.0) New orientation: FreeMind is now a generic editor for tree structured data. Modular design, many bug fixes. Implemented modes: MindMap, File(experimental).
Third release (0.0.3) Hyperlinking between Mind maps, more than one Mind map opened at the same time. Basic printing functionality, internationalization, properties files.
Second release (0.0.2) Automatically resizing Mind map, better node editor, better node-positioning algorithm.
Design discussions with Richard Krutisch, evaluation of the failures of MindMapRK (eg. no Model-View division).
Increased performance of all operations ocurring deep inside the tree - folding, pasting, editing, leads to savings in memory consumption.
Some other minor performance issues addressed.
Instead of parsing complete map into XMLElement, we create a subclass of XMLElement which directly creates mind map nodes. A similar technique is used for saving of maps. Additionally, we improve font allocation.
Before, the default fonts were saved with map. Now, the map contains only fonts which have been changed from default.
The symptom was that unfold of some branches lead to a strange efect where all the nodes appeared on one line.
But beware, you have to remove "CODEBASE="."" from the <APPLET> tag in the HTML page, which loads the applet.
File mode is working satisfactorily, it is now enabled by default
However, change the property "maps" in your user.properties, if you are updating and have custome user.properties
This bug must have been introduced in release 0.5.5. The fact that no one has reported the bug until now suggests that no one really uses the edges. I do not use them either.
When escape is pressed while editing, change are not automatically commited. Also, when focus is lost, changes are not automatically commite. Rather, you are asked if you want to discard changes.
Nodes after high nodes are positioned high
+ - This problem is not that important, but also not artificial - positioning after big font nodes looks quite bad
+ - The problem is difficult to solve
Term "The box of the node"
Current algorithm is vertically positioning centers of nodes, not bottoms
Positioning related to bottoms of nodes rather than centers would necessarily require for each node information, how much has "the box" of the node above and below the node.
Currently, the box of the node goes above and below the middle of the node by the same amount
As a result, the only information needed for positioning is the height of the box ( child.getTreeHeight() )
Daniel: Sorry, this is not written for public :-(, confusing a bit
At the start, Freemind determines, which browser to use, by going through the list of preferred browsers and trying to run them. The first succesful browser is used for opening links later on.
When I edit node and press escape, the text is changed. It should be only changed as a result of enter.
Creating long nodes
Change the font size of editing area to match the font size of the node
I don't know of any, which would be platform independent
Actually, I don't know anything at all about that stuff
It's quite probable, that there is no such a mechanism on file system level or that it is too expensive to use.
Windows: Word uses auxiliary file
Linux: Emacs uses auxiliary file
Daniel: if I remember well, Joerg has already done something like that, but he did not make it to publish it.
One possibility is to let tooltip show the first sentence of the topmost child. Another is have special comment to be attached to each node. This comment would be shown in tooltip completely or only the first sentence would be shown.
Create installer for Windows, which behaves like typical installer - user does not have to think at all about installation
Daniel: This was originally in Joerg's ToDo list. I personally doubt that this is of big value. There are many much more burning issues.
If I understand it well, this would mean that some nodes cannot be folded. Why? What is the use case? I guess I can imagine some.
That's really interesting. What I would like to see it tool tip. Tool tip is an alternative form of information hiding to the idea of unfold. Having such an alternative (although only with depth one) could be nice.
There are lots of branches where I have a small remark saying what exactly should be in that branch. Of course, the tool tip is limited in its depth, which is not that good. But so what? When it becomes too large, you put it as a child of the node.
Implementing tool tip should be relatively easy. We have a nice editor here, no problem with that. We store tool tip as attribute of node, no problem with that.
However, let us keep the diverse issues relatively small. Let us concentrate on core competencies. Yeah, but this tooltip is a repeating pattern. You have a system of folders and you want to discribe in more detail what you want to store in the folder. And it is not that good idea to put that inside the folder. The UI possibility of tool tip is left unused which is a shame. In Word one would call it comment.
No one is forcing you to use comments, though. If you don't like them, don't use them. They should contain no crucial information.
(like word style) I think this should be a major feature
* select pattern to apply
* node patterns
* branch patterns
* pattern legend
* rules on pattern (like width depends on node levels)
* defined pattern by example
* special pattern for selected, root, normal, toggle,... nodes.
* derived pattern
I don't think this should be a major feature. But that's something I have already told somewhere else. However, that what Vincent describes sounds very consistent and good, as long as you want to have patterns at all.
* Is it possible to assign keys to the node->edge menu? If yes, which are the keystroke names?
* Is it possible to also assign a font (or just the font type attribute like 'bold') to a pattern? If yes, how can i do that?
* I'd like to specify somehow the width of a multiline node or explicitly add newlines. As far as i can see, a node automaticaly becomes a mulit-line-node if the text is long enough. Is there any chance to make this more configurable?
Daniel: You see? That's what I have been talking about. OK, but let us see if there are more requests of that kind. Because personally, I don't mine. Yeah, but maybe it would do to let it be customizable. Another thing is letting each node have its own width.
Daniel: It is possible to add newlines explicitly.
* Pictures in nodes: There is written on the web page, that there is a "not very nice possibility to have pictures in nodes". How can that be done? I'd like to have the possibility to add some icons after a node text.
So far the presentation is ok for me, with one exception: I'd like to be able to assign the main subtrees to a specific side of the root node. (I can do this right now using copy'n'paste, but the order is not preserved). Because mind maps also adress visual sense, i'd appreciate to have more freedom with this placements.
Additional comments to a node
As a Feature: what about additional comments to a node. I have seen this in an other mindmap program.
I am thinking about a splitted window or a small hideable tool window. In the second pane or tool window exists an edit field where you could paste larger texts. As an option: the first sentense (till the first ".") appears as tooltip text. The Edit field might contain formating options (maybe the RTFEditorKit or HTMLEditorKit from swing).
+ - Daniel:
I would like to keep things simple. We can have long nodes and therefore we have basically no need for some longnode-like attachment to nodes. The fact that other mind mapping programs have such feature suggest that I may be mistaken, but don't count on that.
However, having HTML editor of long nodes is my favorite idea.
But above you see that people would like to have additional comments to node. But anyway, let us keep the number of "features" low. Not everything that can be done should be done.
How would search treat such a comment?
What can you learn from this essay? At least that there are many ways of doing things like subtaksing, which I have already tried and which can in no way compete with FreeMind.
In the winter of 2001 it was three months since I entered a new company. In the dynamic environment of the company I had to be very proactive, that is, to know what I want to do, where I am going, what I have already done in which direction and what people I am waiting for in order to complete different small task. I was quite obsessed with the idea that I can solve a task that seems difficult by splitting it into smalled subtasks.
It's not only that I was obsessed with the idea, the idea also worked, of course. However, I have created relatively many subtasks and I needed to keep track of them. My attitude was - I am not going to do any superfluous investment in doing some programming myself. I am going to try to use existing software for that purpose.
I knew that I needed something which could provide the notions of tree and folding. I knew that both ideas were relatively spread in the user interface around and that I should be able to find something that already does the job.
One of the first ideas that came to mind was using filesystem - file represents leaf node and folder represents node with children. One could browse the tree and fold / unfold using internet explorer. I tried that and found out that it was very slow and inconvenient. For instance, adding a child to a leaf was quite an expensive operation. The searching was also quite slow, the complete operation was simply slow. Also, the sequence of items was not kept, they were automatically sorted alphabetically. This is no surprise as file systems do no keep track of the order of files in folders.
Then I came to the idea of using Emacs folding mode. I have always used this mode when programming and I just loved it. I tried to use it for the purpose, but I found it was too much overhead. I had to keep the depth of the node myself with the number of leading spaces, I had to insert fold marks and so on. I ended up with the feeling that this really was not the thing.
Then I realised that MS Outlook had something like tasks and tried to use his task system. However, I had to keep the tree structure myself. Even more, I only obtained folding by classifying the tasks into categories, that is I got no hierarchical folding. For some time I was running the system. It was nice that I could add colors, for instance. Also, I was using task to represent task, which felt good. But after a short use, I realized that I absolutely need hierarchical folding. Also, moving the folders of tasks around was quite tedious.
I started to search for hierarchical task tool using Google and I really found one - Tamot. I tried to use it, but it was buggy and provided no colors, at least not at the time.
Then I remembered that a friend of mine showed me some kind of tree tool which he was quite exited about - Mind Manager. I downloaded the tool and converted my Outlook tasks to the tool. After having done that, I knew with certainty that that was it - I had the right tool. Moving things around was so easy and intuitive, just like adding color or folding. The thing was also easy to overview.
There was only one problem - it was not free. Something told me that there must be some free tool for that because there are free tools for everything today. And I found and downloaded FreeMind. At first I was a little bit disappointed. It seemed that there was no way how to move things around, but accidentally I came accross copy and paste. Even though the thing did not look that good as Mind Manager, I felt it would do the very core job I wanted to get done: having tree with folding and relatively easy way to move things around - cut and paste.
When I started to use FreeMind, I was quite happy with it and I started to collect things that irritated me about it. Some of them were just inconveniencies, but some were quite severe drawbacks - like reordering of the sequence of children of folded node upon new load. FreeMind was actually very well fitted for collecting of such a list of problems. I promised myself I was by no means going to do any coding myself. But one day I convinced myself to do just a small improvement, which would enable both to follow link and fold node with double click. Once I started with this small improvement, I was lost and ended up with a series of developments to fit FreeMind into my needs and fix many, many small but annoying errors.
Well, do not store it to the frame, because then you would have to do the coding twice - once for application and once for applet.
Create new action class in corresponding controller (ControllerAdapter / MindMapController.) Controller should take care of all the interaction with user. Controller passes the operation on node itself down to node (NodeAdapter / MindMapNodeModel). If necessary, create new function in node.
If there is no interaction with user, do not create your own class, but rather use NodeGeneralAction.
Declare new action and fill it with an instance of the class.
Create new entry in node menu for the action, this you do in the same Controller source code, that is normally in MindMapController.
Create new english text in Resources_en.properties.
Add keystroke to freemind.properties
Daniel: I don't keep that. I keep it only if the number of classes in the package is relatively small, say not more than three.
FreeMind is a generic editor for tree-structured data and doesn't prefer any special kind of data. All code specific to any special kind of data is contained in a special Mode for that data.
The data is represented as a Mind Map, as described by Tony Buzan.
A modular design for the view may be implemented to make other views possible (JTree-like, top-down hierarchy etc.)
The space character is excluded because significant spaces may disappear and insignificant spaces may be introduced when URI are transcribed or typeset or subjected to the treatment of word- processing programs. Whitespace is also used to delimit URI in many contexts.
Although this rfc does not talk about file:// at all, if file: is to be considered a protocol (which it is not), then it logically follows that spaces must be excluded.
It is not possible to translate space to %20 on Windows - Explorer does not understand this. However, we do it on other platforms.
The previous changing of link manually was somehow buggy.
Solution with requester is absolutely clean from coding point of view. It does not probably look so advanced as the previous one, but at least it should be 100% bug free.
User does not have to press more keys because of that.
New code also enables unsetting links - in case user enters empty string.
When I first started Free Mind, I completely overlooked, that there's a possibility to cut and paste which dramatically lowered my evaluation of FreeMind. This should make it easier to find because pop up is one of the first things to do. You may say I am just one of those sloppy users, but am I :)?
Apart from that, cut, copy and paste are logically methods of node / branch and should be therefore available on popup. This goes in line with "object oriented GUI" saying that if I want to do something with object, I right click the object to see, what is possible.
In one of the previous modifications we have introduced advanced drag and drop features including pressing of control key. It is very strange, if you drag node using control and the node is not selected at the very moment and few moments later when you're dropping you realize, that in fact you are dropping quite different node.
Childer of folded node are loaded in reverse order, which is not nice. To reproduce this problem, try to create a simple map with root note, one folded child of a root and several children of that folded child; save the map and reload the map; The order of children has changed.
It is not a good idea to use semitransparency in icon. Java on Windows does not handle it (and perhaps on other systems too).
We have two possibilities for mouse double click - toggle folded and follow the link. These two are exclusive for one running FreeMind. However, most of the links are set in leaf nodes, for which toggle folded does not make much sense. Therefore, it is advantageous to follow the link, if there is anything to follow at all, and toggle folded otherwise.
In case there is a link in nonleaf node following the link is prefered too, but it seems that it is not too much overhead for a user to avoid storing links in nonleaf nodes he would like to fold.
On single click with no modifiers (Ctrl,Alt,Shift) pressed:
When mouse moves over a node and no modifier is pressed and at the same time only one node is selected, select that node.
Alternative way of selecting nodes: Alt + click.
There is a difference between fontName and fontFamily. fontFamily is just family nam, e.g. "Arial". fontName contains info about bold and italics, e.g. "Arial.bold".
It is not clear if the family name is case sensitive.
There are three methods related to name
Fonts in nodes and views
Every node has non-null font. Nodes share fonts, because their fonts are get through method getController().getFontThroughMap(font). Actually, controller has map of used fonts and when some font is already used, he returns that one. This cuts down memory consumption; measurably significantly, it is empirical fact, not only logical.
Could not we cut down memory consumption in similar way when allocating colors? Is it worth?
In java. method url.getFile should get file path of URL. However, this is not what you really get when on windows.
A good thing to remember is that file names on Windows cannot contain ":".
The information about base URL should be available in the clipboard, because the relative links from HTML pages are pasted as absolute into MS Word.
Give up.
~ How/when does requestFocus work?
After I have opened several maps and started to switch between them, I did not have focus in the map. It was necessaty to insert a special kind of requestFocus().
It was inserted in mapModuleChanged(). There is a special technique applied, which is necessary.
SwingUtilities.invokeLater( new Runnable() {
This method invokeLater() makes sure that all swing events are processed before the thing inside happens. In this case, viewing the component to be focused was in the event queue and did not really happen. This also explained, why I have gained focus if I switched from the map to the same map (that is no actual switching occured).
The most important factor in memory consumption is MindMapNodeModel. I analyzed the consumption using the switch -verbose:gc and -Xrunhprof, which caused VM to run full gc (instead of just gc).
I had a hypothesis that XMLElement is hanging in the memory. It was hanging until the full gc was run. Therefore, there is no need to worry about XMLElement. I analyzed use of font and although it seems there we lots of font allocated, I was not able to make conclusion that fonts are the problem. I tried to comment out font allocation for nodes, to verify the font hypothesis. I analyzed the number of font objects in dump to see that not many are really allocated. The fonts did not form significant proportion of consumtion. When other things are consider, it may be even useful to optimize on fonts, sure.
When analyzing with -verbose:gc, one has to take care about the difference between [GC] and [Full GC]. It's the second one which really clears everything which is possible to clear.
We leave the font as the child of node. The reason for that is that the code is in some sense ready for labelled edges. And if edges have labels, then they would have font too, I guess.
I tried to get FM working on Java1.3. First, I wanted to see what things I would have to comment out to get it running. After commenting out setRollover, MouseWheel and SystemSelection, I found out that code produced by 1.4SDK will hardly run on 1.3RE, because all the strings are using interface CharSequence, which exists only since 1.4.
As a result, one would have to also compile the sources with 1.3SDK. I did not want to do that. That was too much for me. I did not want to maintain two binary versions of FreeMind. Java1.4 presents substantial improvement over Java1.3, e.g. mouse wheel, system selection on Linux and other. It is unfortunate that most users do not have Java1.4 yet and that presents additional installation overhead for users of FreeMind, but that's how the world keeps on happening.
For editing of short nodes, we are using lightweight component JTextField. At the time, the dialog offered by this input is not modal, that is, you can e.g. boldify while editing, which is definitely strange.
~ java.sun.com > J2se > 1.4 > Docs > Api > Javax > Swing > JTextField
How the text field consumes VK_ENTER events depends on whether the text field has any action listeners. If so, then VK_ENTER results in the listeners getting an ActionEvent, and the VK_ENTER event is consumed. This is compatible with how AWT text fields handle VK_ENTER events. If the text field has no action listeners, then as of v 1.3 the VK_ENTER event is not consumed. Instead, the bindings of ancestor components are processed, which enables the default button feature of JFC/Swing to work.
~ java.sun.com > J2se > 1.4 > Docs > Api > Javax > Swing > JOptionPane
Editing is implemented in ControllerAdapter.java
What is maybe not so nice here is that node uses method toString() to get text of the node. Of course, so far the toString() has been implemented as returning the text of the node.
+ - Old editing code:
//edit(node, toBeSelected, textField,whenEdited);
//}
//public void edit(final NodeView node, final NodeView toBeSelected, final JTextField textField, FocusListener whenEdited) {
// Keymap keymap = textField.addKeymap("My",textField.getKeymap());
// Action act = textField.getActions()[0];//DefaultEditorKit.InsertContentAction;
// KeyStroke key = KeyStroke.getKeyStroke(KeyEvent.VK_A,0);
// keymap.addActionForKeyStroke(key,act);
You can either wait until your company buys you an expensive mind mapping software or use FreeMind now.
The operation with FreeMind is as fast as with normal text editor. You can use mouse, but you don't have to.
I cannot help the feeling that for the very basic use we are better than MindManager!!!
Daniel: I have quite a high feeling. I think Mindmanager will have hard time competing with FreeMind :-))
meta name="Keywords" content="mind mapping software, MindMapper, graphic, organizer, concept map, chart, visual tools, constructing knowledge, better way to communicate, think random patterns, association, record thoughts, logical sequence, easy tool, projects, visually organize, tasks, term paper, diagram, student centered, mind map, mindmap, complex, make better choices, think creatively, solve problems quickly, download free, present ideas, saves valuable time, brainstorm, brain storm, brainstorming, Mac version, management training, business, government, versatile software, teaching student, children, educational, graphic mindmapping, engineering, management, presentations, consulting, Corporate Training,thinking skills, education, outline, visio, visimap, tony buzan, infomap, inspiration, manage, radiant, collaborate, mindman, organizational tool, learning aid, macintosh">
meta name="keywords" content="mind mapping, mind mapping software, brainstorming, note taking, outline, planning, application, download, mind mapping program, outliner, mind mapping tool, organizing, information, outlining, mind mapping application"
meta name="keywords" content="map, mind, mindmap, mindmaps, mindmanuals, mindmanual, project management, mind-map, mindmapper, mind-mapper, information, architecture, usability, card, sorting, AI, tony, visualmind, viual, ygnius, conceptdraw, brain, idea, think, software, book, draw, type, code, buzan, mindmapping, learning, creative, creativity, mapping, memory, gael, abonasoft, bosley, freemind, ygnius, brainmap, brain, conceptmap, conceptmapping, concept,tool, programword, study, student, students, learn, colour
Taking the concept-mapping approach to Human-computer interface design.
Try the brand new FreeMind Browser Applet
(You need Java and JavaScript to run it.)
Without Javascript:
FreeMind for Netscape
FreeMind for Internet Explorer If you are not interested in the internals, you can see FreeMind as a Mindmapping tool. All FreeMind users currently use it as a Mindmapping tool. But keep in mind that FreeMind is even more than that.
Because FreeMind is written in Java, it will run on virtually any computer. Just try it! :-)
A bit more technically speaking, FreeMind is a general tool for editing tree-structured data. That means, FreeMind is intended for editing Mind maps, XML/HTML Documents, Directory trees etc. In future, even network-structures will be supported, ie. Topic Maps (ISO) etc. All these data is represented to the user as a Mind map. This is achived with a modular design, which makes it possible to easily write modules, only designing the model of the problem (the data structure), without caring for the visual representation at all. Currently a Mind Mapping and a File Mode are implemented. Other modes should follow soon.
FreeMind now has evolved from a specific Mind Map Editor to a generic editor for tree structured data. I want FreeMind to become for tree structured data what emacs is for linear data (ie. text). The front end is a tree presented as a Mind Map, other views may be implemented in future. The backend can deal either with a tree or with a graph, but the important thing is that both are presented as a tree to the user. This way FreeMind will provide easy, intuitive access to many kinds of complex data and become even more useful with every new backend/mode that is implemented.
What I had in mind when I began to write FreeMind, was creating a collaborative mind where people can intuitively share there ideas, knowledge and thoughts with each other. Of course FreeMind is only a first step into this direction, but I did this first step. Now a Mode must be implemented that makes collaboration over the Internet possible, maybe using the Topic-Map standard. I think linear text is a very poor way of representing knowledge, and by using trees and networks, visual representation, internet collaboration and open source we should be able to create some kind of a collaborative mind.
Welcome to FreeMind and the world of computer-based Mindmapping ;-)
To avoid confusion, yes, FreeMind indeed is a Mindmapping tool, but FreeMind is also more. It can represent any tree-structured data as a MindMap, and I look forward to once using it as a generic interface to the computer.
However, this is a dream, but currently you can use FreeMind as a Mindmapping tool, which is what all FreeMind users do. FreeMind has Modes, which means that you can use a specific mode to do a specific task, for instance MindMap-Mode for creating and viewing Mindmaps. The MindMap-Mode will be the only that you will use now, but keep in mind that there are other modes to come.
To use FreeMind efficiently, it's best to learn the keyboard shortcuts, so you don't have to take your hands away from keyboard, what would interrupt your workflow.
After all, I hope you like FreeMind, as I do, and have fun with it!
I have written FreeMind in Java, so you will need the Java Runtime Environment for your Operating System. That shouldn't be a problem at all, because Java is available for Linux, Windows, Macintosh, Solaris and even PDA's. Just Download it at java.sun.com/j2se. You need at least Java 2 Version 1.2 . If you can manage to install the JRE, your half on your way to install FreeMind (congratulations ;-).
FreeMind is packaged as a zip, and new versions are also available as tgz. Download the binary file (freemind-bin-x_x_x.zip) and create a directory where you want to install FreeMind into, and unpack the freemind-bin-x_x_x.zip into it. The source files (freemind-src-x_x_x.zip) contain the FreeMind sourcecode and are not executable! If you can't unpack the file, you need a compression utility. For windows you can take freezip. For Linux there should be such a utility on every distribution.
Once you have unpacked FreeMind, you can type "java -jar freemind.jar" on the shell if you are in the directory where freemind.jar is located. Alternatively, you can copy a link to freemind.bat (on windows) or freemind.sh (on unix) to your desktop. If FreeMind runs, open the file "freemind.mm", which explains the usage of FreeMind.
Links
FreeMind is widely configureable. You can select the language, english, german or french, make various defaults and choose which keybindings to use.
To configure FreeMind, edit either the file freemindUser.properties, which you should normally use, or freemind.properties, where I made the defaults, in any text editor, make your changes and store the file again as plain text. If you start FreeMind, the new properties are read in.
Configurations made in freemindUser.properties overwrite those made in freemind.properties, so you can play around and just delete the changed values from freemindUser.properties, if your changes don't work.
FreeMind should be intuitively to use. Just add the nodes you want. If you have problems with anything and think it's not intuitively, just send me a mail so that I can change it in the next release.
Because FreeMind is still in development phase, there are some unimplemented or experimental features:
Of course there are still some bugs in FreeMind (any software has bugs), but I use FreeMind every day and found it quite usable and stable. If you have any problems, feel free to send me a mail.
First of all, this is ALPHA Software! That means, it is not stable. There are many bugs for you to find, so if you find one, send me a mail so that I can fix it. You want to have stable software, don't you? So _really_ do this, or you may find the bug in the next release, too. (And if you find a bug, it IS a bug, not a feature, as Micro$oft tries to tell you ;-).
This is an early version, so there are many features missing: There is no undo/redo functionality (so be careful what you do ;-), there is no autosaving. All this will be fixed in future releases.
The fontselection is buggy, but thats a bug of Java (the swing library), so the only thing I can do is wait...
Of course performance must be improved, and more modes must be implemented. Modes that will come are a serious filesystem browser, a XML/HTML editor, a client to a mindmapping-server (so that multiple users can edit the same mindmap), and everything you can imagine that deals with tree-structures.
In future I want to create an applet so you can view mindmaps in your browser (combined with hyperlinking, this can lead us to a totally different web).
In future a modular view architecture can be implemented, maybe with true graph presentation. If you can think of anything else one could do with freemind, tell me.
ToDo
Release 0.3.0
FreeMind Applet. I think the future of FreeMind will be the Web. The only mode yet available in the applet is the new "Browse" mode, so FreeMind maps can now be used on peoples websites, either to provide an overview or to replace the html. I also tried to get some system into all the keyboard shortcuts (sorry, folks ;-) (alt means: edit a node (toggle folded), ctrl means: command for the program (save) and shift means to modify the command (apply it to the whole branch) ). I also fixed some nasty bugs.
Fifth release (0.2.0) Usable for normal user: Intuitive menu structure. Comletely rewritten node-positioning algorithm to enable future extensions (named edges) and for better performance. Many small bugfixes and improvements.
To add named edges, I had to completely rewrite the view (especially the nodepositioning algorithm). Also improved the internal architecture and the controller.
Fourth release (0.1.0) New orientation: FreeMind is now a generic editor for tree structured data. Modular design, many bug fixes. Implemented modes: MindMap, File(experimental).
Third release (0.0.3) Hyperlinking between Mind maps, more than one Mind map opened at the same time. Basic printing functionality, internationalization, properties files.
Second release (0.0.2) Automatically resizing Mind map, better node editor, better node-positioning algorithm.
Design discussions with Richard Krutisch, evaluation of the failures of MindMapRK (eg. no Model-View division).
Hyperlinking between Mind maps, more than one Mind map opened at the same time. Basic printing functionality, internationalization, properties files.
Released: 09.07.00
Internal possibility for named edges (not yet used), nearly completely rewritten view, better user interface, many improvements.
Status: working...
As long as this list exists, future nearly never brought what I awaited it to bring ;-). So I give up making any predictions now.
(Maybe this makes the roadmap needless? However... ;-)
Status: planning...
FreeMind is a generic editor for tree-structured data and doesn't prefer any special kind of data. All code specific to any special kind of data is contained in a special Mode for that data.
The data is represented as a Mind Map, as described by Tony Buzan.
A modular design for the view may be implemented to make other views possible (JTree-like, top-down hierarchy etc.)
~ FreeMind and this website are created by Jörg Müller.
If you like the program, have ideas for new features, find any bugs, or want to contribute (ie. find your name here ;-) mail me.
Thanks goes to:
We have the following mailing lists for FreeMind:
A mail is sent to this list whenever a new Version of FreeMind is released. The traffic will be very low.
This list is intended for you, the users of FreeMind. I will be on this list too and answer questions about FreeMind. It depends on you how much traffic will be on this list.
8. February 2003
FreeMind vesion: 0.6.0. I have large map with size 3.7 M. I use switch -gc:verbose to display memory consumption in DOS window. Most of the nodes use fonts as well as colors. The inner consumption went to 14.5 M. At next attempts is was 13.4 M. This is memory factor 3.6. However, the size of original map also contains tags, which are in FreeMind basically not present.
I set the color to fixed value upon loading and the difference was hardly noticable at all.
I removed text and I ended up with 10,5 M and 9M after full GC.
I remove every attributes of nodes, leaving them as small as possible, and ended up with 7,6M.
I even tried to set userObject to null instead of (String)"", but it made no difference.
I tried to switch children list's implementation to ArrayList, but it only produced 8,6 M.
I tried to have leaf nodes no children array but it made no difference to 7,6M.
Conclusion:
I would believe that we have reached the border of possibilities using conventional Java technology. We could probably make better by using lower lever Java programming techniques.
Making further advances now probably requires a good tool for memory analysis. An expert Java knowledge and experience could do too :).