Development: Difference between revisions

From FreeMind
Jump to navigationJump to search
No edit summary
 
(48 intermediate revisions by 9 users not shown)
Line 1: Line 1:
<table><tr>
<table><tr>
<td valign=top>
{{Navigation_bar}}
<td>&nbsp;
<td width=600>
<td width=600>


The development of FreeMind is coordinated using FreeMind's [http://sourceforge.net/projects/freemind/ project page] at SourceForge, and also using this wiki. At wiki, we have '''[[requests for enhancements]]''' page; there is also [http://sourceforge.net/tracker/?group_id=7118&atid=357118 requests for enhancements] (RFEs) page at SourceForge (not preferred). You can [http://freemind.cvs.sourceforge.net/freemind/ browse CVS repository].
The development of FreeMind is coordinated using FreeMind's [http://sourceforge.net/projects/freemind/ project page] at SourceForge, and also using this wiki. At wiki, we have '''[[requests for enhancements]]''' page; there is also [http://sourceforge.net/tracker/?group_id=7118&atid=357118 requests for enhancements] (RFEs) page at SourceForge (not preferred). You can [http://freemind.git.sourceforge.net/git/gitweb.cgi?p=freemind/freemind;a=summary browse] our new [[GIT]] repository.


We also use SourceForge for [http://sourceforge.net/tracker/?group_id=7118&atid=107118 bugs],  and [http://sourceforge.net/forum/forum.php?forum_id=22101 open discussion forum]. We do not use the documentation part there as we use this wiki instead.
We also use SourceForge for [http://sourceforge.net/tracker/?group_id=7118&atid=107118 bugs],  and [http://sourceforge.net/forum/forum.php?forum_id=22101 open discussion forum]. We do not use the documentation part there as we use this wiki instead.
Line 11: Line 8:
==Contributing to FreeMind==
==Contributing to FreeMind==


There are different possible ways of taking part in the FreeMind development: the project needs people for:
See [[Contributing]].
* developing
* testing
* documenting of the program
* translating its interface
* translating its documentation in foreign languages
 
: ''Currently, FreeMind project is after a feature freeze, heading quickly to the testing phase. An important current contribution is testing.'' --[[User:Danielpolansky|Dan Polansky]] 23:59, 31 Aug 2007 (PDT)
 
Also:
 
* releasing screenshots: if you have a nice screenshot of FreeMind, please help by releasing it under an open-source licence in [http://commons.wikimedia.org/ Wikimedia Commons].


==Getting started as a developer==
==Getting started as a developer==
Line 30: Line 16:
==Getting started as a tester==
==Getting started as a tester==


FreeMind is a fairly large project with a very small development team. We need all the extra testing resources we can get, so if you want to help out, this is one of the best places to start.
See [[Getting started as a tester]].
 
 
# Let us know that you want to help! Visit the [http://sourceforge.net/forum/forum.php?forum_id=22101 Open Discussion Forum] and tell us.
# Download the latest beta release of the software [http://sourceforge.net/project/showfiles.php?group_id=7118 here].
# Test! Do everything you can think of to break the application, or just use it the way you plan on using it, and let us know what fails.
# When there's a bug, tell us. You can report bugs in the [http://sourceforge.net/forum/forum.php?forum_id=22101 Open Discussion Forum], or put them into [http://sourceforge.net/tracker/?atid=107118&group_id=7118&func=browse SourceForge's Bug Tracker].
# You'll find things that you want the software to do that it doesn't do. Those aren't necessarily bugs. You can ask for new features, [http://sourceforge.net/tracker/?group_id=7118&atid=357118 here].
# If you are interested in helping with more advanced testing, by writing test scripts, please let us know in the [http://sourceforge.net/forum/forum.php?forum_id=22101 Open Discussion Forum] and someone will contact you about it.
# Reap the rewards by having better software to work with.
 


===Reporting Bugs===
==Reporting bugs==


The most important thing you can do to help us find and fix the bugs you report, is to make sure that you give us enough information that we can reproduce the bug. Otherwise, we have no way of knowing, for sure, that we've fixed the bug you report.
See [[Reporting bugs]].


The first thing you should do, when reporting a bug, is double-check your setup, especially if you are just getting started. Make sure you are using the correct version of the Java Runtime Environment. (Currently, FreeMind is compiled and run under Java 1.4. Some of us run it under Java 1.6, but there have been some problems reported from some Java 1.6 users.) Make sure you have your Path and ClassPath variables set correctly.
==Organization of FreeMind development==


You can report bugs through the [http://sourceforge.net/forum/forum.php?forum_id=22101 forum], or through [http://sourceforge.net/tracker/?atid=107118&group_id=7118&func=browse SourceForge's Bug Tracker].
Initially, every active developer of the core team works on his own GIT branch. Our intermediate results are
 
published as our "alpha versions". We use forum [http://sourceforge.net/forum/forum.php?forum_id=22101 Open Discussion] to communicate them.
Here are some things that help:
* The version of FreeMind you are using.
* What operating system you are running.
* The version and patch level of your OS. (For example XP Professional Service Pack 2)
* What you were trying to do when you got the failure
* A description of the failure
* Clear instructions on how to reproduce the failure
* Sometimes it helps if you send us the actual mindmap where the problem occurred.
 
--[[User:Rben13|Rben13]] 10:50, 3 Sep 2007 (PDT)
 
== Organization of FreeMind development ==
 
Initially, every active developer of the core team works on his own CVS branch. Our intermediate results are
published as our "alpha versions". We use forum [http://sourceforge.net/forum/forum.php?forum_id=22101 Open Discussion] and section [[Experimental_versions]] on this wiki page to communicate them.


Further details about the FreeMind release process are described on the FreeMind [[Release process]] page.
Further details about the FreeMind release process are described on the FreeMind [[Release process]] page.


=== Experimental versions ===
==Experimental versions==
 
Currently, there are the following experimental versions available. They are not meant for productive use; use at your own risk!
 
==== FreeMind 0.9.0 beta 9 with  Node Attributes, Map Filters  and WYSIWYG rich text node editor====
Attaching of named attributes to every node, filtering of the displayed map content based on node text, node icons and node attributes, HTML based rich text formatting for nodes and notes, fit for Java6, a script editor is included in the script plugin
* [https://sourceforge.net/forum/message.php?msg_id=4190697 Discussion forum thread]
* [https://sourceforge.net/project/showfiles.php?group_id=7118&package_id=188772&release_id=488111 Downloads]
--[[User:Rben13|Rben13]] 10:06, 3 Sep 2007 (PDT)
 
== Conceptual remarks ==
 
=== Modular model - view design ===
 
The 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 Mueller ===
 
Joerg 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:
 
: What I had in mind when I began to write FreeMind, was creating a collaborative mind where people can intuitively share their 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.
 
: 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).
 
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 may FreeMind be more relevant than some other open source applications ===
 
: ''A simplistic and personal consideration by Daniel Polansky.''
 
There 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 never ending 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.
 
== Misc ==
 
 
 
=== To create proper copyright notice ===
 
A source file may be viewed as a sum ''b'' + ''d<sub>1</sub>'' + ''d<sub>2</sub>'' + ... + ''d<sub>k</sub>'', where ''b'' is the basis, ''d<sub>i</sub>'' are deltas (or patches), and the plus operator is the operator of applying a patch. The basis and each delta have their own copyright holder and the year of copyright.
 
If there is only one author and one year, then the copyright notice is simple.
 
If there is only one author and more years, then the copyright notice may look like
 
<blockquote>
Copyright © 2003-2005 Big Author
</blockquote>
 
which is to be understood as
 
<blockquote>
Some parts of the sum are copyrighted in 2003, some perhaps in 2004, and some certainly in 2005.
</blockquote>
 
If there are more authors, then the copyright notice consists of more lines, like


<blockquote>
Currently, there are no experimental versions available. The latest release candidate can be downloaded from [http://sourceforge.net/project/showfiles.php?group_id=7118 Files section].
Copyright © 2003-2005 Big Author, <br>
Copyright © 2005 Captain,
</blockquote>


Not all changes are eligible for copyright. If a change is small, then it does not make sense to add a line to the copyright notice for it.
==Obtaining focus for selected node in reliable manner==
 
Copyright notice is not required for copyright to hold. It makes claiming your right at court easier.
 
The correctness of these instructions is not granted. They are subject to improvement as we see fit.
 
--[[User:Danielpolansky|Danielpolansky]] 11:29, 3 Jun 2005 (PDT)
 
 
 
=== To translate FreeMind into your language ===
 
See [[Translation]].
 
=== To translate the wiki pages ===
 
See [http://meta.wikimedia.org/wiki/Meta:Interlanguage_links] for a description of how to do that. We don't have such a page yet, so, please, be careful.
 
=== Libraries and tools used in FreeMind ===
 
* [http://nanoxml.cyberelf.be/ NanoXML]
 
=== Sources of free icons ===
 
FreeMind uses (a) tool icons used in the toolbars, and (b) icons used in nodes. Especially for the icons used in nodes, a good comprehensive source of free icons is needed. FreeMind uses PNG icons, in the size of 16 x 16. Nowadays many icons are drawn in SVG vector format first, and converted to 16 x 16 bitmap images afterwards.
 
Ideally, it would not be the task of FreeMind team to draw icons; this task should be outsourced instead. Whether this is a realistic assumption remains to be seen.
 
Some links on the sources of free icons follow.
 
* [http://www.kde-look.org/index.php?xcontentmode=22x27 Icons at kde-look]
* [http://www.gnome-look.org/index.php?xcontentmode=120 Icons at gnome-look]
* [http://www.everaldo.com/crystal.html Crystal icons] &mdash; an icon set often used in KDE desktop environment
* [http://tango-project.org/Tango_Desktop_Project Tango Desktop Project] &mdash; an icon library for KDE and Gnome, licenced under Creative Commons Attribution Sharealike
* [http://www.famfamfam.com/lab/icons/silk/ Silk icons] &mdash; 1000 icons licenced under Creative Commons attribution license
* [http://www.openclipart.org/ Open Clip Art Library] &mdash; a library used for some Mediawiki icons, mostly not suitable as a source of icons but rather as of clipart
* [http://commons.wikimedia.org/wiki/Category:PD_OpenClipart Open Clipart at Wikimedia commons]
 
 
More relevant links
 
* [http://jimmac.musichall.cz/icons.php Icons by Jimmac]
 
== Implementation ==
 
=== To obtain focus for selected node in reliable manner ===


Requesting focus for NodeView using requestFocus() method is unreliable. A reliable way of doing that has been implemented in the method <code>obtainFocusForSelected()</code> of Controller. A typical call in ControllerAdaper.java is  
Requesting focus for NodeView using requestFocus() method is unreliable. A reliable way of doing that has been implemented in the method <code>obtainFocusForSelected()</code> of Controller. A typical call in ControllerAdaper.java is  
Line 202: Line 44:


where <code>newSelected</code> is a NodeView is unreliable, though most often works.
where <code>newSelected</code> is a NodeView is unreliable, though most often works.
=== To set the class load path in manifest.mf in jar ===
In the source folder tree of FreeMind, there's a file MANIFEST.MF. This file tells what
should happen with the freemind.jar when java tries to run the jar archive. The file
may look like
Manifest-Version: 1.0
Main-Class: freemind.main.FreeMind
Class-Path:                  silk.jar nanoxml.jar ekit.jar kafenio.jar
            kafenio-config.jar kafenio-icons.jar gnu-regexp-1.1.4.jar
Created-By: Joerg Mueller
A tricky thing about the file is that the length of the lines can be
at most 72 characters. That creates difficulties when specifying Class-Path.
In the exaple above, the first line of Class-Path is set in such a way
that it has 70 chacters. That has been achieved by putting spaces before
the actual list of classes. In the freemind.jar, the file can be found in the
folder META-INF. Here you can check if the manifest has been created correctly.
=== Deleting nodes and branches in FreeMind ===
Since version 0.8.0, it is possible to delete a whole branch of nodes by pressing DELETE. When a user accidentally presses DELETE and does not notice that, they may loose considerable amount of data. For users using FreeMind as a knowledge base or a semi-structured database, being able to delete whole branch at one keystroke is problematic and unusual; in filesystem browsers, users are asked for confirmation before the file is deleted by the system.
However, some users use FreeMind as a mind mapper and are glad to be able to delete nodes just by pressing DELETE.
There are several solutions to this problem.
* Add user option to enable or disable confirmation before deleting of nodes and branches (depending on model type)
* Store all deleted nodes and branches in a kind of trashcan associated with every mind map
* Ask for confirmation only for nodes with children
* Ask for confirmation only for nodes with more than ''p'' children
The confirmation would be requested both for keystrokes DELETE and CONTROL + X, that is the actions Delete and Cut.


== More development pages ==
== More development pages ==

Latest revision as of 19:04, 28 May 2011

The development of FreeMind is coordinated using FreeMind's project page at SourceForge, and also using this wiki. At wiki, we have requests for enhancements page; there is also requests for enhancements (RFEs) page at SourceForge (not preferred). You can browse our new GIT repository.

We also use SourceForge for bugs, and open discussion forum. We do not use the documentation part there as we use this wiki instead.

Contributing to FreeMind

See Contributing.

Getting started as a developer

See Getting started as a developer.

Getting started as a tester

See Getting started as a tester.

Reporting bugs

See Reporting bugs.

Organization of FreeMind development

Initially, every active developer of the core team works on his own GIT branch. Our intermediate results are published as our "alpha versions". We use forum Open Discussion to communicate them.

Further details about the FreeMind release process are described on the FreeMind Release process page.

Experimental versions

Currently, there are no experimental versions available. The latest release candidate can be downloaded from Files section.

Obtaining focus for selected node in reliable manner

Requesting focus for NodeView using requestFocus() method is unreliable. A reliable way of doing that has been implemented in the method obtainFocusForSelected() of Controller. A typical call in ControllerAdaper.java is

 getController().obtainFocusForSelected();

Requesting focus using

 newSelected.requestFocus();

where newSelected is a NodeView is unreliable, though most often works.

More development pages

To see all development pages, have a look at the category Development, by clicking on the link at the bottom of this page.