This server will be upgraded at 3pm Sydney time on December 3rd (December 2nd, 8pm PST) and will be down for up to 30 minutes.

FreeMind Plugin

Name FreeMind Plugin
Version 1.0.3
Product Versions Confluence 2.1, 2.2, 2.6.x (with mod'd pom)
Author(s) jason.dillon@planet57.com
Homepage n/a
Price FREE!
License ASL
Download JAR See Installing
Download Source freemind-plugin

Description/Features

Displays a Mind Map inline using FreeMind.

This plugin simply renders HTML to display the Freemind browser applet, and does not actually invoke any Freemind code.

Here is an example of what a mind map looks like:

This macro is based on the same concept found in Wikka, though only the very basic referencing of a URL is supported (no inline definitions at this time).

Requires Java Support

Uses the FreeMind Browser Java applet v0.7.1.

Web browsers that do not have Java 1.4, or have a misconfigured Java plugin will not work

Installing

Due to some licensing mismatch between ASL and GPL licenses, this plugin is no longer (since 1.0.3) release as a binary, instead you must build the plugin and then install it (don't worry its simple).

You must have Maven 2 installed to build the plugin.

svn co http://svn.atlassian.com/svn/public/contrib/confluence/freemind-plugin/tags/1.0.3 freemind-plugin
cd freemind-plugin
mvn install

After the build reports BUILD SUCCESSFUL, you should have a fully functional Freemind plugin in the target/ directory which you can upload to Confluence or copy into the confluence.home/plugins directory.

Usage

For definitive usage, see the online notation guide (in the Advanced Formatting section).
{mindmap:^freemind.mm}
{mindmap:^freemind.mm|width=90%|height=400}
{mindmap:http://mylocalserver/mymindmap.mm}

Parameters

  • default: The default parameter is the attachment reference or a local URL to a FreeMind MindMap source file.
  • height: The height of the applet (optional). Default is 600 pixels.
  • width: The width of the applet (optional). Default is 100%.
NOTE
When using the URL syntax, the URL must point to the same server from which the applet has been loaded to avoid security exceptions.

Version History

  • 1.0 - Initial release
  • 1.0.1 - Allow attachments to be loaded using native Confluence attachment syntax.
  • 1.0.2 - Changed license to GPL at the request of the Freemind authors.
  • 1.0.3 - Drop binary distribution (force users to build), changed license back to ASL.

TODO (Maybe)

  • Allow mind map content to be defined in a Confluence page's text.
  • Add a fullscreen detach link
  • Allow a full Freemind editor to be launched, and have it update the content.

Screenshots

Labels

plugin plugin Delete
confluence21 confluence21 Delete
macro macro Delete
repository_excluded repository_excluded Delete
non-repository non-repository Delete
Enter labels to add to this page:
Please wait 
Looking for a label? Just start typing.
  1. Jan 22, 2006

    Guy Fraser says:

    Very nice

    Very nice

  2. Jan 25, 2006

    Bob Swift says:

    Can you please attach an example mm file?

    Can you please attach an example mm file?

    1. Jan 25, 2006

      Jason Dillon says:

      Done. I don't have time to make a custom one, but I put up the FreeMind docs fr...

      Done. I don't have time to make a custom one, but I put up the FreeMind docs freemind.mm. You need to download this, upload it to your site, linking to this URL from your site will not work.

  3. Jan 30, 2006

    Rob Kearey says:

    Awesome! How hard is a java 1.5 version to achieve?

    Awesome! How hard is a java 1.5 version to achieve?

    1. Jan 30, 2006

      Jason Dillon says:

      No clue... but probably not much. I can add support to tell the plugin what ver...

      No clue... but probably not much. I can add support to tell the plugin what version to suggest. Right now its hardcoded to use 1.4.

  4. Jan 30, 2006

    Rob Kearey says:

    Fairy nough - we're going through an enormous redesign period right now and this...

    Fairy nough - we're going through an enormous redesign period right now and this is exactly what I need. I'll ask one of our java people to check it out if they have time.

  5. Feb 05, 2006

    Thomas Peter Berntsen says:

    Thanks for a great plugin, Jason.

    Thanks for a great plugin, Jason.

  6. Feb 28, 2006

    Jason Dillon says:

    FYI, license changed from ASL 2.0 to GPL 2 at the request of the Freemind author...

    FYI, license changed from ASL 2.0 to GPL 2 at the request of the Freemind authors.

    1. Feb 28, 2006

      David Peterson [CustomWare] says:

      Hey Jason, I belive that GPL (in any version) is incompatible with being plugge...

      Hey Jason,

      I belive that GPL (in any version) is incompatible with being plugged into Confluence (being a non-GPL application). Any chance you could talk them into letting you license it as LGPL?

      1. Feb 28, 2006

        Jason Dillon says:

        Changing the license from ASL to GPL seemed acceptable to the authors as a short...

        Changing the license from ASL to GPL seemed acceptable to the authors as a short-term solution. Not sure how GPL actually gets applied in this case, since the "plugin" is not importing any GPL code to function... but renders a HTML snippet that generates an applet tag to cause the user's webbrowser to import and include the Freemind browser.

        Does that mean that any webbrowser that loads a page with this plugin is now GPL? Seems kinda obsurd to me...

        1. Mar 01, 2006

          Charles Miller says:

          The GPL is incompatible with plugins written for non-GPL'd applications, unless ...

          The GPL is incompatible with plugins written for non-GPL'd applications, unless all of the GPL software used in the plugin makes a specific exception in its license.

          More information:

          1. Mar 01, 2006

            Jason Dillon says:

            This link (the relevant section of the GPL) indicates that the Freemind applet j...

            This link (the relevant section of the GPL) indicates that the Freemind applet jar, which is dynamically linked into the Browser or into Sun's JRE (not directly linked to anything in Confluence) which sounds like the original license was okay.

            Ugh, GPL sucks man. I just did this for fun and now its becoming a royal pain in the ass. Not sure Freemind support in Confluence is worth it actually.

            1. Mar 01, 2006

              Jason Dillon says:

              Anyways... I don't actually use this plugin... only did it for fun. So unless a...

              Anyways... I don't actually use this plugin... only did it for fun. So unless anyone has any suggestions on how to resolve this. I'm just going to remove it from SVN and delete this page and be done with it.

              1. Mar 01, 2006

                Dan Hardiker says:

                You're only solution is to reason with the authors about why they have Freemind ...

                You're only solution is to reason with the authors about why they have Freemind GPLed. If it is to stop non-GPL products from benifiting from the Freemind project then you are out of luck I'm afraid.
                I came up against exactly the same problem with my Sudoku Plugin - I ended up moving the sudoku generator into a separate utility project (which is GPLed), and its pretty obvious that you don't have that option.

                Unforuntately, it's their choice - if the Freemind developers are unwilling to license it to you under a non-viral license (preferably BSD) then there is nothing you can do. Plead / beg / offer your first born in exchange for an alternative license, and you might get lucky.

                Fingers crossed for ya!

              2. Mar 01, 2006

                David Peterson [CustomWare] says:

                I agree - GPL = pain in the butt. I'm sure there are many others who disagree, b...

                I agree - GPL = pain in the butt. I'm sure there are many others who disagree, but it's gotten in my way more than once.

                Unless it's something you really want and use, I'd concur - ditch it and let FreeMind loose a good opportunity for their hard work to get used in new and creative ways. It's their loss, really.

                1. Mar 01, 2006

                  Guy Fraser says:

                  It does seem odd that they'd go to all the trouble of writing Freemind, only to ...

                  It does seem odd that they'd go to all the trouble of writing Freemind, only to ensure that it cannot be used by the majority of the target audience. I'd see the stand-alone version as a plugin to Windows Hardly supprising that there is heated debate over this silly, silly license in the Linux world.

                  Jason, you created a great plugin that would have put Freemind on the radar of over 700 organisations worldwide. The Freemind authors choose to remain in obscurity. Thier loss.

        2. Apr 06, 2006

          Turadg Aleahmad says:

          I like Freemind and support the project, but I don't see how they have any say i...

          I like Freemind and support the project, but I don't see how they have any say in the license of this plugin. As I understand it, it just creates an <applet> tag that instructs the browser to download a JAR with a binary of Freemind and launch with a particular file. The code that the Freemind developers have written isn't even running on the same JVM (or continent?) as the code written by Atlassian. License compatibility is not an issue.

          Jason, why not change your license back to ASL?

          1. Aug 25, 2006

            Jason Dillon says:

            Because the authors of FreeMind asked me to change it to GPL. The applet code i...

            Because the authors of FreeMind asked me to change it to GPL.

            The applet code is included in the distro here... and needs to be pulled from the same server to run.

      2. May 15, 2006

        Sean Blaes says:

        Often, how the GPL really applies to Java (as compared to C+) is very confusing ...

        Often, how the GPL really applies to Java (as compared to C+) is very confusing and up for argument, because Java binaries link in totally different manner than languages like C+ do.  However, this case seems to be one that is very clear.  If your plugin does not in any way require the freemind binaries (their jar) then you are in no way linking to their code, even by the wildest stretch of the imagination.  You should be able to release this under whatever license you want, and tell them to go fly a kite.

        From what it appears, this sounds similar to MySQL saying that anybody that has typed MySQL specific SQL inside their code (and we pretty much all do) would force your application to be GPL, etc.

        Generally, most contracts must be reasonable to be defensible.  I read an article once by a tech lawyer (wish I could find a link so I could share that here, it's been ages ago) stating that in order for contracts to be defensible in court they must be reasonable.  The last I knew, there was very little case history on the GPL, most claims brought forward have been settled without going to court.  However, the point being that if a contract contains unreasonable terms (similar to a lot of non-compete contracts out there) then those terms can be thrown out if brought to court.  This sort of an interpretation of the GPL definitely seems like one of those unreasonable interpretations...

        I support and love open source, and personally always release under the Apache license that which I choose to give to the open source community.  However, in this case, it really seems that they are overstepping their bounds.

        That's my humble half-informed opinion.  Take it or leave it. 

        1. May 15, 2006

          Dan Hardiker says:

          If your plugin does not in any way require the freemind binaries (their jar) the...

          If your plugin does not in any way require the freemind binaries (their jar) then you are in no way linking to their code

          This plugin does require the freemind binaries as it is needed by the imports when compiling. I see a fundamental difference here between using a programmatically API (like a library) and using a product API (through SOAP / SQL etc).

          No biggy - just would have been nice.

          1. Aug 25, 2006

            Jason Dillon says:

            This is not true. The source code of the plugin does not import any FreeMind cl...

            This is not true. The source code of the plugin does not import any FreeMind classes.

            The FreeMind applet however is included in the plugin dist, that it gets installed into the server's WEB-INF so that the generated pages can generate a reference to the applet jar, which then instructs the client's webbrowser to download, install and execute the GPL plugin inside of your browser's JVM.

            I guess the only good solution here is to provide the plugin w/o the applet jar, and then include instructions for users to follow that explain how to download the applet jar and install it into the plugin's jar, which can then be installed into Confluence.

            PITA if you ask me... but unless anyone has any better ideas.

            1. Aug 25, 2006

              Dan Hardiker says:

              If you can sign the applet jar, you could put it on a central webserver and link...

              If you can sign the applet jar, you could put it on a central webserver and link to that central location in the browser applet tags. However, I think placing the jar into the conf distribution and linking relatively is your best option. It's quite simple - and it is better than the current situation of not being able to work.

            2. Aug 25, 2006

              Alain Moran says:

              Create two plugins .. one non-GPL that contains the plugin itself, and another G...

              Create two plugins .. one non-GPL that contains the plugin itself, and another GPL plugin that contains the freemind jar

              1. Aug 25, 2006

                Dan Hardiker says:

                Confluence plugins are incompatible with the GPL as Confluence itself is not GPL...

                Confluence plugins are incompatible with the GPL as Confluence itself is not GPLed.

                1. Aug 25, 2006

                  Mike Cannon-Brookes says:

                  AFAIK that's not true, but I may be wrong. Isn't it one of those chickens are an...

                  AFAIK that's not true, but I may be wrong. Isn't it one of those chickens are animals, but animals aren't all chickens relationships?

                  Here's my understanding:

                  • Confluence's code isn't GPL, and hence we can't distribute any GPL libraries with it. Remember the GPL is all about distribution as the trigger.
                  • However an individual plugin can be GPL as long as everything distributed with the plugin is also GPL.

                  Otherwise, if anyone wrote a GPL plugin we'd have to GPL Confluence by their actions - which even those fine folks at the FSF would probably tell you is unfair

                  Or did I misunderstand?

                  1. Aug 25, 2006

                    Dan Hardiker says:

                    From what I can gather it's down to interpretation - see Charles' collection of ...

                    From what I can gather it's down to interpretation - see Charles' collection of references on the issue:

                    http://confluence.atlassian.com/display/CONFEXT/FreeMind+Plugin?rootCommentId=163949#comments

  7. Sep 18, 2006

    Ivan S. Dubrov says:

    How can I build it? It requires the com.atlassian.confluence:confluence-plugin-s...

    How can I build it? It requires the com.atlassian.confluence:confluence-plugin-support Maven2 artifact, but I miss it.

  8. Feb 23, 2007

    Jason Dillon says:

    Its been a while, but I finally had some time to muck with this more... still no...

    Its been a while, but I finally had some time to muck with this more... still not sure how the whole GPL fluff works in this case, but I did a few things:

    • remove the bin dist of the plugin
    • updated the plugin's build to fetch the required bits and build a jar
    • changed the plugins license back to ASL

    So, its up to the user who wants to use this, to download the src, run the simple build and then install the jar. They should know that Freemind's license is GPL, but this plugin (the java code, velocity macros and build configuration), which does not invoke any Freemind code is licensed as ASL.

    Sucks... just makes it harder for folks that want to use the plugin to actually use it (ie. can't include it in the repo client's metadata).

    I suppose a better solution would be hack up a plugin configuration action which would ask the user if they want to install the GPL code, and then reference that downloaded binary when generating the HTML to render the applet... though still not sure if that is legit or not.

    Anyways, I think this is closer to legit now, as the java plugin code is ASL, and that java plugin code does not import any GPL code (only renders HTML). Only gray area is that for the plugin to work it needs to have the GPL Freemind jar inside of it... but since there is no more binary distribution of that archive, any licensing issues are assumed by the user when the build/install the jar.

  9. Mar 10, 2007

    Bambuda Leung says:

    Just curious - has there been any progress on a plugin with edit capability? I c...

    Just curious - has there been any progress on a plugin with edit capability? I can think of some ugly work-arounds, such as scaffold forms to generate .mm files, but hope to avoid this.

    1. Mar 11, 2007

      Jason Dillon says:

      Nope, I've certainly not made any progress on this, nor do I plan to given all o...

      Nope, I've certainly not made any progress on this, nor do I plan to given all of the licensing mumbo-jumbo around this.

      But, if the Freemind applet supported editing, then it should be relatively easy to implement... but will require some more magic to integrate for sure.

  10. Jun 10, 2007

    Eugene Gavrilov says:

    It seems that macro determines base url incorrectly in case of front proxy. I ha...

    It seems that macro determines base url incorrectly in case of front proxy.
    I have installed Confluence behind Apache and the following code the most probably retrieves internal URL (http://localhost:8080) instead of external (https://xxx.xxx.xxx.xxx)

        private String getBaseURL() {
            HttpServletRequest request = ServletActionContext.getRequest();
            if (request == null) {
                return null;
            }
            
            return request.getScheme() + "://" + request.getServerName() +
                ((request.getServerPort() != 80) ? (":" + request.getServerPort()) : "") +
                request.getContextPath();
        }
    

    I'd suggest to use an external Confluence base url (configured in Administration -> General Configuration)

    1. Jun 19, 2007

      Jason Dillon says:

      Patches welcome...

      Patches welcome...

    2. Jun 18

      Louis Adiputra says:

      import com.atlassian.spring.container.ContainerManager; import com.atlassian...
      import com.atlassian.spring.container.ContainerManager;
      import com.atlassian.confluence.setup.settings.SettingsManager;
      import com.atlassian.confluence.setup.settings.Settings;
      
      private String getBaseURL() {
        SettingsManager settingsManager = (SettingsManager) ContainerManager.getComponent("settingsManager");
        Settings s = settingsManager.getGlobalSettings();
        return s.getBaseUrl();
      }
      

      Did it for me . But a problem with it is the fact that the client's Java plugin doesn't (AFAIK) use the same HTTPS authentication mechanism as the browser.

  11. Sep 24, 2007

    Michael S. says:

    Are there any plans to make this plug-in compatible with Confluence 2.5.x? Than...

    Are there any plans to make this plug-in compatible with Confluence 2.5.x?

    Thanks,
    Mike

  12. Dec 17, 2007

    Andy Brook says:

    I just built this and installed on Confluence 2.6.1, I had to mod the pom, which...

    I just built this and installed on Confluence 2.6.1, I had to mod the pom, which is attached. I also had to harcode the name in the atlassian-plugin.xml, it didn't resolve the pom.name properly for some reason.

    Cheers,

    1. Jun 18

      Louis Adiputra says:

      You're missing a section in the POM-file: http://developer.atlassian.com/jira/br...

      You're missing a section in the POM-file: http://developer.atlassian.com/jira/browse/CPDK-14

      In <build>..</build>:

      <resources>
        <resource>
          <directory>src/main/resources</directory>
          <filtering>true</filtering>
        </resource>
      </resources>
      

      The previous version of the POM file didn't have it either, but somehow the "filtering" (Maven's term for it) worked there. Or maybe it didn't work, I can't check because I never got it to compile with the previous version.

      Thanks for the updated POM file, BTW.

  13. Mar 19, 2008

    Sebastian Görner says:

    Yesterday I installed the FreeMind Plugin. I could see the mindmap (VIP.mm) and ...