Difference between revisions of "Roadmap"

From Inkscape Wiki
Jump to navigation Jump to search
 
Line 13: Line 13:


Internal
Internal
* (DONE) Create new gtkmm classes Inkscape::Dialog, Inkscape::Application, and some widgets [bryce]
* (DONE) Auto-include AUTHORS list into manpage on build [pjrm]
* (DONE) Auto-include AUTHORS list into manpage on build [pjrm]
* (DONE) Set up automatic insertion of current application version into Inkscape man page [pjrm]
* (DONE) Set up automatic insertion of current application version into Inkscape man page [pjrm]
Line 27: Line 28:
* (DONE) Implement "Select Under" [bb]
* (DONE) Implement "Select Under" [bb]
* (DONE) Add shortcuts to button tooltips (at least for verbs)
* (DONE) Add shortcuts to button tooltips (at least for verbs)
* (DONE) Basic metadata/RDF support for clipart, etc.
Documentation & Packaging
* (DONE) Split tutorials into even smaller pieces, document new stuff since 0.38
** (DONE) shrink and subdivide Elements and Principles of Design (made smaller) [rejon]
** (DONE) Create a new tutorial (Shapes) [bulia]
* (DONE) Push for new dependencies to be updated upstream [all]


=== Milestone 7 - GtkMM Architectural Change - Inkscape 0.41 ===
=== Milestone 7 - GtkMM Architectural Change - Inkscape 0.41 ===
New/Changed Dependencies
* Add a dependency on libcroco (which will be needed for the CSS portion of AST) [mental]


Internal
Internal
* Replace C boilerplate Gtk with the corresponding Gtkmm objects. This architectural change will reduce the codesize and make reading easier. [bryce+others]
* Merge the inkscape_gtkmm codebase into mainline with cmdline option to activate it [bryce]
* Complete gtkmm conversion of at least 80% of dialogs
* Decide on an API for extensions to interact with the XML tree
* Decide on an API for extensions to interact with the XML tree
* Redo the internal clipboard to use an SPDocument/SPObjects rather than being simply literal copying at the SPRepr level [mental]
Drawing
* Fix inverted coordinate system [mental]
* Make clones respond sensibly to original duplication [bb]
* Reenable fuzzy font matching [bb]
* Review & plan out replacement of sp-file.*
** Implement backup functionalty for documents and preferences.xml, ideally with versioning like in Emacs
* Implement Rounding for arbitrary paths


Interface & Usability
Interface & Usability
* Overhaul Gradient UI in fill/stroke - improve management and creation.
* Rework Object Properties dialog
* Rework Object Properties dialog
* Implement a layer management dialog [mental]
* Implement a layer management dialog [mental]
Line 62: Line 60:
* Redraw old icons to look decent [bb]
* Redraw old icons to look decent [bb]


Testing
=== Milestone 8 - Design Extension Architecture - Inkscape 0.42 ===
* Implement tests of Inkscape against the W3C test suite (0.37 loads 95% correctly without animations) [bryce]
* Implement basic 'make test' regression test support w/ at least one unit test


Documentation & Packaging
* This architectural change will establish a new mechanism for how features are added and maintained in the codebase. ''see also: ExtensionArchitectureProposals''
* Split tutorials into even smaller pieces, document new stuff since 0.38
** (DONE) shrink and subdivide Elements and Principles of Design (made smaller) [rejon]
* Push for new dependencies to be updated upstream [all]
* Implement added Desktop file entries for GNOME 2.8 http://www.gnomedesktop.org/article.php?sid=1885&mode=thread&order=0&thold=0


 
Internal
=== Milestone 8 - Design Extension Architecture - Inkscape 0.42 ===
* Redo the internal clipboard to use an SPDocument/SPObjects rather than being simply literal copying at the SPRepr level [mental]
 
* This architectural change will establish a new mechanism for how features are added and maintained in the codebase.
* Specification Document for extension system including API
* 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
* Hook up system clipboard (via gtkmm). Ensure when copying, that 'image/png' and/or 'image/svg' get on the system clipboard
Line 83: Line 73:
* Example extension package
* 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)
* Implement support for SVG's "switch" element (SPItemGroup subclass, I think..), and the associated requiredFeatures, requiredExtensions and systemLanguage attributes (on SPItems in general)
* Metadata/RDF support for clipart, etc.
* Look into implementing SVG filters via extensions
* 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


''see also: ExtensionArchitectureProposals''
Drawing
* Fix inverted coordinate system [mental]
* Make clones respond sensibly to original duplication [bb]
* Reenable fuzzy font matching [bb]
* Review & plan out replacement of sp-file.*
** Implement backup functionalty for documents and preferences.xml, ideally with versioning like in Emacs
* Implement Rounding for arbitrary paths


* Implement on-canvas editing of gradients, patterns, and masks
=== Milestone 9 - RFE's & Extensions Implementation - Inkscape 0.43 ===
* Overhaul Gradient UI in fill/stroke - improve management and creation.
* 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.


=== Milestone 9 - RFE's & Extensions Implementation - Inkscape 0.43 ===
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 API
* Implement extension registry
* Implement extension registry
Line 99: Line 95:
* Website tool for contributing new extensions
* Website tool for contributing new extensions
* Reduce open/total RFE ratio from 82% to 65%
* Reduce open/total RFE ratio from 82% to 65%
* Implement on-canvas editing of gradients, patterns, and masks
* 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.


RFE's
RFE's
Line 112: Line 110:
** Add doc/ to share/
** Add doc/ to share/
* When run without installing, make it look for icon image file(s) locally so we don't get garbage icons
* When run without installing, make it look for icon image file(s) locally so we don't get garbage icons
* Add more commandline options


Testing
* Implement tests of Inkscape against the W3C test suite (0.37 loads 95% correctly without animations) [bryce]
* Implement basic 'make test' regression test support w/ at least one unit test


=== Milestone 10 - Import/Export Feature Enhancements - Inkscape 0.44 ===
=== Milestone 10 - Import/Export Feature Enhancements - Inkscape 0.44 ===
Line 174: Line 174:
* Investigate performance measurement testing for Inkscape
* Investigate performance measurement testing for Inkscape
* Convert all tabs into spaces (convert tabs to 4 spaces)
* Convert all tabs into spaces (convert tabs to 4 spaces)
* Rename all 'SPFooBar' routines to 'FooBar' and put into namespaces [mental]
* Rename all 'SPFooBar' routines to 'FooBar' and put into namespaces
** (DONE) dialogs folder
** (DONE) dialogs folder
* Investigate resurrecting Bonobo component
* Investigate resurrecting Bonobo component
* Rework text layout code to use PangoLayout
* Rework text layout code to use PangoLayout
* Appease jimmac by adding a path tool so that maybe he will stop using Illustrator to create GNOME SVG Artwork - see [http://jimmac.musichall.cz/ikony.php3] right side of page.
* Implement LittleCMS as color management system
* Implement LittleCMS as color management system
* WebDAV/FTP support via GNOME-VFS, Neon, or the like
* WebDAV/FTP support via GNOME-VFS, Neon, or the like
Line 194: Line 193:
* Implement perspective transformations via PerspectiveObject
* Implement perspective transformations via PerspectiveObject
* Improve freehand curve smoothness [pjrm, paraprax]
* Improve freehand curve smoothness [pjrm, paraprax]


== PastMilestones ==
== PastMilestones ==

Revision as of 20:40, 25 October 2004

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-5 have been completed since the start of the Inkscape Project.

Milestone 6 - Features and Fixes - Inkscape 0.40

New/Changed Dependencies

  • (DONE) Add a dependency on libgc (the Boehm conservative collector), which will be required for the AST code [mental]
  • (DONE) Switch to sigc++ 2 + gtkmm 2 early in 0.40, before we start doing gtkmm-intensive stuff like the layers dialog etc. [mental]
  • (DONE) Add Gtk-Wimp (for windows theming)
  • (DONE) Use new file dialog when GTK 2.4 is released (but need to smooth out)

Internal

  • (DONE) Create new gtkmm classes Inkscape::Dialog, Inkscape::Application, and some widgets [bryce]
  • (DONE) Auto-include AUTHORS list into manpage on build [pjrm]
  • (DONE) Set up automatic insertion of current application version into Inkscape man page [pjrm]

Drawing

  • (DONE) Implement Text on Path
  • (DONE) Change the SEGV and SIGABRT handlers to reliably autosave and put up a crash dialog
  • (DONE) Smoother freehand pencil tool [pjrm]
  • (DONE) Make gradient management & chaining work similar to patterns [bb]
    • (DONE) Fix fill-opacity ignored with gradients [bb]

Interface & Usability

  • (DONE) Make all knots display explanations in statusbar on mouseover
  • (DONE) Implement "Select Under" [bb]
  • (DONE) Add shortcuts to button tooltips (at least for verbs)
  • (DONE) Basic metadata/RDF support for clipart, etc.

Documentation & Packaging

  • (DONE) Split tutorials into even smaller pieces, document new stuff since 0.38
    • (DONE) shrink and subdivide Elements and Principles of Design (made smaller) [rejon]
    • (DONE) Create a new tutorial (Shapes) [bulia]
  • (DONE) Push for new dependencies to be updated upstream [all]

Milestone 7 - GtkMM Architectural Change - Inkscape 0.41

Internal

  • Merge the inkscape_gtkmm codebase into mainline with cmdline option to activate it [bryce]
  • Complete gtkmm conversion of at least 80% of dialogs
  • Decide on an API for extensions to interact with the XML tree

Interface & Usability

  • Overhaul Gradient UI in fill/stroke - improve management and creation.
  • Rework Object Properties dialog
  • Implement a layer management dialog [mental]
  • Make all dialogs remember on/off status across sessions [bb]
  • Make dialogs more Gnome HIG compliant (increase spacing where feasible, what else?).
  • 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
  • Create a CurrentColorWidget
  • Steal a palette widget (from Gimp?)
  • Add Gnome HIG-compliant ICON (Normal logo with NIB in it) [mental]
  • Complete the cursor icons set [bb]
  • Redraw old icons to look decent [bb]

Milestone 8 - Design Extension Architecture - Inkscape 0.42

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

Internal

  • 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]
  • Reenable fuzzy font matching [bb]
  • Review & plan out replacement of sp-file.*
    • Implement backup functionalty for documents and preferences.xml, ideally with versioning like in Emacs
  • Implement Rounding for arbitrary paths

Milestone 9 - RFE's & Extensions Implementation - Inkscape 0.43

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
  • Create Extension preferences dialog
  • Website tool for contributing new extensions
  • Reduce open/total RFE ratio from 82% to 65%
  • Implement on-canvas editing of gradients, patterns, and masks
  • 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.

RFE's

  • hyperlinking
  • implementation of svg patterns
  • implementation of clipping paths/masking
  • tools: add/remove points on path, bezier drag

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)
    • Add doc/ to share/
  • 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]
  • Implement basic 'make test' regression test support w/ at least one unit test

Milestone 10 - Import/Export Feature Enhancements - Inkscape 0.44

  • Make printing work extremely reliably
  • Enhance file manager
  • EPS/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

Milestone 11 - Style Refactoring - Inkscape 0.45

  • 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

Milestone 12 - Bug Hunt & RFE's - Inkscape 0.46

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

Milestone 13 - Drawing Feature Enhancements - Inkscape 0.47

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

Milestone 14 - Style Rewrite & libcroco - Inkscape 0.48

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

Milestone 15 - Cairoification - Inkscape 0.49

  • Prereq: Is renderer immune to the same kinds of numerical problems we see with our new renderer, libnr, or libart?
  • Masking

Milestone 16 - Animation - Inkscape 0.50

  • Prereq: We need a conceptualization of how it should work
  • Implement full animation support

Milestone 17 - Extract SVG Canvas into a library - Inkscape 0.51

  • Prereq: We need an API proposed for it

Milestone 18 - RFE's - Inkscape 0.52

  • Reduce open/total RFE ratio to 40%
  • (MAYBE) start thinking about 1.0...


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 resurrecting Bonobo component
  • Rework text layout code to use PangoLayout
  • Implement LittleCMS as color management system
  • WebDAV/FTP support via GNOME-VFS, Neon, or the like
  • Redesign the text creation/editing/handling subsystem - what would a "dream" text system be?
  • 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]
  • Set up backup systems http://sourceforge.net/project/admin/backup.php?group_id=93438 [bryce]
  • Editable toolbars (libegg)
  • Thoroughly document SPRepr
  • Bidirectional text in Pango needs attention
  • MakeVertical in Pango needs attention
  • Implement perspective transformations via PerspectiveObject
  • Improve freehand curve smoothness [pjrm, paraprax]


PastMilestones