NetworkedEditing

From Inkscape Wiki
Revision as of 10:16, 17 November 2004 by 195.177.212.225 (talk) (removed spam)
(diff) ← Older revision | Latest revision (diff) | Newer revision → (diff)
Jump to navigation Jump to search
The printable version is no longer supported and may have rendering errors. Please update your browser bookmarks and please use the default browser print function instead.

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

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.