Technical ideas: implementing collaboration in Freeplane, with Flower Platform

classic Classic list List threaded Threaded
29 messages Options
12
Reply | Threaded
Open this post in threaded view
|

Technical ideas: implementing collaboration in Freeplane, with Flower Platform

cristian.spiescu
Hello,

As promised, I am writing some technical aspects on Flower Platform, and on how we would like to use it from within Freeplane, in order to create new features such as real time collaboration.

*****************************************************
Small overview of how Flower Platform works (including the Freeplane extension)
*****************************************************

Flower Platform server deals with data stored as a tree. A node from the tree can be: a file, a freeplane node, a java class or method, a virtual node, etc. A node (i.e. the Node java class) has the following info:
* the node URI, or ID (this contains info about the physical resource and the id within that resource)
* node type - string
* node properties - map<String, Object>

There is an API for dealing with nodes, i.e. NodeService, which is usable by remote clients (for the moment Flex/ActionScript and JavaScript). It exposes methods such as: .getChildren(), .setPropertyValue(), .addChild(), etc.

The most important aspect of a node is its type. Depending on this:
* server side: pluggable controllers know how to act in various scenarions: e.g. on .addChild(), for a "fileSystemNode", a new directory or file would be created;  .addChild() on a "freeplaneNode" => delegate to the freeplane lib.
* client side: the client knows what node renderer to instantiate; this renderer is capable of interpreting whatever data is found in the properties map. E.g. for a freeplane renderer, the server populates this map with data from the actual node (e.g. bold, node width, cloud style, node background color, etc). Of course, the current renderer that we have only implements a subset of what is actually possible in Freeplane desktop.

*****************************************************
Technical proposal
*****************************************************

In freeplane, we would have a "special" mind map. By special, I mean something like the map that is used to display the "file explorer". I.e. the nodes don't come from a .mm file, but from an external source.
In our case, the nodes would come from the Flower Platform server. They would have in the "properties" map all that is needed for their visual appearance, and we would feed these properties there where Freeplane expects it. E.g. from node.properties["text"] -> freeplaneNode.text

Flower Platform has a mechanism of sending differential updates to the subscribed clients. I.e. when someone adds a node, all the subscribers will receive that node. That is how the collaboration "magic" will be done.

Besides this mechanism, I think there will be other auxiliary features. E.g. upload maps to flower platform server, manage connections to servers, etc.

What do you think about this?

Best regards,
Cristian.
Reply | Threaded
Open this post in threaded view
|

Re: Technical ideas: implementing collaboration in Freeplane, with Flower Platform

Dimitry Polivaev
Administrator
Hello Cristian,

If I got it right you suggest to build an interface to your server by substituting of the original
map representation used in freeplane by some other implementation which is able to be synchronized
with your server. Correct?

Freeplane maps and nodes are classes, not interfaces. They do not have fixed amount of content. They
carry fields with objects implementing empty interface IExtension which are actually POJO with some
content. Building type hierarchy of IExtension you can see all of them.

In the latest version pushed to the master the nodes also carry lists of all their clones.

The map has reference to the root node and each node references its children.
References to the linked nodes (connectors and hyperlinks) are saved in one of the extensions which
can be added to each node.

I am not sure whether we want to convert NodeModel to interface and provide different
implementations for it. Probably it is easier and better for separation of concerns to create a
separate generic mapping for [a subset of] freeplane objects to the objects your server can process
and back.

We should also check how information about node updates is processed because now the controllers and
not the models are responsible for sending node change related events, but I think it should not be
difficult to implement for the events coming from the server.

What exactly is your question? How could I help? Would you like to propose some design or work on it
together in some way?

Regards,
Dimitry
Reply | Threaded
Open this post in threaded view
|

Re: Technical ideas: implementing collaboration in Freeplane, with Flower Platform

Dimitry Polivaev
Administrator
In reply to this post by cristian.spiescu
> Probably it is easier and better for separation of concerns to create a
> separate generic mapping for [a subset of] freeplane objects to the objects your server can process
> and back.

Actually I thought about two ways to implement such mapping: using reflections or reusing already
existing xml writer for serializing  and xml reader reader for creating objects. The last approach
has an advantage that it does not depend internal object details and only depends on xml which is
less likely to change and easier to transform.

Reply | Threaded
Open this post in threaded view
|

Re: Technical ideas: implementing collaboration in Freeplane, with Flower Platform

cristian.spiescu
Hello Dimitry,

Thank you for your reply. I understand your technical points, and I will
discuss them with my team next week. Answers to your questions:

> If I got it right you suggest to build an interface to your server by
> substituting of the original
> map representation used in freeplane by some other implementation
> which is able to be synchronized
> with your server. Correct?
Basically yes, Freeplane would be a client for the Flower Platform
server. As I told in my previous message, Flower Platform deals with
general trees. However, we designed it having mind maps and Freeplane in
mind. So, depending on the technical solution, we could also adapt the
server, in order to integrate tightly with Freeplane desktop app.
> What exactly is your question? How could I help? Would you like to
> propose some design or work on it
> together in some way?
My first question is: what do you think about the principle of the
proposed integration. Is it OK from your side? Do we have a GO?

If yes, we'll work a little bit on our side, and come back to you with a
our technical thoughts. Of course, during this process, we may have some
questions that might help us.
Once the proposed architecture is OK (i.e. validated from your side),
we'll start the implementation.

Thank you!
Best regards,
Cristian.

Reply | Threaded
Open this post in threaded view
|

Re: Technical ideas: implementing collaboration in Freeplane, with Flower Platform

Dimitry Polivaev
Administrator
>> What exactly is your question? How could I help? Would you like to
>> propose some design or work on it
>> together in some way?
> My first question is: what do you think about the principle of the
> proposed integration. Is it OK from your side? Do we have a GO?

I basically like the idea of collaboration mode using your (open sourced) server on the other side.

> If yes, we'll work a little bit on our side, and come back to you with a
> our technical thoughts. Of course, during this process, we may have some
> questions that might help us.

You are welcome.

> Once the proposed architecture is OK (i.e. validated from your side),
> we'll start the implementation.

Fine. I appreciate your work and determination.

Let us communicate as much as needed to make sure that all efforts you put in are productive and
effective.

Regards,
Dimitry
Reply | Threaded
Open this post in threaded view
|

Re: Technical ideas: implementing collaboration in Freeplane, with Flower Platform

Joeran
In reply to this post by cristian.spiescu
Hi Cristian,

I am one of the developers of Docear www.docear.org, which is a reference management software based on Freeplane. We (the Docear team, supported by the Freeplane team) have developer an online version of Freeplane a while ago, but have not yet had the time to finish and release the project (see https://www.docear.org/2013/07/09/preview-of-docears-web-collaborative-mind-mapping-tool-to-be-presented-at-htw-in-berlin/ for some more details). The particularity about our version is that it uses a "headless" Freeplane version that is running on our servers, and which provides a Web-Frontend to that version (in other words, we "simply" replaced the normal GUI with a Web-GUI). So far the web-version is rather simple and offers only a few functions such as adding and deleting nodes, but synchronization works already between different clients (though it's a big buggy and I don't know how well it scales with many users). 

We have not yet decided if we want to release our web-version as open source. However, if you think such a version might be interesting to you, please contact us ([hidden email]) and copy Dimitry (and whomever else from the Freeplane team is interested), so we can discuss further details by email, and not in the public newsgroup).

Best,
Joeran






On Thu, Jun 19, 2014 at 12:20 PM, cristian.spiescu [via Freeplane Developer] <[hidden email]> wrote:
Hello,

As promised, I am writing some technical aspects on Flower Platform, and on how we would like to use it from within Freeplane, in order to create new features such as real time collaboration.

*****************************************************
Small overview of how Flower Platform works (including the Freeplane extension)
*****************************************************

Flower Platform server deals with data stored as a tree. A node from the tree can be: a file, a freeplane node, a java class or method, a virtual node, etc. A node (i.e. the Node java class) has the following info:
* the node URI, or ID (this contains info about the physical resource and the id within that resource)
* node type - string
* node properties - map<String, Object>

There is an API for dealing with nodes, i.e. NodeService, which is usable by remote clients (for the moment Flex/ActionScript and JavaScript). It exposes methods such as: .getChildren(), .setPropertyValue(), .addChild(), etc.

The most important aspect of a node is its type. Depending on this:
* server side: pluggable controllers know how to act in various scenarions: e.g. on .addChild(), for a "fileSystemNode", a new directory or file would be created;  .addChild() on a "freeplaneNode" => delegate to the freeplane lib.
* client side: the client knows what node renderer to instantiate; this renderer is capable of interpreting whatever data is found in the properties map. E.g. for a freeplane renderer, the server populates this map with data from the actual node (e.g. bold, node width, cloud style, node background color, etc). Of course, the current renderer that we have only implements a subset of what is actually possible in Freeplane desktop.

*****************************************************
Technical proposal
*****************************************************

In freeplane, we would have a "special" mind map. By special, I mean something like the map that is used to display the "file explorer". I.e. the nodes don't come from a .mm file, but from an external source.
In our case, the nodes would come from the Flower Platform server. They would have in the "properties" map all that is needed for their visual appearance, and we would feed these properties there where Freeplane expects it. E.g. from node.properties["text"] -> freeplaneNode.text

Flower Platform has a mechanism of sending differential updates to the subscribed clients. I.e. when someone adds a node, all the subscribers will receive that node. That is how the collaboration "magic" will be done.

Besides this mechanism, I think there will be other auxiliary features. E.g. upload maps to flower platform server, manage connections to servers, etc.

What do you think about this?

Best regards,
Cristian.


To start a new topic under Freeplane Developer, email [hidden email]
To unsubscribe from Freeplane Developer, click here.
NAML



--
Reply | Threaded
Open this post in threaded view
|

Re: Technical ideas: implementing collaboration in Freeplane, with Flower Platform

cristian.spiescu
Hello Joeran.

By looking at the website, docear seems to be a very nice piece of software. And the functional concept behind is similar to Flower Platform; i.e.use mind map have "typed " nodes that map to concrete business specific concepts. In your case the business means: reference management between scientific papers. In our case the business = source code and references towards tools that deal with code (e.g. Code review).

The screen captures of the web version look very nice. What technology do you use? Svg, canvas, plain html renderers?

From my current understanding, the web version and collaboration are built on top of freeplane headless. In our case, the server is independent of freeplane (including the collaboration mechanism). We have a plugin that embeds freeplane that "knows" how to write the data to disk in freeplane format. Your proposal is very nice, for which I thank you. However, I don't know to what extent the server side code is compatible cf. my previous technical remarks.

Thank you.
Best regards,
Cristian.

"Joeran [via Freeplane Developer]" <[hidden email]> wrote:
Hi Cristian,

I am one of the developers of Docear www.docear.org, which is a reference management software based on Freeplane. We (the Docear team, supported by the Freeplane team) have developer an online version of Freeplane a while ago, but have not yet had the time to finish and release the project (see https://www.docear.org/2013/07/09/preview-of-docears-web-collaborative-mind-mapping-tool-to-be-presented-at-htw-in-berlin/ for some more details). The particularity about our version is that it uses a "headless" Freeplane version that is running on our servers, and which provides a Web-Frontend to that version (in other words, we "simply" replaced the normal GUI with a Web-GUI). So far the web-version is rather simple and offers only a few functions such as adding and deleting nodes, but synchronization works already between different clients (though it's a big buggy and I don't know how well it scales with many users). 

We have not yet decided if we want to release our web-version as open source. However, if you think such a version might be interesting to you, please contact us ([hidden email]) and copy Dimitry (and whomever else from the Freeplane team is interested), so we can discuss further details by email, and not in the public newsgroup).

Best,
Joeran






On Thu, Jun 19, 2014 at 12:20 PM, cristian.spiescu [via Freeplane Developer] <[hidden email]> wrote:
Hello,

As promised, I am writing some technical aspects on Flower Platform, and on how we would like to use it from within Freeplane, in order to create new features such as real time collaboration.

*****************************************************
Small overview of how Flower Platform works (including the Freeplane extension)
*****************************************************

Flower Platform server deals with data stored as a tree. A node from the tree can be: a file, a freeplane node, a java class or method, a virtual node, etc. A node (i.e. the Node java class) has the following info:
* the node URI, or ID (this contains info about the physical resource and the id within that resource)
* node type - string
* node properties - map<String, Object>

There is an API for dealing with nodes, i.e. NodeService, which is usable by remote clients (for the moment Flex/ActionScript and JavaScript). It exposes methods such as: .getChildren(), .setPropertyValue(), .addChild(), etc.

The most important aspect of a node is its type. Depending on this:
* server side: pluggable controllers know how to act in various scenarions: e.g. on .addChild(), for a "fileSystemNode", a new directory or file would be created;  .addChild() on a "freeplaneNode" => delegate to the freeplane lib.
* client side: the client knows what node renderer to instantiate; this renderer is capable of interpreting whatever data is found in the properties map. E.g. for a freeplane renderer, the server populates this map with data from the actual node (e.g. bold, node width, cloud style, node background color, etc). Of course, the current renderer that we have only implements a subset of what is actually possible in Freeplane desktop.

*****************************************************
Technical proposal
*****************************************************

In freeplane, we would have a "special" mind map. By special, I mean something like the map that is used to display the "file explorer". I.e. the nodes don't come from a .mm file, but from an external source.
In our case, the nodes would come from the Flower Platform server. They would have in the "properties" map all that is needed for their visual appearance, and we would feed these properties there where Freeplane expects it. E.g. from node.properties["text"] -> freeplaneNode.text

Flower Platform has a mechanism of sending differential updates to the subscribed clients. I.e. when someone adds a node, all the subscribers will receive that node. That is how the collaboration "magic" will be done.

Besides this mechanism, I think there will be other auxiliary features. E.g. upload maps to flower platform server, manage connections to servers, etc.

What do you think about this?

Best regards,
Cristian.


To start a new topic under Freeplane Developer, email [hidden email]
To unsubscribe from Freeplane Developer, click here.
NAML



--



To unsubscribe from Technical ideas: implementing collaboration in Freeplane, with Flower Platform, click here.
NAML
Reply | Threaded
Open this post in threaded view
|

Re: Technical ideas: implementing collaboration in Freeplane, with Flower Platform

Joeran
Hi,

> However, I don't know to what extent the server side code is compatible cf. my previous
> technical remarks.

Yes, probably you are right, and the two technologies are not
compatible. I just thought, I mention what we did, in case you see any
overlap.

Best,
Joeran
Reply | Threaded
Open this post in threaded view
|

Re: Technical ideas: implementing collaboration in Freeplane, with Flower Platform

cristian.spiescu
Thank you Joeran,

Regarding the front end technology: What technology do you use? Svg,
canvas, plain html renderers?

Regards,
Cristian.
Reply | Threaded
Open this post in threaded view
|

Re: Technical ideas: implementing collaboration in Freeplane, with Flower Platform

Joeran
Most of the development was done by some volunteering students, so, to
be honest, I am not that familiar with all the technologies they used,
but I think their work was primarily based on svg and they used the
play-framework and scala.

best,
joeran


On Wed, Jun 25, 2014 at 10:40 AM, cristian.spiescu [via Freeplane
Developer] <[hidden email]> wrote:

> Thank you Joeran,
>
> Regarding the front end technology: What technology do you use? Svg,
> canvas, plain html renderers?
>
> Regards,
> Cristian.
>
>
> ________________________________
> If you reply to this email, your message will be added to the discussion
> below:
> http://freeplane-developer.996965.n3.nabble.com/Technical-ideas-implementing-collaboration-in-Freeplane-with-Flower-Platform-tp384p405.html
> To start a new topic under Freeplane Developer, email
> [hidden email]
> To unsubscribe from Freeplane Developer, click here.
> NAML



--
Joeran Beel
Founder & Researcher
Docear - The Academic Literature Suite
http://docear.org
[hidden email]

Blog: http://www.docear.org/docear/blog/
Facebook: https://www.facebook.com/pages/Docear/137985949605902
Google+: https://plus.google.com/106965732112113749959/posts
Twitter: https://twitter.com/Docear_org
Reply | Threaded
Open this post in threaded view
|

Re: Technical ideas: implementing collaboration in Freeplane, with Flower Platform

cristian.spiescu
Dear Dimitry,

Here is what we would like to do:

* [0] we would need to be able to override the "hasChildren" flag (i.e. the "+" icon of a node). I.e. store this transient information somewhere in the NodeModel (perhaps an extension?), and display the + based on this information (which comes from the server). I don't know exactly how we could do this.
* we need to intercept the expand and collapse actions.
  * [1] On expand => we request data from server; when the data arrives (i.e. children as Node instances), we create children for the current node. I.e. create new NodeModel, based on the Node objects.
  * On collapse => we update our data structure of Node instances
* [2] we need to listen the mind map (using INodeChangeListener and IMapChangeListener I think). When modifications happen => we send corresponding commands to the server. I.e. "add a node", "delete a node", "update property text", etc.
* we need to override some UI menu actions, and replace the original logic, with logic that invokes server methods: save, undo, redo. Maybe other similar actions as well

Until now, except maybe [0], I think that that everything can be done, without needing to change the code of Freeplane.

Regarding [1], we need to convert from Node (that has a map of properties <propertyName:String, propertyValue:Object>) -> NodeModel. Do do this, depending on the property we:
    * set a property of NodeModel (e.g. NodeModel.setText()), or
    * use a model extension (e.g. NodeSizeModel), or
    * use a controller, which I think delegates to a model extension (e.g. NodeStyleController)

We already do this in Flower Platform in this file: https://github.com/flower-platform/flower-platform-4/blob/546e258a28645c2396e515681bb2bbae029fb3ed/org.flowerplatform.freeplane/src/org/flowerplatform/freeplane/controller/MindMapPropertySetter.java
You can see that there is a big switch; depending on the name of the property, we do the appropriate operation.

Regarding [2], it's pretty much the opposite of [1]. With the difference that in [1], we will need to process all the properties (i.e. when the Node comes from the server, and we need to create/transfer its properties to a NodeModel). In [2], we need to do this in a differential manner (or in "chuncks"). I.e. when the listener is invoked, only a property is modified, hence only that property needs to be converted to a Node compatible representation and sent to the server. Currently we handle this here: https://github.com/flower-platform/flower-platform-4/blob/546e258a28645c2396e515681bb2bbae029fb3ed/org.flowerplatform.freeplane/src/org/flowerplatform/freeplane/controller/MindMapPropertiesProvider.java

The disadvantage of our approach is that 1) we hardcode the available properties (i.e. if a new property appears in Freeplane 1.4, we'll need to update the code as well). And 2) we only support a subset of the properties available.

I think that your idea to use the XML serialization mechanism could help. This mechanism already iterates all properties of the XML representation, and knows how to properly set each one of them. Maybe we could do a similar thing, but instead of iterating/visiting the XML, we will be iterating the properties map from Node. I'm thinking of xml reader for [1] and xml writer for [2]. Maybe area will need to be modified a little bit, to work with the 2 types of serialization: XML <-> NodeModel and Node <-> NodeModel.

However, while browsing rapidly through the code, I didn't manage to find where the serializers do the actual get or set of the properties. Could you give me a hint?

I have a question: what is the meaning of IExtension? Initially I thought it was a superinterface of all the model extensions (e.g. NodeSizeModel). However, by looking at the other implementors and judging by their name, they seem to have different roles: e.g. NodeStyleController, IUndoHandler, IScriptStarter.

What do you think about all these items?

Best regards,
Cristian.


Reply | Threaded
Open this post in threaded view
|

Re: Technical ideas: implementing collaboration in Freeplane, with Flower Platform

Dimitry Polivaev
Administrator
Dear Cristian,

> * [0] we would need to be able to override the "hasChildren" flag (i.e. the "+" icon of a node).
> I.e. store this transient information somewhere in the NodeModel (perhaps an extension?), and
> display the + based on this information (which comes from the server). I don't know exactly how we
> could do this.
> * we need to intercept the expand and collapse actions.
>   * [1] On expand => we request data from server; when the data arrives (i.e. children as Node
> instances), we create children for the current node. I.e. create new NodeModel, based on the Node
> objects.

It looks like you want to partially load map from server so that you do not need to know about
children of unfolded nodes. I think in current implementation the map should know all nodes in order
to maintain connectors and clones. So we can look at your ideas in more details and let us see how
they could work. Can we find time for a team viewer / google hangout session to go through the code
together?

>   * On collapse => we update our data structure of Node instances
Why on "collapse" and not on "save"?

> * [2] we need to listen the mind map (using INodeChangeListener and IMapChangeListener I think).
> When modifications happen => we send corresponding commands to the server. I.e. "add a node",
> "delete a node", "update property text", etc.
> * we need to override some UI menu actions, and replace the original logic, with logic that invokes
> server methods: save, undo, redo. Maybe other similar actions as well
>
> Until now, except maybe [0], I think that that everything can be done, without needing to change the
> code of Freeplane.
>
> Regarding [1], we need to convert from Node (that has a map of properties <propertyName:String,
> propertyValue:Object>) -> NodeModel. Do do this, depending on the property we:
>     * set a property of NodeModel (e.g. NodeModel.setText()), or
>     * use a model extension (e.g. NodeSizeModel), or
>     * use a controller, which I think delegates to a model extension (e.g. NodeStyleController)
>
> We already do this in Flower Platform in this file:
> https://github.com/flower-platform/flower-platform-4/blob/546e258a28645c2396e515681bb2bbae029fb3ed/org.flowerplatform.freeplane/src/org/flowerplatform/freeplane/controller/MindMapPropertySetter.java
> You can see that there is a big switch; depending on the name of the property, we do the appropriate
> operation.
>
> Regarding [2], it's pretty much the opposite of [1]. With the difference that in [1], we will need
> to process all the properties (i.e. when the Node comes from the server, and we need to
> create/transfer its properties to a NodeModel). In [2], we need to do this in a differential manner
> (or in "chuncks"). I.e. when the listener is invoked, only a property is modified, hence only that
> property needs to be converted to a Node compatible representation and sent to the server. Currently
> we handle this here:
> https://github.com/flower-platform/flower-platform-4/blob/546e258a28645c2396e515681bb2bbae029fb3ed/org.flowerplatform.freeplane/src/org/flowerplatform/freeplane/controller/MindMapPropertiesProvider.java
>
> The disadvantage of our approach is that 1) we hardcode the available properties (i.e. if a new
> property appears in Freeplane 1.4, we'll need to update the code as well). And 2) we only support a
> subset of the properties available.
>
> I think that your idea to use the XML serialization mechanism could help. This mechanism already
> iterates all properties of the XML representation, and knows how to properly set each one of them.
> Maybe we could do a similar thing, but instead of iterating/visiting the XML, we will be iterating
> the properties map from Node. I'm thinking of xml reader for [1] and xml writer for [2]. Maybe area
> will need to be modified a little bit, to work with the 2 types of serialization: XML <-> NodeModel
> and Node <-> NodeModel.
>
> However, while browsing rapidly through the code, I didn't manage to find where the serializers do
> the actual get or set of the properties. Could you give me a hint?

Current implementation of reading / writing xml representation is pretty complex because I wanted to
have readers to be able to react both on single attributes and on elements and extensions have
different serialization mechanism. Current xml persistence API is contained in package
org.freeplane.core.io . You can look at class hierarchies of interfaces declared there to get to
single elements.

If there are arguments to rework or change this API we could consider to do it.

> I have a question: what is the meaning of IExtension? Initially I thought it was a superinterface of
> all the model extensions (e.g. NodeSizeModel). However, by looking at the other implementors and
> judging by their name, they seem to have different roles: e.g. NodeStyleController, IUndoHandler,
> IScriptStarter.

IExtension is used for all kinds of extensions namely for model extensions which extend map data
structures and for controller extensions which allow controller classes (that means classes knowing
how to manipulate data structures in a consistent way, persist them and register corresponding
actions) to be registered as extensions by org.freeplane.features.mode.Controller and
org.freeplane.features.mode.ModeController. Look at class
org.freeplane.core.extension.ExtensionContainer and all its references.

Regards,
Dimitry
Reply | Threaded
Open this post in threaded view
|

Re: Technical ideas: implementing collaboration in Freeplane, with Flower Platform

cristian.spiescu
Hello Dimitry,

Thank you for your reply.

> Can we find time for a team viewer / google hangout session to go
> through the code
> together?
I think that this would be very efficient indeed. Can you propose some
date/times when you could be available (e.g. next week)?

Thanks!

Regards,
Cristian.
Reply | Threaded
Open this post in threaded view
|

Re: Technical ideas: implementing collaboration in Freeplane, with Flower Platform

Dimitry Polivaev
Administrator
Hello Cristian,

>> Can we find time for a team viewer / google hangout session to go
>> through the code
>> together?
> I think that this would be very efficient indeed. Can you propose some
> date/times when you could be available (e.g. next week)?

actually I would like to do it today. Are you available today?

Regards,
Dimitry
Reply | Threaded
Open this post in threaded view
|

Re: Technical ideas: implementing collaboration in Freeplane, with Flower Platform

Dimitry Polivaev
Administrator
In reply to this post by cristian.spiescu
>> Can we find time for a team viewer / google hangout session to go
>> through the code
>> together?
> I think that this would be very efficient indeed. Can you propose some
> date/times when you could be available (e.g. next week)?

http://doodle.com/8hsamc2phbk54exa

Regards,
Dimitry

Reply | Threaded
Open this post in threaded view
|

Re: Technical ideas: implementing collaboration in Freeplane, with Flower Platform

liamdgray
Dear Dmitry and Cristian, did you ever chat about collaboration, and if so, what was the outcome? I see few or maybe no updates in Flower Platform's Freeplane folder on Github after the last message in this thread.

On behalf of a nonprofit organization, I will be spending the next month (at least) working intensively to develop a robust mind-mapping platform supporting collaboration on a large scale. We love Freeplane, but we need to support concurrent edits and collaboration very reliably, and we want a server with client web UI so that clients don't need installers.  I think that if I were writing it from scratch, I might build on a graph database such as neo4j, with import/export of Freeplane's file format.  But, apart from the fact that we want to add a lot of specific UI features and I prefer to write new client-side UI code in JavaScript, I'm still thinking it's better not to re-invent the wheel.  Any existing work that I can leverage will be a godsend!

Thanks for any suggestions in support of these goals!

Best regards,
Liam
Reply | Threaded
Open this post in threaded view
|

Re: Technical ideas: implementing collaboration in Freeplane, with Flower Platform

Dimitry Polivaev
Administrator
Hello Liam,

I am afraid I have got no updates about Flower Platform and no information from Christian.
As I pointed out I think that collaboration using Freeplane seems to be feasible, but if you want to use other technology  than old good Java Swing Freeplane code base seems to be not helpful for your development.

Nevertheless I would like to know more about your project goals.

Pleasedon't hesitate to contact me whenever you need.

Best regards,
Dimitry

> Dear Dmitry and Cristian, did you ever chat about collaboration, and
> if so, what was the outcome? I see few or maybe no updates in Flower
> Platform's Freeplane folder on Github after the last message in this
> thread.
>
> On behalf of a nonprofit organization, I will be spending the next
> month (at least) working intensively to develop a robust mind-mapping
> platform supporting collaboration on a large scale. We love
> Freeplane, but we need to support concurrent edits and collaboration
> very reliably, and we want a server with client web UI so that
> clients don't need installers.  I think that if I were writing it
> from scratch, I might build on a graph database such as neo4j, with
> import/export of Freeplane's file format.  But, apart from the fact
> that we want to add a lot of specific UI features and I prefer to
> write new client-side UI code in JavaScript, I'm still thinking it's
> better not to re-invent the wheel.  Any existing work that I can
> leverage will be a godsend!
>
> Thanks for any suggestions in support of these goals!
>
> Best regards, Liam
>
Reply | Threaded
Open this post in threaded view
|

Re: Technical ideas: implementing collaboration in Freeplane, with Flower Platform

Felix Natter
Administrator
Hallo Dimitry,
Ich glaube du hast aus Versehen 
nicht auf f-d geantwortet?
VG Felix

Am 10.02.2017 um 20:57 schrieb Dimitry Polivaev [via Freeplane Developer] <[hidden email]>:

Hello Liam,

I am afraid I have got no updates about Flower Platform and no information from Christian.
As I pointed out I think that collaboration using Freeplane seems to be feasible, but if you want to use other technology  than old good Java Swing Freeplane code base seems to be not helpful for your development.

Nevertheless I would like to know more about your project goals.

Pleasedon't hesitate to contact me whenever you need.

Best regards,
Dimitry

> Dear Dmitry and Cristian, did you ever chat about collaboration, and
> if so, what was the outcome? I see few or maybe no updates in Flower
> Platform's Freeplane folder on Github after the last message in this
> thread.
>
> On behalf of a nonprofit organization, I will be spending the next
> month (at least) working intensively to develop a robust mind-mapping
> platform supporting collaboration on a large scale. We love
> Freeplane, but we need to support concurrent edits and collaboration
> very reliably, and we want a server with client web UI so that
> clients don't need installers.  I think that if I were writing it
> from scratch, I might build on a graph database such as neo4j, with
> import/export of Freeplane's file format.  But, apart from the fact
> that we want to add a lot of specific UI features and I prefer to
> write new client-side UI code in JavaScript, I'm still thinking it's
> better not to re-invent the wheel.  Any existing work that I can
> leverage will be a godsend!
>
> Thanks for any suggestions in support of these goals!
>
> Best regards, Liam
>



To start a new topic under Freeplane Developer, email [hidden email]
To unsubscribe from Freeplane Developer, click here.
NAML
Reply | Threaded
Open this post in threaded view
|

Re: Technical ideas: implementing collaboration in Freeplane, with Flower Platform

Felix Natter
Administrator
Ooops, wrong!
Reply | Threaded
Open this post in threaded view
|

Re: Technical ideas: implementing collaboration in Freeplane, with Flower Platform

Joeran
In reply to this post by Felix Natter
Hi Liam,

the Freeplane Team and Docear had already a headless version and a web version running that was not very stable and had only few features. You are welcome to use what we have so far. I will contact you  with more information by private email (and CC Felix, Volker and Dimitry).

Best,
Joeran

On Sat, Feb 11, 2017 at 7:09 AM, Felix Natter [via Freeplane Developer] <[hidden email]> wrote:
Hallo Dimitry,
Ich glaube du hast aus Versehen 
nicht auf f-d geantwortet?
VG Felix

Am 10.02.2017 um 20:57 schrieb Dimitry Polivaev [via Freeplane Developer] <[hidden email]>:

Hello Liam,

I am afraid I have got no updates about Flower Platform and no information from Christian.
As I pointed out I think that collaboration using Freeplane seems to be feasible, but if you want to use other technology  than old good Java Swing Freeplane code base seems to be not helpful for your development.

Nevertheless I would like to know more about your project goals.

Pleasedon't hesitate to contact me whenever you need.

Best regards,
Dimitry

> Dear Dmitry and Cristian, did you ever chat about collaboration, and
> if so, what was the outcome? I see few or maybe no updates in Flower
> Platform's Freeplane folder on Github after the last message in this
> thread.
>
> On behalf of a nonprofit organization, I will be spending the next
> month (at least) working intensively to develop a robust mind-mapping
> platform supporting collaboration on a large scale. We love
> Freeplane, but we need to support concurrent edits and collaboration
> very reliably, and we want a server with client web UI so that
> clients don't need installers.  I think that if I were writing it
> from scratch, I might build on a graph database such as neo4j, with
> import/export of Freeplane's file format.  But, apart from the fact
> that we want to add a lot of specific UI features and I prefer to
> write new client-side UI code in JavaScript, I'm still thinking it's
> better not to re-invent the wheel.  Any existing work that I can
> leverage will be a godsend!
>
> Thanks for any suggestions in support of these goals!
>
> Best regards, Liam
>


To start a new topic under Freeplane Developer, email [hidden email]
To unsubscribe from Freeplane Developer, click here.
NAML



To start a new topic under Freeplane Developer, email [hidden email]
To unsubscribe from Freeplane Developer, click here.
NAML



--
12