Development
The development of FreeMind is coordinated using FreeMind's project page at SourceForge. Especially relevant are bugs, requests for enhancements (RFEs) and open discussion forum. We do not use the documentation part there as we use this wiki instead. For people who want to use this wiki rather than FREs at SourceForge, we have requests for enhancements page here at wiki.
To get the latest beta version of FreeMindHere. To compile Freemind on your ownIf you are a developer, just download the sources, unpack them, find the folder with the file build.xml, and let run the commant ant in that folder. If you want to be guided and get all the things you need to take care of described in detail, see guide prepared for you by Bob Alexander. To use concurrent version repository (CVS) with EclipseCheck out the guide by Bob Alexander. When working with CVS, remember that it is difficult to change directory and file names under CVS. Moreover, it not easy to remove files completely. Therefore, pay attantion when checking files in. The project manager thanks a lot. To become a developerDue to project reasons, we cannot make you a developer with CVS access of FreeMind directly. You have to follow the following steps:
Development resources
Modular model - view designThe architecture of FreeMind makes it possible that FreeMind becomes general tool for editing tree-structured data, that is mind maps, XML/HTML documents, folder trees etc. in future. All these kinds of data would be presented to the user as a mind map. Model-View-Controller design makes it possible for you only to write so called model of the data structure, without caring for the visual representation. Currently, mind map mode and file mode are implemented. Original vision of Joerg MuellerJoerg Muller is the original author of FreeMind, developing it up to the version 0.4.0. Here follows what he's got to say on his original vision:
One may think of extending FreeMind to work with networks as opposed to trees only, an example of this being Topic Maps (ISO). Daniel Polansky: Joerg's vision of FreeMind becoming Emacs for tree data is intriguing, but rather far fetched at the time. You would need to provide scripting facility and at least many basic operations, like upcase, downcase, replace and many others. It is even not evident that this goal valuable compared to other goals - there many quite obvious and still missing features. Why not use OPML for storage instead of FreeMind's native XML formatThe current version of OPML is not suited for our purposes. It should be easy to create conversion XSLT between FreeMind and OPML. Firstly, if we decided to use OPML, we would have to wait until the owner of OPML changes his standard to fit our needs. Thus, we would be dependent, not being able to act dynamically. Secondly, already the current version of OPML is insufficient. It does not contain most of what FreeMind already uses: colors, fonts, folded tag, edges and icons. It is not a superset of FreeMind's XML format, even not in a vague sense. Even if I renamed the elements names properly, OPML would still be a subset and not superset of FreeMind's XML. As a result, we have no benefit from using OPML right now. Summary: 1) we would run into dependence, and 2) OPML is insufficient, loosely speaking it is a subset. Why may FreeMind be more relevant than some other open source applicationsThere are many efforts to create new text editors, text processor and the like. While this activity is not without value, it does not fill that big value gap as mind mapping application. Take, for instance, text editors like JEdit. There are already well estabilished text editors like Emacs or Vim, and there are many others. It's not that these editors would be perfect, far from that, but they're still pretty useful and with some training users can become very efficient with them. With text processors, the thing is that most users in companies have already Microsoft Office for free. What does that mean? That means that the individual users do not have to pay for the MS Office, and they cannot effectively decide to use other Office platform either because of the value of easy sharing. Furthermore, there are competing free Office platforms like KOffice, OpenOffice or AbiWord. In mind mapping, the situation is quite different. You do not get commercial alternative granted in companies, unlike office applications. The point here is that most of MS Windows users, the mainstream, do not have a mind mapping application yet. For them, starting to use FreeMind is not a switch from Microsoft product to alternative product. It is a switch from scattered documents in incomparable and hard-to-overview formats to one document with unprecedented order and transparency - FreeMind's mind map. Therefore, I am expecting a growth of interest of free developers in developing and using this application. Furthermore, even though Java is quite slow and memory hungry, it solves the neverending quarrel between religious die-hard fans of different computing platforms, which I have first experienced with Atari 800 XL versus Commodore 64 battle, later IBM compatible versus Commodore Amiga battle, and nowadays Windows versus Linux battles. To create a new releaseTo succesfully complete a new release, do the following
Notice that the news cannot be monitored unlike forum, and forum has no RSS feed unlike news. All on keyboard mappingsCurrently, each function has at most one key assigned. But, it should be the other way around; the keys should have functions assigned, rather than functions key. For instance, it would be valuable to have both insert and tab assigned to new node function. (Actually on MS Windows it is right now not possible at all to bind anything to tab.) To implement embedded imagesTo implement embedded images, one would store binary data in a node, like <node TYPE="image" BINARY="x4543edvc...45ert"/> Upon opening the node for viewing, temporary file would be created and HTML viewer would point to that file. Upon editing, external image editor would be opened to edit the temporary file, like Gimp. To translate FreeMind into your languageDownload FreeMind's sources. There you'll find language files with names like Resources_en.properties or Resources_de.properties. Make a copy of the english master, rename it appropriately and translate the labels you'll find in this text file to your language. Send your translation as a patch afterwards. It is not clear how to handle international characters, though. Key words: internationalization, i18n. Chris: Well, Java says: You can create the resource file(s) using an encoding etc. but you must then convert the file to use the \uXXXX Unicode escape notation. This is easily done with the native2ascii tool included with the JDK. Currently, we have the following languages translated.
Improved HTML editingFreeMind's long node may contain HTML. However, it needs to be edited in its source text form. We can improve upon that by
Rendering of HTML nodes is slowRendering of quite long HTML nodes is slow. If you have a HTML page corresponding to ten paper pages, then the rendering of the node upon unfolding takes several seconds. The related code is in the method setText(nodeText); in the section if (nodeText.startsWith("<html>")) { // Make it possible to use relative img references in HTML using tag <base>. if (nodeText.indexOf("<img")>=0 && nodeText.indexOf("<base ") < 0 ) { try { nodeText = "<html><base href=\""+ map.getModel().getURL()+"\">"+nodeText.substring(6); } catch (MalformedURLException e) {} } setText(nodeText); This result does not give us much hope of improving the speed easily, as the command just tells Java's JLabel to render the page.here done by Java's JLabel. A solution would be to find a different HTML rendering Java component. We can also wait until Sun's Java virtual machine improves the speed of JLabel's HTML rendering. Documentation effortsPatch resizing images upon zoomOur user Mario Claerhout has written to us: Since I like freemind so much I decided to add a little contribution. Attached you find an altered NodeView.java which contains following modification : Nodes containing images are now also resized when zooming. I did this by adding the method: private String resizeImage(String text) { JLabel imageLabel=new JLabel(text); Dimension prefSize=imageLabel.getPreferredSize(); int width=(int)(prefSize.width * map.getZoom()); int height=(int)(prefSize.height * map.getZoom()); String result=text.replaceAll("(<html>.*?<img src=\".*?\")", "$1 width=\""+width+"\" height=\""+height+"\""); System.out.println(result); return result; }
|