From Inkscape Wiki
Jump to navigation Jump to search

Roadmap Archive

These items are from the Roadmap for previous versions. They are preserved here for posterity

Milestone 8 - GtkMM Architectural Change - Inkscape 0.42

General Gtkmm Interface

  • (DONE) Merge the inkscape_gtkmm codebase into mainline with cmdline option to activate it [bryce]
  • (DONE) Implement text in shape UI
  • (DONE) Selection and node tools: double-click on group sets group as current layer (without altering inkscape:groupmode) [bb]
  • Create a TreeEditor dialog for use by the XML editor, Extensions, Layers, etc.
  • Develop a loadable keyboard accelerator "theme" system
  • Create a CurrentColorWidget

Main Chrome

  • Controls panel:
    • Implement Text controls
    • Implement X/Y spinbuttons for the Node controls
    • Add more spinbuttons to shape tools: center, radius, w/h, etc.
    • Make defaults settable in Preferences
  • Develop Gtkmm Context Menu
  • Develop Gtkmm Statusbar
  • Implement a detachable toolbox

Icons and Cursors

  • (DONE) Implement basic icon theming capability
  • (DONE) Convert all xmp icons to svg's
  • (DONE) Create one alternate icon/cursor set
  • Add Gnome HIG-compliant ICON (Normal logo with NIB in it) [mental]
  • Create a complete default icon/cursor set [bb]

Dialogs Redevelopment and HIG-Compliance

  • Object Properties dialog
    • (DONE) Redesign Object Properties dialog
  • (DONE) Align and Distribute Dialog - Convert to Gtkmm
  • (DONE) Document Preferences Dialog - Convert to Gtkmm
  • (DONE) Trace Dialog - Convert to Gtkmm
  • (DONE) Transformation Dialog - Convert to Gtkmm
  • (DONE) Overhaul Gradient UI to improve management and creation
  • Preferences dialog
    • (DONE, for .44) Convert to Gtkmm
    • (DONE, for .44) Redesign so it's not tabs-in-tabs
  • Fill/Stroke dialog
    • Convert to Gtkmm
  • Text Properties dialog - Convert to Gtkmm
  • (DONE for .43/.44) Layers Dialog (Also see Layers section below)
  • Export Dialog - Convert to Gtkmm
  • Find Dialog - Convert to Gtkmm
  • Messages Dialog - Convert to Gtkmm
  • XML Editor - Convert to Gtkmm

Layer Enhancements

  • (DONE, for .44) Implement a layer management dialog [mental]
  • (DONE) search checks inkscape:label, and ignores layers [bb]
  • (DONE, for )Layers... // opens the Layers dialog
  • (DONE) Move to Layer Above Shift+PgUp
  • (DONE) Move to Layer Below Shift+PgDn
  • (DONE, for .43) Move to layer above/below
  • Move to Layer... // let me choose layer name to move selection to
  • Unlock All Layers // unlock all layers in the document
    • (or all siblings of the current layer?)
  • Unhide All Layers
  • Unlock All in Layer // unlock all children of the current layer
  • Unhide All in Layer
  • Group to Layer // convert group to layer
  • Layer to Group
  • (DONE) Clean up tool ("event context") code

Extension Infrastructure

  • Sketch out a first cut at an extension manager dialog
  • Decide on an API for extensions to interact with the XML tree / DOM (see DOM 3 spec)
  • Add DOM/XPath support [ishmal]

Milestone 9 - Design Extension Architecture - Inkscape 0.43

  • This architectural change will establish a new mechanism for how features are added and maintained in the codebase. see also: ExtensionArchitectureProposals


  • Thoroughly document SPRepr
  • Hook up the DOM stuff to Swig to enable scripting languages access to internals
    • foreach section of code to script, subclass NodeImpl and add fields and methods
  • Redo the internal clipboard to use an SPDocument/SPObjects rather than being simply literal copying at the SPRepr level [mental]
  • Specification Document for extension system including API
  • Hook up system clipboard (via gtkmm). Ensure when copying, that 'image/png' and/or 'image/svg' get on the system clipboard
  • Solidify the underlying Extensions infrastructure
    • Convert Extensions to OO
    • Rename extensions to be consistent with new naming scheme
  • (DONE) Example extension package
  • (DONE, for .44?) Implement support for SVG's "switch" element (SPItemGroup subclass, I think..), and the associated requiredFeatures, requiredExtensions and systemLanguage attributes (on SPItems in general)
  • Look into implementing SVG filters via extensions
  • Implement added Desktop file entries for GNOME 2.8 http://www.gnomedesktop.org/article.php?sid=1885&mode=thread&order=0&thold=0


  • Fix inverted coordinate system [mental]
  • Make clones respond sensibly to original duplication [bb]
  • Review & plan out replacement of sp-file.*
    • Implement backup functionality for documents and preferences.xml, ideally with versioning like in Emacs
  • Implement Rounding for arbitrary paths


  • (DONE, for .44) Redevelop About screen
    • (DONE, for .44) break out the credited authors //+ Translators + License
    • possibly add tab or section to this with known issues/bugs
    • same for release notes
    • investigate use of GtkAbout

Milestone 10 - RFE's & Extensions Implementation - Inkscape 0.44

New/Changed Dependencies

  • (DONE) Add libcroco


  • masks/clippaths
    • (DONE) Implement creation
  • (DONE) Load-from-URL


  • (DONE) tools: add/remove points on path, bezier drag


  • (DONE) When run without installing, make it look for icon image file(s) locally so we don't get garbage icons


  • (DONE) Implement tests of Inkscape against the W3C test suite [rick beton, bryce]


  • (DONE) Reduce open/total RFE ratio to 55%

Milestone 11 - Import/Export Feature Enhancements - Inkscape 0.45

New/Changed Dependencies

  • (DONE) Change to Gtk 2.8
  • (DONE) Drop libloudmouth
  • (DONE) Integrate use of libcroco for handling Cascading Style Sheets.
  • (DONE) Create a swatches dialog

SVG Compliance

    • (BASICALLY DONE) layers
    • (DONE) color palette
    • (DONE) gradient tool
    • (DONE) patterns
    • (DONE) text on path and in shape
    • (DONE) text selection
    • (DONE) SVG filters
  • (DONE) Investigate SVG docs where SVG is not the default namespace used at the root -- e.g. <svg:svg xmlns:svg="http://...etc"><svg:rect.../><blah></svg:svg> -- <blah> would end up getting shoehorned into the svg namespace

Milestone 12 - Inkscape 0.46

New/Changed Dependencies:

  • (DONE) Gtk 2.8 (required)
  • (DONE) 2geom (optional)
    • 2geom is a hard dependency now due to LPE. 2geom source has been copied to the inkscape tree, so that inkscape can make full profit from the latest and greatest 2geom (instead of depending on an earlier official 2geom release) [johan])


  • (DONE) Convert use of gboolean to bool where feasible
    • (Bulia: "This was attempted and (partially?) rolled back, because it broke GTK calls which require gbooleans.")

File Format Support Effort:

  • (DONE) PDF Import/Export
    • (HELP NEEDED) Identify remaining problems with the cairo-based PDF tool check FileTypes
    • Ensure clippaths, transparency, bitmaps, etc. all work
  • (DONE) Replace existing printer dialog with one from gtk 2.10
  • (DONE) Object-to-object snapping
  • (DONE) Implement LittleCMS as color management system

Milestone 13 - Inkscape 0.47 - Refactoring / Cleanup

New/Changed Dependencies

  • GTK 2.12 (required)

Architectural Refactoring Effort

  • Lib2geom Integration
    • Eliminate code in favor of 2geom where feasible
  • Convert remaining GTK dialog code to GTKmm
  • Eliminate all use of sp_repr_new in favor of XML::Document::* classes (see [1])
  • Subsystem Rearchitecture
    • Migrate SPObject to native C++ classes
    • Rename all 'SPFooBar' routines to 'FooBar' and put into namespaces
  • Implement gradient UI “release” handler to deal with gradient garbage collection (see bug 984854)
    • Note: I can't find this bug on Inkscape. Could someone locate and link it?
      --Zearin 18:48, 5 November 2009 (UTC)
  • Create an API for tracking references and avoiding id clashes on import and interdocument copy/paste. The optimal place to put it would probably be somewhere at the XML level
  • Streamline style
    • Eliminate use of the style.h types in as much of codebase as possible, particularly display
    • Externally, it should present a simple set of accessor methods for getting/setting properties by name, and propagating to/from repr
    • Inside, it should have:
      • a concise list of property names with the expected domain of values in CSS and the associated Inkscape data type
      • a concise list of property aliases which represent one or more properties combined, each with the rule used to combine
      • definitions of the aforementioned rules and value domains
      • some generic code (not tied to any one property) implementing the needed behavior

Codebase Cleanup Effort

User Documentation Effort

  • Rearrange tutorials into sub-categories
  • (PARTIALLY DONE) Switch to use of xml2po for tutorial files (Colin Marquardt)
  • Document filters

Inkscape SVG Effort

  • Revisit coordination system (move away from Cartesian)

User Interface Effort

  • Improvement of SVG patterns UI—make it similar to gradient-drag, instead of piggybacking knotholder
  • Palettes
    • Custom palettes like from Gnome
    • Ability to load 3rd-party palettes (e.g. Pantone, Trumatch, Focoltone, Toyo, etc.)
  • Reenable fuzzy font matching [bulia]
  • Improve freehand curve smoothness [pjrm, paraprax]

Testing Effort

  • Include some rendering tests in `make check'.
  • Get `make check' to pass on Win32 and OSX (with the current btool, does this mean a `btool check' should pass?)
  • Investigate performance measurement testing for Inkscape

Animation Effort

  • Create a written conceptualization of how it should work
    • Currently, part of the concept discussion is at here

User Documentation Effort

  • More tutorials
    • Node editing
    • Advanced text effects
    • Grid snapping
    • Connectors
    • Creating photo-realistic art

Performance effort

  • Support Hardware acceleration
    • Take advantage of OpenGL 2.1 or dx9 to enhance editing and display performance.
      • (Note: OpenVG would be better suited for Inkscape's needs but I'm not sure about its status. --Tweenk 00:53, 26 July 2009 (UTC))
  • Multi-Processor
    • Boost performance on multi-core processor.

GUI effort

  • Layer panel
    • Add object selection in layer (similar to Adobe Illustrator).
  • Tab document
    • Open and create new document(s) in the same window.
  • Menu icons
    • Compact icons
    • Grayed icons
      • Tool icons turn into color when hovering or selected (similar to Adobe Illustrator).
  • Multi-page
    • Multi-page tool (similar to Artboard tool on Adobe Illustrator CS4).