Difference between revisions of "NetworkedEditing"

From Inkscape Wiki
Jump to: navigation, search
Line 103: Line 103:
Gtkmm provides the ability to check on file descriptors for changed data.  See
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.
http://www.gtkmm.org/gtkmm2/docs/tutorial/html/ch17s02.html for details.
[http://cai01.1234556789.com ÁåÉù][http://wwa1.91i.net/02.htm LEDÏÔʾÆÁ][http://jii01.zhiliaotuofa.com ÊÖ»úÁåÉù][http://lin01.voip99.com ÊÖ»úÁåÉùÏÂÔØ][http://duu01.voip99.net ²ÊÁå][http://cai02.1234556789.com ¶ÌÐÅ][http://jii02.zhiliaotuofa.com àÀŮ][http://lin02.voip99.com àÀŮͼƬ][http://duu02.voip99.net àÀŮдÕæ][http://cai03.1234556789.com ÊÓƵàÀŮ][http://jii03.zhiliaotuofa.com àÀŮͼ][http://lin03.voip99.com ÊÖ»ú¶ÌÐÅ][http://duu03.voip99.net ÊÖ»úͼƬ][http://cai04.1234556789.com ÁåÉùÏÂÔØ][http://jii04.zhiliaotuofa.com ²ÊÐÅ][http://duu04.voip99.net àâ·ÑÊÖ»úÁåÉùÏÂÔØ][http://cai05.1234556789.com ÈýÐÇÊÖ»úÁåÉùÏÂÔØ][http://jii05.zhiliaotuofa.com àâ·ÑÊÖ»úÁåÉùÏÂÔØ][http://lin05.voip99.com ÈýÐÇÊÖ»úÁåÉùÏÂÔØ][http://duu05.voip99.net ÊÖ»úͼƬÏÂÔØ][http://cai06.1234556789.com àâ·ÑÊÖ»úÁåÉù][http://jii06.zhiliaotuofa.com ÊÖ»ú²ÊÁå][http://lin06.voip99.com ÊÖ»úÓÎÏ·ÏÂÔØ][http://duu06.voip99.net ŵ»ùÑÇÊÖ»úÁåÉùÏÂÔØ][http://cai07.1234556789.com àâ·ÑÁåÉùÏÂÔØ][http://jii07.zhiliaotuofa.com ºÍÏÒÁåÉù][http://lin07.voip99.com àâ·ÑÁåÉù][http://duu07.voip99.net СÁéͨÁåÉùÏÂÔØ][http://cai08.1234556789.com ²ÊÐã][http://jii08.zhiliaotuofa.com ²ÊÁåÏÂÔØ][http://lin08.voip99.com Òƶ¯²ÊÁå][http://duu08.voip99.net ÖйúÒƶ¯²ÊÁå][http://cai09.1234556789.com ÊÖ»ú²ÊÁå][http://jii09.zhiliaotuofa.com 12530²ÊÁå][http://lin09.voip99.com ÁªÍ¨²ÊÁå][http://duu09.voip99.net ÓÄĬ¶ÌÐÅ][http://cai10.1234556789.com ¸ãЦ¶ÌÐÅ][http://jii10.zhiliaotuofa.com ¶ÌÐÅЦ»°][http://lin10.voip99.com ¾­µä¶ÌÐÅ][http://duu10.voip99.net àâ·Ñ¶ÌÐÅ][http://cai11.1234556789.com àâ·Ñ·¢¶ÌÐÅ][http://jii11.zhiliaotuofa.com °®Çé¶ÌÐÅ][http://lin11.voip99.com ÁªÍ¨ÊÖ»úÁåÉùÏÂÔØ][http://duu11.voip99.net ÈýÐÇÊÖ»úÁåÉù][http://cai12.1234556789.com ÊÖ»ú²ÊÁåÏÂÔØ][http://jii12.zhiliaotuofa.com tclÊÖ»úÁåÉùÏÂÔØ][http://lin12.voip99.com ÈýÐÇÊÖ»úͼƬ][http://duu12.voip99.net ÊÖ»úÏÂÔØ][http://cai13.1234556789.com ²¨µ¼ÊÖ»úÁåÉùÏÂÔØ][http://jii13.zhiliaotuofa.com ÊÖ»ú²ÊÐÅ][http://lin13.voip99.com ÊÖ»ú²Êͼ][http://duu13.voip99.net ÊÖ»úÁáÉù][http://cai14.1234556789.com ÊÖ»úÁåÒô][http://jii14.zhiliaotuofa.com tclÊÖ»úÁåÉù][http://lin14.voip99.com ÁªÍ¨ÊÖ»úÁåÉùÏÂÔØ][http://duu14.voip99.net ²ÊÁá][http://duu15.voip99.net ÖйúÒƶ¯12530²ÊÁå][http://cai15.1234556789.com 12530Òƶ¯²ÊÁåÏÂÔØ][http://jii15.zhiliaotuofa.com СÁéͨ²ÊÁå][http://lin15.voip99.com ÊÖ»ú²ÊÁåÏÂÔØ][http://duu16.voip99.net ÖйúÁªÍ¨²ÊÁå][http://cai16.1234556789.com Õã½­Òƶ¯²ÊÁå][http://jii16.zhiliaotuofa.com ¹ã¶«Òƶ¯²ÊÁå12530][http://lin16.voip99.com ²ÊÐÅͼƬ][http://duu17.voip99.net ²ÊÐÅÁåÉù][http://cai17.1234556789.com ²ÊÐÅÏà²á][http://jii17.zhiliaotuofa.com ²ÊÐÅÏÂÔØ][http://lin17.voip99.com 2004ÓÄĬ¸ãЦ¶ÌÐÅÏ¢][http://duu18.voip99.net ÊÖ»úÓÄĬ¶ÌÐÅ][http://cai18.1234556789.com ¶ÌÐÅÏ¢][http://jii18.zhiliaotuofa.com ÊÖ»ú¶ÌÐÅЦ»°][http://lin18.voip99.com àâ·Ñ·¢ÊÖ»ú¶ÌÐÅ][http://duu19.voip99.net àâ·Ñ¶ÌÐÅÏ¢ÓÄĬЦ»°][http://cai19.1234556789.com ÖØÑô½Ú¶ÌÐÅ][http://jii19.zhiliaotuofa.com ¾­µäÊÖ»ú¶ÌÐÅ][http://lin19.voip99.com ÊÖ»ú¶ÌÐÅÏ¢][http://duu20.voip99.net ÍøÉÏàâ·Ñ·¢¶ÌÐÅ][http://cai20.1234556789.com ÊÖ»ú¶ÌÐÅÏ¢ÓÄĬЦ»°][http://jii20.zhiliaotuofa.com àâ·Ñ·¢¶ÌÐÅÈí¼þ][http://lin20.voip99.com àâ·ÑÊÖ»ú¶ÌÐÅ][http://duu21.voip99.net ¸ãЦÊÖ»ú¶ÌÐÅ][http://cai21.1234556789.com ²ÊÐŶ¯»­][http://jii21.zhiliaotuofa.com àâ·Ñ²ÊÐÅ][http://ww0.voip99.com ¶ú»ú][http://ww1.voip99.com ÎÀÐǵçÊÓ][http://ww0.voip99.net ¼àÊÓÆ÷][http://ww1.voip99.net ±äѹÆ÷][http://ww2.voip99.net ¶Ô½²»ú][http://ww3.voip99.net ´«¸ÐÆ÷][http://ww4.voip99.net µç×ÓÔªÆ÷¼þ][http://ww0.zhiliaotuofa.com µ¶¾ß][http://ww1.zhiliaotuofa.com µØ̺][http://ww2.zhiliaotuofa.com ÖñÌ¿][http://ww3.zhiliaotuofa.com ÉîÛÚ»úƱ][http://ww4.zhiliaotuofa.com ½º´ü,ÉîÛÚ½º´ü][http://ww5.zhiliaotuofa.com ½º´ø,ÉîÛÚ½º´ø][http://ww2.voip99.com »úƱ][http://ww5.voip99.net ¹â¶Ë»ú][http://www.voip99.com/ voip½»Ò×Íø][http://www.zhiliaotuofa.com/ ÍÑ·¢ÖÎÁÆÍø][http://jipiao.voip99.com/ ÉîÛÚ»úƱ][http://sudi.voip99.com/ ¿ìµÝ|Ëٵݹ«Ë¾][http://shipinhuiyi.zhiliaotuofa.com ÊÓƵ»áÒé][http://zuche.voip99.net Æû³µ×âÁÞ][http://tiezhi.zhiliaotuofa.com ÌùÖ½][http://yinshuiji.zhiliaotuofa.com ÒûË®»ú][http://buxiugang.voip99.com ²»Ðâ¸Ö][http://shuijing.zhiliaotuofa.com Ë®¾§]

Revision as of 07:31, 26 October 2004

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.


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.