Sodipodi - open source native SVG editor for Linux and Windows

1. About sodipodi in general

Sodipodi (http://sodipodi.sourceforge.ne) is high quality, high performance native SVG editor for Linux and Windows. The project was started about 3 years ago as a part of Gnome desktop environment, but has since become independent. Recently it got ported to Microsoft Windows environemnt, thus becoming truly cross-platform.

Sodipodi is open source and free software. Like most other fre software projects it is developed by loose association of volunteers from around the world.

2. Document handling

Sodipodi is true native SVG editor. That means in addition to using SVG as preferred file format, keeping unchanged SVG object tree, as primary document model in memory. Due to speed and efficency concerns, this model is not DOM, but DOM layer can be easily added, for example if building standalone SVG viewer based on sodipodi.

Native SVG support makes sodipodi unique in two aspects, compared with SVG import/export functionality in most generic vector drawing programs:

As general rule, nothing in file structure is changed, until object is edited. The latter toggles certain set of bookkeeping and cleanup changes to be done to object itself, and direct relatives (referenced gradients, children).

3. Generic interface

Although sodipodi is completely built around SVG rendering model, the interface presented to user resembles more paper-oriented vector drawing tools. That is, Y grows upwards, default drawing sizes are determined by papers, default units are typographic points and all distances are given in unambigous physical units. SVG graphic is mapped on top of page, with one SVG point corresponding to one typographic point.

Although this may be confusing initially, we believe that providing unambigous reference system does actually editing easier.

Sodipodi supports arbitrary number of open documents and arbitrary number of views of per document. Each view (editing window) can have different selection and active tool.

3. SVG handling issues

While SVG specification is very strict about errors, sodipodi is much more forgiving. Most errors are ignored or corrected silently. Sodipodi is primarily editing tool, and is still work in progress. So we do not want to risk mistakenly changing user hand-tuned code, even it seems to cause errors in document.

We plan to add full validity checking with an optional fixing interface in future, so sodipodi can be used to interactively clean up documents.

4. Current status

Current sodipodi version number is 0.31, and it has complete or mostly complete support for following SVG elements:

5. Editing functions

Sodipodi has quite familiar set of tools, similar to other vector drawing applications. Although this is not always the optimal interface for SVG creation, it makes learning sodipodi much easier to people.

Tools and dialogs:

6. XML Editor

Internal XML document model (not DOM, but very similar to DOM), allows sodipodi to present very convenient and powerful editing interface. All aspects of document can be changed directly in XML tree. Display autoupdates itself, keeping views constantly sunchronized with document backbone. XML editor can be though as just another view into document in MVC architecture, functionally identical to editing windows.

7. Technologies used

Sodipodi is built using Gtk+ 2.0 widget set. Gtk+ is availabel both for Linux/Unix and windows and is the basis of Gnome desktop environment, now adopted by Sun as the successor of CDE.

Rendering code is borrowed from different sources (this is the convenience of writing free software). Certain crucial parts of shape renderer are implemented by libart 2D library. Most bitmap composition, gradient and display list code are sodipodi specific.

Sodipodi uses FreeType font rendering engine for typography under Linux and Unix, and native fonts under windows.

Special concern is given to make sodipodi usable on lower-end hardware as well.

8. Future directions

Sodipodi aims to be support full SVG specifications both as editor and as viewer. In addition to that, there are several directions we are investigating:

Sodipodi is developed by volunteers over the net, and thus evolving constantly together with online community.

9. Sodipodi authors