NetworkedEditing
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
- Jarnal, written in Java, includes network editing features.
- 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.