Difference between revisions of "Roadmap"

From Inkscape Wiki
Jump to navigation Jump to search
(2 intermediate revisions by the same user not shown)
Line 9: Line 9:
 
General Gtkmm Interface
 
General Gtkmm Interface
 
* (DONE) Merge the inkscape_gtkmm codebase into mainline with cmdline option to activate it [bryce]
 
* (DONE) Merge the inkscape_gtkmm codebase into mainline with cmdline option to activate it [bryce]
* Make all dialogs remember on/off status across sessions
 
 
* Create a TreeEditor dialog for use by the XML editor, Extensions, Layers, etc.
 
* Create a TreeEditor dialog for use by the XML editor, Extensions, Layers, etc.
 
* Develop a loadable keyboard accelerator "theme" system
 
* Develop a loadable keyboard accelerator "theme" system
 
* Implement text in shape UI
 
* Implement text in shape UI
 
* Create a CurrentColorWidget
 
* Create a CurrentColorWidget
* Selection and node tools: require double-click to select objects which aren't descendants of the current layer or its siblings [bb]
 
 
* Selection and node tools: double-click on group sets group as current layer (without altering inkscape:groupmode) [bb]
 
* Selection and node tools: double-click on group sets group as current layer (without altering inkscape:groupmode) [bb]
  
Line 28: Line 26:
  
 
Icons and Cursors
 
Icons and Cursors
* Implement basic icon theming capability
+
* (DONE) Implement basic icon theming capability  
 
* Add Gnome HIG-compliant ICON (Normal logo with NIB in it) [mental]
 
* Add Gnome HIG-compliant ICON (Normal logo with NIB in it) [mental]
* Convert all xmp icons to svg's
+
* (DONE) Convert all xmp icons to svg's  
 
* Create a complete default icon/cursor set [bb]
 
* Create a complete default icon/cursor set [bb]
* Create one alternate icon/cursor set
+
* (DONE) Create one alternate icon/cursor set  
  
 
Dialogs Redevelopment and HIG-Compliance
 
Dialogs Redevelopment and HIG-Compliance
Line 40: Line 38:
 
* Fill/Stroke dialog
 
* Fill/Stroke dialog
 
** Convert to Gtkmm
 
** Convert to Gtkmm
** Overhaul Gradient UI to improve management and creation
+
** (DONE) Overhaul Gradient UI to improve management and creation
 
* Object Properties dialog
 
* Object Properties dialog
 
** Redesign Object Properties dialog
 
** Redesign Object Properties dialog
 
* Text Properties dialog - Convert to Gtkmm
 
* Text Properties dialog - Convert to Gtkmm
 
* Layers Dialog (Also see Layers section below)
 
* Layers Dialog (Also see Layers section below)
* Export Dialog - Convert to Gtkmm and Redesign for Usability
+
* (DONE) Export Dialog - Convert to Gtkmm  
* Align and Distribute Dialog - Convert to Gtkmm
+
* (DONE) Align and Distribute Dialog - Convert to Gtkmm
 
* Document Preferences Dialog - Convert to Gtkmm
 
* Document Preferences Dialog - Convert to Gtkmm
* Document Properties Dialog - Convert to Gtkmm
 
 
* Find Dialog - Convert to Gtkmm
 
* Find Dialog - Convert to Gtkmm
 
* Messages Dialog - Convert to Gtkmm
 
* Messages Dialog - Convert to Gtkmm
* Trace Dialog - Convert to Gtkmm
+
* (DONE) Trace Dialog - Convert to Gtkmm
 
* Transformation Dialog - Convert to Gtkmm [bryce]
 
* Transformation Dialog - Convert to Gtkmm [bryce]
 
* XML Editor - Convert to Gtkmm
 
* XML Editor - Convert to Gtkmm
Line 57: Line 54:
 
Layer Enhancements
 
Layer Enhancements
 
* Implement a layer management dialog [mental]
 
* Implement a layer management dialog [mental]
* search checks inkscape:label, and ignores layers [bb]
+
* (DONE) search checks inkscape:label, and ignores layers [bb]
 
* Layers...      // opens the Layers dialog
 
* Layers...      // opens the Layers dialog
* Move to Layer Above    Shift+PgUp
+
* (DONE) Move to Layer Above    Shift+PgUp
** moves selected objects to next layer in depth-first traversal of layers
+
* (DONE) Move to Layer Below      Shift+PgDn
* Move to Layer Below      Shift+PgDn
 
** moves selected objects to previous layer in depth-first traversal of layers
 
 
* Move to Layer... // let me choose layer name to move selection to
 
* Move to Layer... // let me choose layer name to move selection to
 
* Unlock All Layers // unlock all layers in the document  
 
* Unlock All Layers // unlock all layers in the document  
Line 72: Line 67:
 
* Layer to Group
 
* Layer to Group
  
What are these?
+
* (DONE) Clean up tool ("event context") code
* Clean up tool ("event context") code
 
  
 
Extension Infrastructure
 
Extension Infrastructure
Line 118: Line 112:
 
* Implement extension registry
 
* Implement extension registry
 
* Complete Extension preferences dialog
 
* Complete Extension preferences dialog
* Reduce open/total RFE ratio to 75%
+
* Reduce open/total RFE ratio to 55%
* Implement on-canvas editing of gradients, patterns, and masks
+
* Implement creation and on-canvas editing of masks/clippaths
 
* Create an SPObject API for tracking references and avoiding id clashes on import and interdocument copy/paste. What we need are a void SPDocument::importCopies([set of SPObjects]), and an [set of SPObjects] SPObject::dependencies() method.
 
* Create an SPObject API for tracking references and avoiding id clashes on import and interdocument copy/paste. What we need are a void SPDocument::importCopies([set of SPObjects]), and an [set of SPObjects] SPObject::dependencies() method.
 
* Implement gradient UI "release" handler to deal with gradient garbage collection (see bug 984854)
 
* Implement gradient UI "release" handler to deal with gradient garbage collection (see bug 984854)
Line 126: Line 120:
 
RFE's
 
RFE's
 
* [http://sourceforge.net/tracker/index.php?func=detail&aid=893812&group_id=93438&atid=604309 hyperlinking]
 
* [http://sourceforge.net/tracker/index.php?func=detail&aid=893812&group_id=93438&atid=604309 hyperlinking]
* implementation of clipping paths/masking
 
 
* tools: add/remove points on path, bezier drag
 
* tools: add/remove points on path, bezier drag
  
Line 143: Line 136:
 
* Make printing work more efficiently and reliably
 
* Make printing work more efficiently and reliably
 
* Enhance file manager
 
* Enhance file manager
* EPS/PDF Export
+
* PDF Export
 
* Investigate ps2ai, pstoedit and ai2svg conversion options (potential EPS support?)
 
* Investigate ps2ai, pstoedit and ai2svg conversion options (potential EPS support?)
 
* Import of native Adobe Illustrator files
 
* Import of native Adobe Illustrator files
Line 159: Line 152:
 
=== Milestone 13 - Bug Hunt & RFE's - Inkscape 0.47 ===
 
=== Milestone 13 - Bug Hunt & RFE's - Inkscape 0.47 ===
  
* Reduce open/total RFE ratio to 50%
+
* Reduce open/total RFE ratio to 40%
 
* Reduce open/total bug ratio to 5%
 
* Reduce open/total bug ratio to 5%
  
 
=== Milestone 14 - Drawing Feature Enhancements - Inkscape 0.48 ===
 
=== Milestone 14 - Drawing Feature Enhancements - Inkscape 0.48 ===
  
* Object-to-object snapping / Snap points
+
* Object-to-object snapping  
 
* (DONE) Markers
 
* (DONE) Markers
 
* Enhanced grid system
 
* Enhanced grid system
Line 177: Line 170:
 
* Replace style.cpp entirely, with a clearer and cleaner version.
 
* Replace style.cpp entirely, with a clearer and cleaner version.
 
* Integrate use of libcroco for handling Cascading Style Sheets.
 
* Integrate use of libcroco for handling Cascading Style Sheets.
 +
 +
 
* Palettes
 
* Palettes
  
Line 182: Line 177:
  
 
* Prereq: Is renderer immune to the same kinds of numerical problems we see with our new renderer, libnr, or libart?
 
* Prereq: Is renderer immune to the same kinds of numerical problems we see with our new renderer, libnr, or libart?
* Masking
 
 
* Create a Cairo-based SVG Canvas library
 
* Create a Cairo-based SVG Canvas library
  
Line 188: Line 182:
  
 
* Prereq: We need a conceptualization of how it should work
 
* Prereq: We need a conceptualization of how it should work
(suggestion: working like CinePaint (compaired with Gimp), with each frame independently from each svg document (working like this or providing this feature) - providing vectorial edition quality we can't get on apps like MacromediaFlash or any other (maybe ToonBoom or Moho) - allowing us to make our work fast publish without further lack of quality )
+
* Currently, part of the concept discussion is at http://www.inkscape.org/cgi-bin/wiki.pl?Animation-(Timeline)
  
  
Line 194: Line 188:
  
 
* Reenable fuzzy font matching [bb]
 
* Reenable fuzzy font matching [bb]
* Bidirectional text in Pango needs attention
+
* (DONE) Bidirectional text in Pango needs attention
* MakeVertical in Pango needs attention
+
* (DONE) MakeVertical in Pango needs attention
* Rework text layout code to use PangoLayout
 
  
 
=== Milestone 19 - Palettes - Inkscape 0.53 ===
 
=== Milestone 19 - Palettes - Inkscape 0.53 ===
Line 207: Line 200:
 
=== Milestone 21 - RFE's - Inkscape 0.55 ===
 
=== Milestone 21 - RFE's - Inkscape 0.55 ===
  
* Reduce open/total RFE ratio to 40%
+
* Reduce open/total RFE ratio to 30%
  
  

Revision as of 05:19, 2 April 2005

Inkscape Development Roadmap

NOTE: This is a working document showing specific near-term tasks needed for achieving milestones. The following is available in formal form at: http://www.inkscape.org/roadmap.php and the number in front of the version is in reference to the milestone.

Milestones 0-7 have been completed since the start of the Inkscape Project.

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]
  • Create a TreeEditor dialog for use by the XML editor, Extensions, Layers, etc.
  • Develop a loadable keyboard accelerator "theme" system
  • Implement text in shape UI
  • Create a CurrentColorWidget
  • Selection and node tools: double-click on group sets group as current layer (without altering inkscape:groupmode) [bb]

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
  • Add Gnome HIG-compliant ICON (Normal logo with NIB in it) [mental]
  • (DONE) Convert all xmp icons to svg's
  • Create a complete default icon/cursor set [bb]
  • (DONE) Create one alternate icon/cursor set

Dialogs Redevelopment and HIG-Compliance

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

Layer Enhancements

  • Implement a layer management dialog [mental]
  • (DONE) search checks inkscape:label, and ignores layers [bb]
  • Layers... // opens the Layers dialog
  • (DONE) Move to Layer Above Shift+PgUp
  • (DONE) Move to Layer Below Shift+PgDn
  • 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

Internal

  • 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
  • Example extension package
  • 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

Drawing

  • 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


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

New/Changed Dependencies

  • Add a dependency on libcroco (which will be needed for the CSS portion of AST) [mental]


Internals

  • Implement extension API
  • Implement extension registry
  • Complete Extension preferences dialog
  • Reduce open/total RFE ratio to 55%
  • Implement creation and on-canvas editing of masks/clippaths
  • Create an SPObject API for tracking references and avoiding id clashes on import and interdocument copy/paste. What we need are a void SPDocument::importCopies([set of SPObjects]), and an [set of SPObjects] SPObject::dependencies() method.
  • Implement gradient UI "release" handler to deal with gradient garbage collection (see bug 984854)
  • improvement of svg patterns UI

RFE's

Maintenance

  • Learn and use autoscan and autoreconf to find out which configure tests are still needed.
  • Clean up configure.in
  • (PARTIALLY DONE) Directory Reorganization (rejon)
  • When run without installing, make it look for icon image file(s) locally so we don't get garbage icons

Testing

  • Implement tests of Inkscape against the W3C test suite (0.37 loads 95% correctly without animations) [bryce]
  • Include some rendering tests in `make check'.

Milestone 11 - Import/Export Feature Enhancements - Inkscape 0.45

  • Make printing work more efficiently and reliably
  • Enhance file manager
  • PDF Export
  • Investigate ps2ai, pstoedit and ai2svg conversion options (potential EPS support?)
  • Import of native Adobe Illustrator files
  • Other RFE's related to Import/Export
  • Add extension for use of VDX2SVG (http://vdxtosvg.sourceforge.net/)
  • Add extension for use of PDF2SVG (http://www.solidcode.net/pdf2svg/)
  • WebDAV/FTP support via GNOME-VFS, Neon, or the like

Milestone 12 - Style Refactoring - Inkscape 0.46

  • Eliminate use of the style.h types in as much of codebase as possible, particularly display/*.
  • Change to use of GQuarks instead of #defines where feasible
  • Editable toolbars (libegg)

Milestone 13 - Bug Hunt & RFE's - Inkscape 0.47

  • Reduce open/total RFE ratio to 40%
  • Reduce open/total bug ratio to 5%

Milestone 14 - Drawing Feature Enhancements - Inkscape 0.48

  • Object-to-object snapping
  • (DONE) Markers
  • Enhanced grid system
  • Inter-application cut-and-paste
  • Inter-application drag-and-drop
  • Clipart manager GUI
  • Hyperlinking
  • Load-from-URL

Milestone 15 - Style Rewrite & libcroco - Inkscape 0.49

  • Replace style.cpp entirely, with a clearer and cleaner version.
  • Integrate use of libcroco for handling Cascading Style Sheets.


  • Palettes

Milestone 16 - Cairoification - Inkscape 0.50

  • Prereq: Is renderer immune to the same kinds of numerical problems we see with our new renderer, libnr, or libart?
  • Create a Cairo-based SVG Canvas library

Milestone 17 - Animation Conceptualization - Inkscape 0.51


Milestone 18 - Fonts Revisited - Inkscape 0.52

  • Reenable fuzzy font matching [bb]
  • (DONE) Bidirectional text in Pango needs attention
  • (DONE) MakeVertical in Pango needs attention

Milestone 19 - Palettes - Inkscape 0.53

  • Implement LittleCMS as color management system
  • Create a palette widget (steal from Gimp?)

Milestone 20 - Full Animation Support - Inkscape 0.54

Milestone 21 - RFE's - Inkscape 0.55

  • Reduce open/total RFE ratio to 30%


Milestone [Future]

  • Investigate performance measurement testing for Inkscape
  • Convert all tabs into spaces (convert tabs to 4 spaces)
  • Rename all 'SPFooBar' routines to 'FooBar' and put into namespaces
    • (DONE) dialogs folder
  • 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
  • Write an Internal DTD subset describing the custom Inkscape XML elements, for validation against SVG DTD
  • Ensure Inkscape does not throw away the internal DTD subsets of documents it reads
  • Start thinking about 1.0 when major functionality gaps are closed (layers, color palette, gradient and mask tools, patterns, text on path and in shape, text selection, perspective transforms, SVG filters, scripting, path editing, shaped strokes)
  • Implement preliminary support for iso & hex grid [njh]
  • Implement perspective transformations via PerspectiveObject
  • Improve freehand curve smoothness [pjrm, paraprax]
  • Review X1-1GUITest on SF

PastMilestones