# One man's look at FreeMind

This article by Dan Polansky is on FreeMind, a free mind mapping software. This article was started by one of the main FreeMind authors. Given the possible bias and conflict of interests of the author, it is advisable to verify statements made in this article in independent sources.
FreeMind is an editor of mind maps. A FreeMind mind map is a hierarchy of plain text or rich text (HTML) collapsible nodes, presented on the screen via a characteristic layout. There is a root node surrounded by an oval outline. Per default, each non-root node is visually underlined and is connected to its parent node using a curved line (Bezier curve per default). Different styles of nodes and connecting curves ("edges") can be chosen. Each node has child nodes, which have their child nodes, etc. The collapsed state of a node is saved in the mind map file. When the node is to the right of the root node, its child nodes are also to the right, layed out in such a way that the parent node is at the vertical center of the block of its child nodes; when the node is to the left, its child nodes are also to the left. There is a range of additional features mentioned below.

## General

Consistent with user reports, FreeMind shows remarkable simplicity combined with productive keyboard shortcuts. It provides richness that lies somewhere between a plain text editor and a word processor. It exposes hierarchical relationship between parts of a document or information node structure in a strong way. One of the defining features of FreeMind is the presentation of hierarchy of nodes as a collapsible, possibly large, tree of nodes that can contain short plain text, long plain text paragraphs, and long HTML-formatted plain text paragraphs, layed out on the screen as a mind map. One can think of the resulting information structure and presentation in various ways, including as a traditional mind map and a rather large knowledge base collecting plain text notes in a hierarchy, as if a hierarchical notebook. One can create something like an encyclopedia in a single mind map if one wishes, and that is what Daniel Polansky, one of the main authors, did as part of his employment, based on his self-report.
Features of FreeMind are described in Wikipedia article as well as on the official web site.
Written in Java, FreeMind runs on Windows, Linux and macOS.
FreeMind is documented in FreeMind wiki hosted in the official web site.

## Features

Features of FreeMind include the following:
* A hierarchical tree of nodes.
* Collapsing a subtree on one click.
* A node can be short plain text one, long plain text one and rich-text-formatted one via HTML. The version of HTML is not specified; it is one that can be shown by the Java platform JLabel class.
* A HTML node can be edited using the built-in SimplyHTML editing component or the source HTML can be copied and pasted to an external HTML editor or syntax-colored plain text editor.
* Font color and background color of nodes.
* One hyperlink per node, to point to a local file or to a web URL.
* Breadth-first search in the subtree of the currently selected node.
* Physical styles making it possible to apply a predefined color to a node by pressing a built-in shortcut from F3 to F9.
* Clouds, having different colors.
* Time stamps for creation and last change per node.
* Customizable keyboard shortcuts.
* Built-in icons; user icons.
* Attributes for each node.
* Undo.
* Graphical links, elsewhere called connectors, connecting nodes, carrying no label.
* A note per node, in HTML, editable in a pane per default located at the bottom, with customizable location.
* Export to HTML (multiple functions).
* Spell-checking in FreeMind 1.0.1.
* Node cloning in FreeMind 1.0.1.
* Etc.
Further reading:
* Main Page#Features, freemind.sourceforge.net
* Releases, freemind.sourceforge.net

## Storage format

FreeMind mind map is stored in a relatively simply XML format, not zipped, as a single file. The traditional file name extension is ".mm". A downside of the format is that Unicode characters beyond 7-bit ASCII are stored in XML entities rather than UTF-8, making storing the mind map in a revision control system and viewing them in a plain text editor remarkably inconvenient, especially for, say, Asian scripts. One consequence is that FreeMind mind maps are rather easy to generate programmatically, whether via Python or Java, something users report doing.

## Authors and contributors

Authors of FreeMind include Jörg Müller (German), Daniel Polanský (Czech), Petr Novák (Czech), Christian Foltin (German), Dimitry Polivaev (Russian-German) and others. The project was started by Jörg Müller as part of his study at a university at Freiburg.

## License

FreeMind has a free-as-in-freedom license, GNU GPL V2+. However, some libraries used have a GPL V2 incompatible license, so for practical purposes, the license probably has to be interpreted as GNU GP V3+, since GPL V3 created compatibility with these licenses.

## Reviews

User praise, feedback and critical evaluation can be found in the following:
* SourceForce project reviews. Provides star-based score.
* Thank you for the music forum
* Marketing # Who writes about FreeMind on the web, freemind.sourceforge.net

## Freeplane

Fork of FreeMind, Freeplane, exists, created by Dimitry Polivaev, one of the contributors to the FreeMind project. Consistent with user reports, Freeplane adds remarkable complexity over the original simplicity of FreeMind; some find the host of new features appealing and worthwhile, whereas others feel that it harms simplicity and elegance and adds what one could informally call cruft

## Official versions

Official versions or releases are listed here:
* Releases in wiki, freemind.sourceforge.net
* https://sourceforge.net/projects/freemind/files/freemind/
** https://sourceforge.net/projects/freemind/files/freemind/1.0.1/ -- release 1.0.1. is currently the most downloaded release
* https://sourceforge.net/projects/freemind/files/freemind-unstable/

## Dan Polansky version

A custom Dan Polansky version made on the basis of FreeMind 0.7.1 is available from here:
* https://sites.google.com/site/danpolansky/freemind
** file freemind-src-0-7-1-XT.zip for the source code
** file FreeMind-Dan-2004-2008.odt describing the changes made to the source code
About the version, FreeMind 0.7.1-XT:
* The version has no plugins and no plugin architecture, which makes it more secure in general.
* The version is probably not widely used, so it may be much less tested in practice.
* The version was made available only in the source code form, to steer potential users to the official FreeMind version. Nonetheless, those who love the simplicity of FreeMind 0.7.1 can prefer FreeMind 0.7.1-XT.
* The source code is located at freemind-src-0-7-1-XT.zip.
* The version is in the spirit of Dan Polansky's minimalism, as contrasted to the much increased size and complexity of version after 0.7.1, starting with FreeMind 0.8.0.
* Certain file format extensions or changes may be not 100% compatible with the format of the official FreeMind versions.

## Word processing

FreeMind can be used as a simple word processor, instead of Microsoft Word or OpenOffice/LibreOffice Writer. FreeMind lacks many features of traditional word processors, yet has some features of its own to add. Moreover, the lack of additional features prevents distraction.
Features absent from Microsoft Word:
* FreeMind has an excellent folding ability, arguably not matched even by MS Word's outline mode.
* FreeMind lets you edit one chunk of information at a time, preventing accidental edits to unrelated parts of the document: you can only edit a node in a separate window.
** An accidental keystroke pressed while editing the current node has no effect on other nodes.
** Chunks of information are as if preselected to be moved around. In a traditional word processor, you have to select a text freely before you move it somewhere else; nothing prevents you from accidentally omitting the first character in the paragraph that you are selecting with the mouse. In FreeMind, it is the whole nodes and branches that are ready to be moved; several paragraphs can be not only easily but also confidently selected before they are moved somewhere else, which is equally valid of sections, chapters and articles.
** A paragraph-long node can have color rapidly and confidently changed by pressing F3 throught F9 or Alt + B.
** When user edits a long node, they do so in a separate window while the old content remains in the mind map. It is only when they confirm the change that the old change gets replaces. This creates the psychological effect of a commit, potentially nudging the user to review the changed text before confirming the change. It produces a chunky unit of work on the use level not existing in traditional word processors.
* The mind map files created by FreeMind are very transparent: they are plain unzipped XML files. They are easy to generate programmatically, and easy to read in a plain text editor except for the fact that Unicode points beyond 7-bit ASCII are stored as character entities. Technically-minded users can store FreeMind mind maps in a revision control system—a piece of software that keeps the history of changes of a plain text file and can show differences between subsequent revisions of the given file. Examples of such programs include CVS, Subversion, Bazaar and Git.
* FreeMind search is a breadth-first one, meaning that articles and sections are usually found before body text; that, however, depends on the level of nesting, so sometimes a body text can be found before a section heading. The search can be restricted only to a branch, meaning a particular folder, article or a section, by placing the cursor to the root of the branch before starting the search function.
* One can easily add icons from a limited reasonably well chosen selection, and they are then identified in the mind map via icon names rather than being stored as images. In Word, one has to pick a file to be used as an icon and insert it in a proper place, in a way that is much less seamless. And then, each additional occurrence of the icon file takes additional space in the Word file.
* In FreeMind, one can easily connect nodes using "arrow links", connecting curved lines. In Word, one cannot so conveniently create a connecting line from one paragraph to another; if one succeeds at all, the relative position of the curved line and the paragraphs is not guaranteed to remain stable.
* In FreeMind, adding a cloud is easy and fast. In Word, the closest analogue is perhaps a paragraph with different background color, requiring multiple mouse clicks to ensure.
Limitations:
* FreeMind lacked spell-checking until version 1.0.1. In older versions, to spell check, one can export an article or its section to HTML, copy it to OpenOffice/LibreOffice Writer or Microsoft Word, and spell check there. Alternatively, one can open the exported HTML document in the open source HTML editor Kompozer, and spell-check there.
* FreeMind cannot embed other documents such as spreadsheets and presentations
* FreeMind's built-in rich text editor available in 0.9.0 series is still quirky.
The way I (Daniel Polanský) use FreeMind, one mind map corresponds to a folder of documents rather than a single document. FreeMind handles even large mind maps well as long as most of the content is folded; my largest mind map has 30 MB. I have a short node per folder or category of articles, a short node per article, and a short node per section of an article; long nodes are body text and include paragraphs, bullet lists and numbered lists, and tables. I do not use notes.
For finishing, an individual article can be exported to HTML by pressing Control + H, and copied and pasted to Microsfot Word or OpenOffice/LibreOffice Writer.
One can print articles by exporting them to HTML, and printing the result from a web browser, getting nice results in this way. However, there is no support for headers and footers, unlike in traditional word processors. Alternatively, one can copy and paste the text from the exported HTML to Microsoft Word, and finish the document for printing there.

## Security

Security of the data is of concern. One is the risk of data loss, the other one is of data theft. The following is written not by a security expect; in case of doubt, it is advisable to contact a security professional to perform an analysis or audit.
* Data loss risk is mitigated by FreeMind saving automatic backups into a certain folder. However, this same feature could make data theft easier (needs clarification). In any case, it is a recommended practice to set up a regular backup procedure for any important files, not just FreeMind files. What FreeMind provides here is a crutch for people not disciplined enough to setup a proper regular backup process.
* Since FreeMind mind maps are plain text files, any spyware aware of FreeMind file format can take away information from FreeMind mind maps. In this regard, FreeMind mind maps fare no worse or better than plain text files, so cherished by many a Unix user.
* FreeMind offers the possibility of encryption, relying on the encryption services provided by the Java platform. What extent of true security this achieves is unclear; we are aware of no security audit in relation to this FreeMind feature. Having an encrypted section seems out of scope of the core FreeMind feature set, and there is a risk that a user creates a false sense of security achieved by using this function. FreeMind is not designed as a password management software and it appears advisable to avoid using FreeMind for the purpose. In case of more serious doubt, this internal encryption feature would be disabled and users would be asked to use e.g. zip to encrypt the whole mind map as, say, PersonalConsiderations.mm.zip. Then, the user would have the encryption method and its strength under strict control, using encryption tool that is specifically designed to address that task.
* FreeMind 0.8.0 introduced undo and after a disagreement in the team, the version was released with undo that cannot be disabled. This is a violation of Mill's harm principle, treating FreeMind users as kindergardeners who need tutelage. And it is not clear what kind of security risk this mandatory use of undo creates on its own, especially given that the storage for undo purposes is in XML format, ready in a form that can be transmitted over the network.
* The latest releases without plugins is FreeMind 0.7.1 and FreeMind 0.7.1-XT.
* Since FreeMind is apparently used by many users and organizations, one might by inclined to think that enough eyeballs double checked that there is no genuine security issue. However, we know the story about spinach and iron, and we are reminded of the quote that people would sooner die than they would start to think, and indeed, this is what most of them do.
* If an organization actually did publish a security audit, it would be preferable to post it here, for traceability.
* As per https://freemind.sourceforge.net/wiki/index.php/Scripting#Security, security level for scripting can be customized. The most secure option is to disable scripting altogether.
* Bundling JRE with FreeMind is a concern: since such FreeMind installs a dedicated Java JRE locally as a separate copy, it will not receive any automatic security updated. Requires a solid analysis as to whether there is a genuine security risk.

## Plugins

Plugin architecture was introduced in FreeMind 0.8.0.
Internal plugins of FreeMind are a reminder plugin, a plugin for export to SVG and PDF and a help plugin.
Plugins provided by external parties include above all LaTeXMath-Freemind-Plugin.
See more in the further reading.
Further reading:
* Plugins, freemind.sourceforge.net

## Scripting

FreeMind has a support of scripting via Groovy programming language since FreeMind 0.9.0. A script is stored in the mind map, in an attribute named like script1, script2, etc. By default, FreeMind scripts are restricted in what they can do on the local computer, which includes restrictions on file operations, network operations and execution of applications; these restrictions can be lifted in user preferences.
Further reading:
* Scripting, freemind.sourceforge.net
* Scripting/Mind map documentation, freemind.sourceforge.net
* Example scripts, freemind.sourceforge.net
* Wikipedia: Apache Groovy

## Source code revision histories

The source code is hosted in Git in SourceForge. It used to be hosted in CVS. The history in Git appears to reach back to "Initial checkin of the 0.9.0 RC15 sources" but no earlier. It would seem a significant portion of the code change history has been lost, or at least not available from the Git.
Nonetheless, source code snapshots for each version can be downloaded from https://sourceforge.net/projects/freemind/files/freemind/:
* freemind-src-0_0_2.zip, 2000-06-27
* freemind-src-0_0_3.zip, 2000-07-09
* freemind-src-0_1_0.zip, 2000-08-05
* freemind-src-0_2_0.zip, 2000-11-02
* freemind-src-0_3_0.zip, 2001-03-24
* freemind-src-0_3_1.zip, 2001-03-27
* freemind-src-0_4.zip, 2001-07-07
* freemind-src-0_5.tar.gz, 2002-08-24
* freemind-src-0_6.zip, 2003-02-01
* freemind-src-0_6_1.zip, 2003-02-08
* freemind-src-0_6_5.zip, 2003-09-04
* freemind-src-0_6_7.zip, 2003-10-25
* freemind-src-0_7_1.tar.gz, 2004-02-15
* freemind-src-0_8_0.tar.gz, 2005-09-07
* freemind-src-0_8_1.zip, 2008-02-26
* freemind-src-0.9.0.tar.gz, 2011-02-18
* freemind-src-1.0.0.tar.gz, 2013-10-16
* freemind-src-1.0.1.tar.gz, 2014-04-12

## CVS

FreeMind code was originally captured in Concurrent Version System (CVS) in SourceForge. It was then switched to Git at some point during the FreeMind 0.9.0 development. The CVS still seems to be accessible in some form, in read-only mode. For instance, page http://freemind.cvs.sourceforge.net/freemind/freemind/freemind/modes/mindmapmode/ tells us we can do the following:
* cvs -z3 -d:pserver:anonymous@a.cvs.sourceforge.net:/cvsroot/freemind co -P freemind
Further reading:
* CVS, freemind.sourceforge.net

## Statistics

FreeMind version 1.0.1 was downloaded over 5,800,000 times in total from SourceForge.
Further reading:
* Statistics, freemind.sourceforge.net

## Gallery

* FreeMind development
* Depression, Turkish
* Creatures?, Turkish
* Educational software
* Primates, Japanese and Latin
* MediaWiki, French
* Viruses Baltimore Classification
See also Commons:Category:Valid SVG created with Freemind.

## Awards

FreeMind was SourceForge Project of the Month for February 2006. At this occassion, SourceForge produced an interview with project members, including Daniel Polanský, Christian Foltin, Dimitri Polivaev and Juan Pedro.
FreeMind was a finalist in 2008 SourceForge Community Choice Awards in the categories "Best Project" and "Best Project for Educators".
FreeMind was a finalist in 2009 SourceForge Community Choice Awards in the category "Most likely to change the way you do everything" if one believes the record in FreeMind wiki, which traces to partially defunct https://sourceforge.net/blog/cca09/winners/.
Further reading:
* Project of the Month, February 2006, sourceforge.net
* 2008 SourceForge Community Choice Awards, sourceforge.net

## Hosting

FreeMind project uses the facilities of SourceForge, including release management, source code versioning, support forums, issue trackers, mailing lists, download and download statistics, etc.