Difference between revisions of "NetworkedEditing"

From Inkscape Wiki
Jump to navigation Jump to search
(Removing spam)
 
(outdated)
 
(16 intermediate revisions by 6 users not shown)
Line 1: Line 1:
This page explores implementation of adding network I/O capabilities to Inkscape.
{{DevDiscussion}}
{{Outdated}}
This page explores implementation of adding network I[[/O]] capabilities to Inkscape.


NetworkedEditing could work in one of two broad modes:
[[NetworkedEditing]] could work in one of two broad modes:
* A user downloads an image over the Internet, works on it, and posts it back. "Network retrieval and posting."
* '''network retrieval and posting:''' A user downloads an image over the Internet, works on it, and posts it back.
* Several people work on the same image simultaneously, and see each other's edits in real time. "White boarding."
* '''whiteboarding:''' Several people work on the same image simultaneously, and see each other's edits in real time.


See also: WhiteboardSeniorProjectProposal - for notes on a "White boarding" effort.
See also [[WhiteboardSeniorProjectProposal]] for notes on a "whiteboarding" effort.


== White Boarding ==
== Whiteboarding ==


The user would select 'Connect...' from the File menu in order to connect a drawing to a remote server.
The user would select 'Connect...' from the File menu in order to connect a drawing to a remote server.
Line 14: Line 16:
composition.   
composition.   


Changes arrive to Inkscape via slots as described in the link above.
Changes arrive to Inkscape via slots as described in [[WhiteboardSeniorProjectProposal]].


The document Inkscape views could be read-only or read-write.  Multiple people could be able to write at
The document Inkscape views could be read-only or read-write.  Multiple people could be able to write at
Line 22: Line 24:
== Network Retrieval and Posting ==
== Network Retrieval and Posting ==


Another option would be to tie into WebDAV. Edits would not be live.
Another option would be to tie into [[WebDAV]]. Edits would not be live.


You could connect by XML-RPC, WebDAV, or some standardized GET/POST system.
You could connect by XML-RPC, [[WebDAV]], or some standardized GET/POST system.


You might want to export PNG images as well. This depends on whether image servers can convert SVG's to PNG's automatically or not.
You might want to export PNG images as well. This depends on whether image servers can convert SVG's to PNG's automatically or not.


With the proposed ExtensionArchitectureProposals, you should be able to do this pretty easily.
With the proposed [[ExtensionArchitectureProposals]], you should be able to do this pretty easily.


== Networked Editing & Wiki ==
== Networked Editing & Wiki ==


There are many possibilities for wiki here. See [http://wikifeatures.wiki.taoriver.net/moin.cgi/WikiWhiteboard WikiFeatures:WikiWhiteboard], [http://interwiki.wiki.taoriver.net/moin.cgi/MarkupSkins InterWiki:MarkupSkins]
There are many possibilities for wiki here. See [http://wikifeatures.wiki.taoriver.net/moin.cgi/WikiWhiteboard [[WikiFeatures]]:[[WikiWhiteboard]]], [http://interwiki.wiki.taoriver.net/moin.cgi/MarkupSkins [[InterWiki]]:[[MarkupSkins]]]


''Live editing would be nice, but isn't necessary. You could just: Connect to a wiki by XML-RPC, select a page, select an SVG image on the page, retrieve the image, edit the image locally, and click "export." Since most browser can't read SVG right now, you'd export both the new SVG image, and a PNG imprint.''
''Live editing would be nice, but isn't necessary. You could just: Connect to a wiki by XML-RPC, select a page, select an SVG image on the page, retrieve the image, edit the image locally, and click "export." Since most browser can't read SVG right now, you'd export both the new SVG image, and a PNG imprint.''
Line 40: Line 42:
=== Uses of Networked Editing ===
=== Uses of Networked Editing ===


Wiki - editing SVG images on wiki pages
Wiki -- editing SVG images on wiki pages


Distributed whiteboarding - Multiple people could work on brainstorming a diagram.
Distributed whiteboarding -- Multiple people could work on brainstorming a diagram.


Multiperson drawing - Several people could work on different areas of the drawing at the same time.
Multi-person drawing -- Several people could work on different areas of the drawing at the same time.
Could be useful for mapmaking or for DTP work.
Could be useful for mapmaking or for DTP work.


Shared Component Repositories - Folks could set up Internet-based repositories for clipart, styles,  
Shared component repositories -- Folks could set up Internet-based repositories for clipart, styles,  
symbols, maps, flags-of-the-world, etc. and allow Inkscape users to log in to browse and import/export. (See also: [http://www.openclipart.org/ Open Clip Art Project])
symbols, maps, flags-of-the-world, etc. and allow Inkscape users to log in to browse and import/export. (See also: [http://www.openclipart.org/ Open Clip Art Project])


Slideshows - a remote user can walk a group through a presentation, such as during a teleconference.
Slideshows -- A remote user can walk a group through a presentation, such as during a teleconference.


Games - By implementing additional logic on the server, simple SVG-based games could be created.
Games -- By implementing additional logic on the server, simple SVG-based games could be created.




Line 83: Line 85:
-- [http://speakeasy.org/~lion/ Lion Kimbro]
-- [http://speakeasy.org/~lion/ Lion Kimbro]


Hi Lion - I think you and I worked together on a project once before - Wikipedia?  FreeBooks?  
Hi Lion -- I think you and I worked together on a project once before -- Wikipedia?  [[FreeBooks]]?  
Thanks for the feedback on the patent, sounds like there are ways to work around it.
Thanks for the feedback on the patent, sounds like there are ways to work around it.
-- BryceHarrington
-- [[BryceHarrington]]
 
: That's it! Free Books, with Ben Crowell. :) -- [[LionKimbro]]
 
According to the U.S. patent office [https://ramps.uspto.gov/eram/getMaintFeesInfo.do RAMPS] system, this patent has expired:
 


  That's it! Free Books, with Ben Crowell. :) -- LionKimbro


=== Other Projects ===
=== Other Projects ===


*[http://www.dklevine.com/general/software/tc1000/jarnal.htm Jarnal,] written in Java, [http://www.dklevine.com/general/software/tc1000/jarnal-net.htm includes network editing features.]
*[http://www.dklevine.com/general/software/tc1000/jarnal.htm Jarnal], written in Java, [http://www.dklevine.com/general/software/tc1000/jarnal-net.htm includes network editing features].


*[http://www.adebenham.com/gournal/ Gournal(GTK2/Perl)] - A Note-taking Tablet Application for Linux has something like this. ''Does it? I don't see anything on the web page suggesting this..?''
*[http://www.adebenham.com/gournal/ Gournal(GTK2[[/Perl]])] -- A Note-taking Tablet Application for Linux has something like this. ''Does it? I don't see anything on the web page suggesting this..?''
: Yes, it does. Just download it and test it. You can even look at the screenshot, there are connect and listening buttons.
: Yes, it does. Just download it and test it. You can even look at the screenshot, there are connect and listening buttons.



Latest revision as of 19:13, 29 February 2012

This page is outdated. It is kept for historical reasons, e.g. to document specific decisions in Inkscape development.


This page explores implementation of adding network I/O capabilities to Inkscape.

NetworkedEditing could work in one of two broad modes:

  • network retrieval and posting: A user downloads an image over the Internet, works on it, and posts it back.
  • whiteboarding: Several people work on the same image simultaneously, and see each other's edits in real time.

See also WhiteboardSeniorProjectProposal for notes on a "whiteboarding" effort.

Whiteboarding

The user would select 'Connect...' from the File menu in order to connect a drawing to a remote server. Inkscape would then serve as a client application, receiving and submitting SVG modifications as transactions. The server authorizes changes and serves as the authoritative definition for the document's composition.

Changes arrive to Inkscape via slots as described in WhiteboardSeniorProjectProposal.

The document Inkscape views could be read-only or read-write. Multiple people could be able to write at the same time. Through 'locking', some drawing objects could be made available to the user to edit while others are not.

Network Retrieval and Posting

Another option would be to tie into WebDAV. Edits would not be live.

You could connect by XML-RPC, WebDAV, or some standardized GET/POST system.

You might want to export PNG images as well. This depends on whether image servers can convert SVG's to PNG's automatically or not.

With the proposed ExtensionArchitectureProposals, you should be able to do this pretty easily.

Networked Editing & Wiki

There are many possibilities for wiki here. See WikiFeatures:WikiWhiteboard, InterWiki:MarkupSkins

Live editing would be nice, but isn't necessary. You could just: Connect to a wiki by XML-RPC, select a page, select an SVG image on the page, retrieve the image, edit the image locally, and click "export." Since most browser can't read SVG right now, you'd export both the new SVG image, and a PNG imprint.

If anyone would like to work on this, please contact me (lion at speakeasy.net), or Thomas Waldmann on irc.freenode.net #moin.

Uses of Networked Editing

Wiki -- editing SVG images on wiki pages

Distributed whiteboarding -- Multiple people could work on brainstorming a diagram.

Multi-person drawing -- Several people could work on different areas of the drawing at the same time. Could be useful for mapmaking or for DTP work.

Shared component repositories -- Folks could set up Internet-based repositories for clipart, styles, symbols, maps, flags-of-the-world, etc. and allow Inkscape users to log in to browse and import/export. (See also: Open Clip Art Project)

Slideshows -- A remote user can walk a group through a presentation, such as during a teleconference.

Games -- By implementing additional logic on the server, simple SVG-based games could be created.


Patent Problems?

It looks like there are some patent problems with this extension. Sorry, I just have a german link: http://www.golem.de/0311/28512.html

Please summarize in English.

I found an English article about this: http://www.itworld.com/App/4155/031125netmeeting/ or just use http://babelfish.altavista.com/

Thanks. But without knowing the particulars of the patent it's difficult to see whether there are actually patent problems with this. Is it a patent over the entire concept of whiteboarding or just some specific whiteboarding feature contained in the application in question? -- bryce

I found the patent number. It's 5,206,934 and the patent is from Imagexpo. And here is the link: http://patft.uspto.gov/netacgi/nph-Parser?Sect1=PTO2&Sect2=HITOFF&p=1&u=/netahtml/search-bool.html&r=1&f=G&l=50&co1=AND&d=ptxt&s1=5,206,934.WKU.&OS=PN/5,206,934&RS=PN/5,206,934

That's easy to get around. Just go to a pull model rather than a push. Trigger the pulls by ringing a bell from the changing process.

In fact, it can even work better this way- after the bell rings, wait 150 ms. If you get another ring on the bell, keep waiting... When activity dies down, go fetch your changes. Alternatively, if a maximum period passes (say, 500ms-1000ms) perform a fetch.

You'll note that in the patent, you have to send the data and commands with the change notification. Thus, this change means you are free from the patent.

I am not a lawyer. This is my opinion only.

-- Lion Kimbro

Hi Lion -- I think you and I worked together on a project once before -- Wikipedia? FreeBooks? Thanks for the feedback on the patent, sounds like there are ways to work around it. -- BryceHarrington

That's it! Free Books, with Ben Crowell. :) -- LionKimbro

According to the U.S. patent office RAMPS system, this patent has expired:


Other Projects

  • Gournal(GTK2/Perl) -- A Note-taking Tablet Application for Linux has something like this. Does it? I don't see anything on the web page suggesting this..?
Yes, it does. Just download it and test it. You can even look at the screenshot, there are connect and listening buttons.


Other Notes

Gtkmm provides the ability to check on file descriptors for changed data. See http://www.gtkmm.org/gtkmm2/docs/tutorial/html/ch17s02.html for details.