This is a folder with released files pertaining to FreeMind, the free mind mapping and knowledge building software. I, Dan Polansky (or Daniel Polanský) am a key co-author of FreeMind.
Available for download below is version series FreeMind 0.7.1-XT, which includes e.g. FreeMind 0.7.1-XT-2012-04-16. The versions in the series are my personal versions, created by modifying FreeMind 0.7.1, including incorporating some items from later FreeMind versions (especially FreeMind 0.8.1 and 0.9.0) and including my independent custom modification and independent implementation of other features. The series has no undo but has some neat features that I like very much such as anchors. The new features and changes contained in FreeMind 0.7.1-XT-2009-02-25 are described in the file FreeMind-Dan-2004-2008.odt downloadable from below; the documentation of later changes is currently missing. (One charm of free-as-in-freedom software is that a skilled programmer can customize an application by modifying the source code. A non-programmer can hire a programmer to customize it for them.)
One is well advised to use this version of FreeMind (FreeMind 0.7.1-XT series) with caution. I am the only person who used this version, I estimate, even if for a long time and with no problems; it is not tested in various environments and setups. There is no guarantee that one is going to be able to use files created with this version in the official FreeMind (the current latest production version is FreeMind 1.0.1, 12 April 2014); it may work and it may not. One still has the option of writing a script to convert the mind map XML of this version to the one of the official version, but that requires programming or delegating the programming task to someone. A content escape route is still the export to HTML.
A suggested way of installation of the binary zip package of the 2012-04-16 version attached here (installation of other versions is similar):
Note on required operating system: Should work on all operating systems on which FreeMind works, including Windows, macOS and Linux. This is not an installer package.
Make sure you have Java runtime installed.
Download freemind-bin-0-7-1-XT-2012-04-16.zip and unzip it to a chosen folder (on Windows, perhaps somewhere in C:\Program Files).
Download FreeMind-Settings-2012-04-08.zip.
Place the content of the above to C:\Users\(username)\AppData\Roaming\FreeMind if you are on Windows; the folder applies to FreeMind 0.7.1-XT 2012-04-16, not to the 0.7.1-XT 2009-02-25 version. If you are on another operating system, place the content to the place where user.properties belong . The folder is determined in FreeMind.getFreemindDirectory() method, whose logic in 0.7.1-XT 2012-04-16 is more complex.
Alternatively, select which of the content you want to use and place only that; go through user.properties and adjust it to fit your preferences.
If you skip this step, FreeMind will be usable, but some goodies will be absent, e.g. my user icons will be absent and SimplyHTML editor will be disabled.
You should be good to go. Run freemind.bat or FreeMind.exe or whatever else is used on Mac, Linux or any other applicable operating system.
For more detail, it is a good idea to read the following sections.
I added file freemind-bin-0-7-1-XT-2012-04-08.zip, made on 8 April 2012, an executable binary distribution for download, intended also for non-programmers and technically unsophisticated people.
I made a very quick and superficial test of the binary on a computer that did not have FreeMind, with Java version 'openjdk version "23.0.2" 2025-01-21'.
I added file freemind-bin-0-7-1-XT-2012-04-16.zip, a newer version differing from the above one (...-04-08.zip) only in FreeMind.class per WinMerge. I no longer know what that difference consists in. I added file freemind-src-0-7-1-XT-2012-04-16.zip. I found both files in ...\Documents\FreeMind\freemind-src-0_7_1-extra\post folder on my local drive.
Defect/suboptimality: This version shows the version 2012-04-08 in Help > About menu, not ...04-.16. The reason I placed 2012-04-16 into the zip file name is that this is the time stamp of some of the files in the zip archive. The above mentioned difference in FreeMind.class does exist so it is incorrect (at least technically speaking) to conflate the ...-04-08 zip with the ...-04-16 zip, although I suspect they are going to be functionally nearly indistinguishable.
I added file FreeMind-Settings-2012-04-08.zip, to accompany freemind-bin-0-7-1-XT-2012-04-08.zip (or ...-16.zip). The content of this file is essential for a nice experience, nice to my taste. The file contains icons, BeanShell script adding actions to menu and user properties. The vanilla binary distribution above does not have SimplyHTML enabled; adding the user properties from this settings zip leads to Simply HTML being enabled.
The content of the file is to be placed at e.g. C:\Users\Dan Polansky\AppData\Roaming\FreeMind. And thus, there is C:\Users\Dan Polansky\AppData\Roaming\FreeMind\icons\percent_100.png and C:\Users\Dan Polansky\AppData\Roaming\FreeMind\user.properties. ("Dan Polansky" is to be replaced with your user account name.)
The icon set contains some additional icons containing the word "copy" in the name; they are redundant but do no harm.
What makes FreeMind offer the user icons in the icon menu is their being listed in the user properties file; having the icons in the icons folder alone does not suffice. This makes it possible to omit some icons from the icon menu, by not listing them in the user properties file.
I added file FreeMind-Dan-2004-2008.pdf as a PDF export from FreeMind-Dan-2004-2008.odt, as a convenience for people who do not have an .odt viewer such as OpenOffice or LibreOffice.
I added file SimplyHTML-DanPolansky-2011-11-28.zip for reproducibility. The file contains both SimplyHTML sources and binaries. I verified the binary dist\lib\SimplyHTML.jar in this zip to be binary-same to SimplyHTML.jar in freemind-bin-0-7-1-XT-2012-04-16.zip.
This file is not required for my version of FreeMind to be installed and used; it is here for reproducibility and to meet the copyright license requirements: GNU GPL requires sources to be distributed with the binaries. The FreeMind binary zip package contains the applicable SimplyHTML.jar, without its source.
Some of the changes I made to my version of SimplyHTML were never merged into the official SimplyHTML in SourceForge, though a considerable portion of my changes was merged. See e.g. SimplyHTML patch no. 10, SimplyHTML patch no. 11 and SimplyHTML patch no. 12 for some patches that were merged; there are other patches from me as well in the patch section in SourceForge. In 2011, I took steps to create another patch but I abandoned the effort somewhere in the middle (for my reference, there is a private email "Code indentation in SimplyHTML" from 2 May 2011 relating to these events). Someone else can try their luck in creating a patch and having it merged if they wish.
I added file SimplyHTML-DanPolansky-src-2011-11-28.zip as a pure source package of SimplyHTML for reproducibility.
The zip contains two renamed backup files, renamed from ".java" to ".jv", to prevent "duplicate class error". Now the files are named "SHTMLEditorPane - backup on 2011-05-02.jv" and "SHTMLPanelImpl - backup on 2011-05-02.jv".
In build.xml, I kept the original Java 1.4 version as the target. To build the package with modern Java, it needs a change. As part of verification, I changed it to Java 8 in build.xml and then succeeded in building SimplyHTML with "ant dist".
Enabling SimplyHTML, the built-in Java component for richt text/HTML editing:
In version 0.7.1-XT-2012-04-08, SimplyHTML is disabled by default.
SimplyHTML is enabled by setting a property in user.properties: simplyhtml_use=true.
user.properties file contains other properties relating to SimplyHTML.
An easy way to reliably enable SimplyHTML is to use the user.properties from the above settings file; this will make SimplyHTML work. If one does not want to use all the settings from user.properties (e.g. one does not want no_scrollbar=true), one can proceed more surgically and try to identify all the properties relating to SimplyHTML; with a bit of luck, they will all contrain the string "simplyhtml". (I apologize for currently not having the energy/gumption to investigate which properties exactly are required for SimplyHTML to work.)
All currently identified user.properties for SimplyHTML, with settings as used in the above settings zip:
simplyhtml_use=true
simplyhtml.show_splash_screen=false
simplyhtml.show_toolbars=false
simplyhtml.gray_row_below_end=false
simplyhtml.showViewsInTabs=false
simplyhtml.showMenubar=false
simplyhtml.writeHead=false
Java version used for the quick test:
https://jdk.java.net/23/; "OpenJDK JDK 23.0.2 General-Availability Release"; openjdk-23.0.2_windows-x64_bin.zip
java - version
openjdk version "23.0.2" 2025-01-21
OpenJDK Runtime Environment (build 23.0.2+7-58)
OpenJDK 64-Bit Server VM (build 23.0.2+7-58, mixed mode, sharing)
The features are covered in detail in the attached .odt and .pdf files, including implementation notes/details. What follows is a bulleted summary of the features, taken over from the attached .odt file and then edited/refined.
An overview of new features in FreeMind 0.7.1-XT 2009-02-25, compared to FreeMind 0.7.1, with view on FreeMind 0.9.0:
Anchors: The user can tag nodes with anchors, text items that are found first before any other text in the mind map when using the find function. Also, anchors are shown alphabetically sorted in a menu available in the popup menu for maps.
Categories: The user can tag nodes with categories.
Bitmap images: Images are stored as Base64-encoded PNG. They are pastable from clipboard, and are pasted as PNG. They can be edited using an external application of the user's choice such as Gimp. The user can create an empty bitmap image, to be edited later.
SVG: The SVG is shown by rendering it into a bitmap using Batik toolkit. The user can edit SVG in an external application such as Inkscape. The user can create an empty SVG node, to be edited later.
Font family: Font family is only stored in XML if it has been explicitly changed by the user. Previously, the font family was stored as soon as the user changed any property of the font of the node, such as font size.
Edges colored after nodes: The user has a user option (in “user.properites”) to derive the color of the edge from the color of the node.
Focusing on branches: The user can focus on one or more branches, leaving the nodes that are out of focus transparent and thus less conspicuous, or completely invisible. The nodes that are out of focus cannot be edited, including that they cannot be cut or moved around.
Templates: The user can insert one of multiple user templates using the menu in which the available templates are listed as menu items. User templates are stored in the file Templates.mm, and can be edited as any other mind map.
Node styles and shapes: A hardwired, half-baked feature. Node styles are introduced, contrasting to physical styles, but are not editable by the user in a GUI; instead, they are hardwired, meaning that an expert user can edit the relevant portion of FreeMind source code and recompile FreeMind to get more node styles. What was known as node styles is renamed to “node shape”, and includes “bubble”, “fork”, “diamond”, “ellipse”, and more. The node style is stored in the “style” attribute; an alternative design decision could have been that it would have been stored in the “class” attribute, modeled on HTML. As said, from the user's point of view, this is a bare bones, incomplete feature, which probably needs to be redesigned and reprogrammed to be of public use. Still, node shapes as are all right; the shape of a node is derived from its style; there is no attribute “shape” of the “node” element in XML.
Edge styles: New edge styles were added alongside “linear”, “bezier”, “sharp linear”, and “sharp bezier”. The new edge styles are “angle”, “cut”, “invisible”, “subclass”, “aggregation”, “composition”, and “having”.
Word count: There is a new function that counts the number of words and the number of nodes in a given selection of nodes, including the descendants of the selected nodes.
Recent files in two groups: The top 8 recent files are listed directly in the File menu, while the further recent files are listed in the submenu “More Recent” of the File menu. Also, each recent file is listed under a shortened path; its path and its “.mm” extension are shown in gray. A mnemonic speeds ups loading a recent file: The user can pressing F10, “F”, and the first letter of the file name, unless the file name starts with “The “, upon which “The “ is omitted and the letter that follows “The “ is taken as the mnemonic.
Optional icon for links: There is a new user setting (in “user.properties”) to show no icon to signal that a node has a hyperlink. The presence of a hyperlink can still be told by the change of the cursor upon hovering over the node.
Search field in the menu bar: When the user presses Control + F to search, a new search field appears at the top right of the menu bar, modeled on Firefox's search bar used for search the web of Wikipedia. Thus, there is no longer a search popup.
Toggling all toolbars: There is a new little icon placed to the top right of the menu bar that toggles (hides or shows) all the toolbars. There is a similar function in Adobe Acrobat, mapped onto F8 keyboard shortcut. The function is not mapped to any key in FreeMind.
Toggling menu bar: The menu bar can be hidden. To make the keyboard shortcuts still work when the menu bar is hidden, a new technique of assignment of keyboard shortcuts to actions is implemented.
Remove formatting: There is a new action for removing of formatting of nodes, assigned to Control + Shift + Space. It can replace the function of clearing the formatting using the physical style assigned to F1 key. Thus, F1 key can be freed for the action of showing help.
Opening of files upon startup: Newly, the user can specify which files, if any, should be opened upon startup, with reference to the last sessions. The options: open no file, open the last opened file, open all the files opened when the last session was ended.
Rich text editor – real estate: User options (in “user.properties”) are added to allow making the rich text editor SimplyHTML take much less screen real estate, by showing no menu bar, no toolbar, and by hiding the tabs for switching over from WYSIWYG editing pane to HTML source code editing pane.
Rich text editor – hyperlinks: Newly, hyperlinks can be followed from the rich text editor SimplyHTML by clicking on a hyperlink while holding the Control key.
Detached node: A node can be turned into a detached, yellowish node that stays on top of all windows, cannot be edited, but can be easily dragged around.
Secure saving in dot bak files: An alternative to automatic saving, there is a user option (in “user.properties”) to let the old version of a file copy to a backup version before the old version is overwritten with the version that is just being saved.
Pasting of hyperlinks with titles: Hyperlinks are now pasted with the title obtained from the web page to which the hyperlink points, instead of the URL made a bit more readable but still basically an URL.
Default zoom: The user can set the default zoom of the mind maps to be opened, in “user.properties”. This should come handy on high-resolution screens or for users who prefer larger fonts.
Dropping below node: Apart from dropping a node as a child and as an upper sibling, the user can now also drop the selected node below the target node, as its lower sibling.
Math: Showing math using JMathText component, which is inline and antialiased[*]. A downside is the incomplete support of LaTeX, and no recent activity of JMathText project.
Export to HTML: Exporting to HTML is extended with multiple features. Branches can be treated as lists even in the export based on headings. Some branches can be marked as not to be exported. Some branches can be marked to be exported as image, that is, a screenshot of the branch. Export of nodes with bitmap images and nodes with SVG is supported.
Arrow link: There is another shape of the end of the arrow available. Also, there is a different default routing of the arrow link.
Other features absent from FreeMind 0.7.1 are added: user functions (via BeanShell), report, timestamps, notes, attributes, and bookmarks. (The implementation of timestamps, notes and attributes is custom, not taken over and not relating to the implementation in the official FreeMind versions.)
Again, for detail, see the attached .odt and .pdf files.
Limitations of the above documentation of features: The documentation was originally created for FreeMind 0.7.1-XT from year 2009. The features added between 2009 and 2012 are not documented. These features can in part be discovered in menus that are added by installing/applying FreeMind-Settings-2012-04-08.zip; the features would above all be new actions such as Export to Mediawiki to Clipboard. From what I remember, many of these actions are implemented in Java as part of FreeMind itself; the BeanShell script for the action does very little and calls the Java function; some actions are directly implemented in the BeanShell script. As a result, there is a great loss of available actions/functionality when one does not instal my BeanShell script ("userFunctions.bsh"). This state of affairs (missing documentation, etc.) is a result of me originally not intending to publish my version of FreeMind after 0.7.1 for general consumption (in part to prevent proliferation of forks); I have now changed my mind (January 2025).
FreeMind home folder is the folder in which user properties, BeanShell script, user icons, automatic backups, etc. are stored. (See also the article on FreeMind home folder in the official wiki.) The code determining the home folder for FreeMind 0.7.1-XT 2012-04-16 follows, to help users find out which folder their FreeMind is using. It would perhaps be a good idea to add the home folder to the About dialog.
From FreeMind.java:
public String getFreemindDirectory() {
// ENV FREEMIND_HOME overrides everything else
try {
String freeMindHome = System.getenv("FREEMIND_HOME");
if (freeMindHome!=null)
return freeMindHome;
}
catch (Exception ex) { }
//
String basePath = System.getProperty("user.home");
String finalPart = getProperty("properties_folder"); //".freemind"
String osName = System.getProperty("os.name");
if (osName.startsWith("Win")) {
try {
String appDataPath = System.getenv("APPDATA");
// The above throws an exception in Java 1.4.0,
// but not in Java 1.5.0 and later.
// The above looks like "C:\Users\<username>\AppData\Roaming" on Win Vista.
if (appDataPath != null) {
basePath = appDataPath;
finalPart = "FreeMind";
}
// Else default to "user.home"
}
catch (Exception ex) { }
// In case of exception, default to "user.home"
}
return basePath + System.getProperty("file.separator") + finalPart;
}
FreeMind 0.7.1-XT-2012-04-16 contains changes to the XML file format compared to 0.7.1, to support new features. The changes are described in FreeMind-Dan-2004-2008.odt/pdf, albeit not in one place/section.
If you make extensive use of file-format-affecting features of FreeMind 0.7.1-XT-2012-04-16, you are locked into that version except that you can write a file format conversion script or hire someone to write the script (but even then, some of the features are probably not supported by FreeMind 1.0.1).
The changes in the file format are as follows:
Node content that is rich text (HTML) is stored in the same way as in FreeMind 0.7.1., as escaped content. This is unlike in FreeMind 0.9.0..
Anchors were added via attribute ANCHORS of element "node", e.g. '<node ANCHORS="FreeMind;mind mapping" ...>'.
Categories were added via attribute CATEGORIES of element "node", e.g. '<node CATEGORIES="article;biology" ...>'.
Support for images embedded in nodes was added by adding attributes CONTENT and CONTENTTYPE to element "node". An example CONTENTTYPE is "image/png".
Time stamps were added, via attributes CREATED and MODIFIED of element "node". The attribute MODIFIED is only stored if the node was changed after creation (this is unlike FreeMind 0.8.1 or 0.9.0, from what I remember, where the attribute MODIFIED is always stored; to be verified).
Attributes were added via element "attribute" nested in element "node", with attributes VALUE and NAME. E.g. '<attribute VALUE="300" NAME="width"/>'.
SVG content is stored as escaped node content, just like HTML in FreeMind 0.7.1. Therefore, there are no additional elements or attributes to support SVG.
Plain text notes were added, stored in the "note" attribute of the "node" element in XML.
Scripts (BeanShell ones) are not stored in the mind map files (no impact on file format), unlike in FreeMind 0.9.0. FreeMind 0.9.0 uses Groovy for scripting rather than BeanShell.
Support for file format changes is in part to be found in XMLElementAdapter class. Diffing this class between 0.7.1 and 0.7.1-XT 2012-04-16 should reveal all the changes described above.
jdk.java.net – official Oracle open-source Java
freeplane/shtml, github.com – some kind of additional repository for SimplyHTML within Freeplace project
Thread: [Freemind-developer] Dan's development in 2004-2008 , sourceforge.net
FreeMind / Patches / #119 Dan's development in 2004-2008, sourceforge.net