Implement connectors for shapes in Inkscape, with automatic line routing. ------------------------------------------------------------------------- The project is to add support for connectors with automatic line routing to Inkscape. Connectors are lines drawn between shapes that link them in a logical way. These connectors should automatically update to stay attached to shapes whenever the shapes are moved. If they are object-avoiding then they should also update whenever a shape is moved and placed over their path. This project is one of those suggested by the Inkscape Team for SoC students. Inkscape produces Scalable Vector Graphics (SVG) which will likely be utilised by many websites in the future (as browser support improves) since they can be displayed at any size without loss of clarity. While presently Inkscape lacks support for connectors, adding these could make it very useful for producing diagrams and figures in SVG. I am a PhD student working in an Adaptive Diagrams research group at Monash University in Australia. My interests are in tools such as Inkscape. My recent research has been in creating some algorithms for incrementally updating visibility graphs to allow fast auto-routing of object-avoiding connectors in interactive diagram editors. A week or so ago I submitted a paper to Graph Drawing 2005 presenting these algorithms. I have mostly coded these algorithms and a demonstration of them can be seen in the basic diagram editor I have written as a test-bed for prototyping my research ideas. The editor is called Dunnart, and binary downloads have been posted on the web to accompany the paper submission (see http://www.csse.monash.edu.au/~mwybrow/). The code for connector routing could be separated out from Dunnart and turned into an open source library. This library could then be used in open source projects such as Inkscape and Dia to provide auto-routing object-avoiding connectors. The project contributions would be: o An as yet unnamed library (LGPL) for generating object-avoiding connector paths, written to work in interactive diagramming software. o Support in Inkscape for auto-routing connectors: - Integrate Inkscape with library. - Develop an interface (GUI) for creating and interacting with connector objects in Inkscape. - Create documentation/tutorial for connectors. - Deal with bugs/issues discovered with the code, as well as handling feedback for feature requests related to connectors. Possible additional contributions (time permitting): - Support for changing path heuristics (see Dunnart website). - Support for adding extra dummy points to connectors that the path must go though, to give an extra level of control. - Rounding of connector corners. - Any other suggested features offered by Inkscape users. I haven't previously contributed to open source projects, though I have benefited greatly from them. I've used Linux and much Open Source Software at home and Uni for several years now. I have submitted bug fixes and trivial diffs for things like compilation problems, but never really got properly involved in anything (mainly due to time constraints). I did work for a summer during my undergraduate degree with the Mercury compiler team at Melbourne University, which is an Open Source project though felt more like a University project! :-) (http://www.mercury.csse.unimelb.edu.au/) They do have very good practices for source control, reviews, mailing list, etc. It also means I understand the basics of the Linux build chain and build tools so such things won't be an unnecessary hurdle (I'm able to build Inkscape from CVS). I also understand the importance of good coding and documentation for projects like Inkscape. I've been (lurking) on the Inkscape mailing lists for some time now due to an interest in the project. I know what the developers have been working on and who to approach for assistance. My research group at Monash includes Nathan Hurst and Peter Moulder, both Inkscape contributors. Peter is also the author of some of the supporting code that will be required to implement connectors in Inkscape. I believe I'd be in a good position to deliver this project since I have completely implemented connectors for my prototype editor, and resolved many of the issues I would likely encounter in "getting it all to work". I already have working code for computing connector paths which, with minor work, can be turned into a library. This will increase in speed and utility as my research continues. Such work would benefit any open source diagramming software that wishes to include auto-routing object-avoiding connectors. -Michael Wybrow, June 2005 vim: ts=4 sw=4 et tw=0 wm=7