Difference between revisions of "Roadmap"

From Inkscape Wiki
Jump to: navigation, search
(Inkscape 1.0alpha ~ Maintenance and Optimization Focus: note re old widgets)
 
(281 intermediate revisions by 73 users not shown)
Line 1: Line 1:
== Inkscape Development Roadmap ==
+
This is a working document showing specific near-term tasks needed for achieving the numbered milestones. It is '''not a wishlist''' of features to be included in future releases. Because people often work on whatever they feel like, only the current and current+1 releases should be taken seriously.  Beyond that is mainly conjectural.
  
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.
+
''See [[OldRoadmap]] for milestones that have already been achieved.''
  
''Milestones 0-5 have been completed since the start of the Inkscape Project.''
+
=== Inkscape 0.92 ~ Infrastructure Focus ===
 +
* (DONE) <s>Set up autogeneration of Inkscape source code documentation ([http://wiki.inkscape.org/wiki/index.php/Doxygen_documentation Doxygen not available online according to old wiki page] but [http://fossies.org/dox/inkscape-0.91pre2/ available here (fossies.org)])</s> (http://jenkins.inkscape.org/job/Inkscape_trunk_doxygen/doxygen/)
 +
** (DONE) <s>Put it publicly somewhere on the inkscape domain for "official" access.</s> (http://jenkins.inkscape.org/job/Inkscape_trunk_doxygen/doxygen/)
 +
* (DONE) <s>Build system: migrate away from Autotools (See [[Build system improvements]])</s>
 +
** (DONE) <s>Decide between CMake and Waf</s>
 +
*** (DONE) <s>Alex will be doing a "neutral party" review of the two</s>  Decision to go with cmake for now.
 +
** (DONE) <s>Get decided system working</s>
 +
*** See [[CMake_Tasks]]
 +
** (DONE) <s>Switch release tools to use new build system</s>  Documented for now; will wait on mechanizing it until after switch to git.
 +
** (DONE) <s>Switch packaging tools to use new build system</s>
 +
** (DONE) <s>Retain Autotools support one final release (legacy support)</s>, then drop next release.
 +
* (DONE) <s>Make the Windows uninstaller work (reevaluate this, we now have msi installer for win32 and Win64)</s>
  
=== Milestone 6 - Features and Fixes - Inkscape 0.40 ===
+
=== 2Geom 1.0 ===
New/Changed Dependencies
+
* 2geom maintenance
* (DONE) Add a dependency on libgc (the Boehm conservative collector), which will be required for the AST code [mental]
+
** Stop embedding 2Geom in Inkscape's codebase; handle it as a regular dependency
* (DONE) Switch to sigc++ 2 + gtkmm 2 early in 0.40, before we start doing gtkmm-intensive stuff like the layers dialog etc. [mental]
+
** Move project to gitlab, from https://launchpad.net/lib2geom, http://lib2geom.sourceforge.net/, and https://github.com/inkscape/lib2geom [kk]
* (DONE) Add Gtk-Wimp (for windows theming)
+
** Possibly start doing lib2geom releases in conjunction with Inkscape's releases? [bryce]
* (DONE) Use new file dialog when GTK 2.4 is released (but need to smooth out)
+
** Add to PPAs and other CI / autobuilds we already use for Inkscape [alex + bryce]
  
Internal
+
=== Inkscape 1.0alpha ~ Maintenance and Optimization Focus ===
* (DONE) Create new gtkmm classes Inkscape::Dialog, Inkscape::Application, and some widgets [bryce]
+
* (DONE) <s>Migration to Git</s>
* (DONE) Auto-include AUTHORS list into manpage on build [pjrm]
+
* (DONE) <s>Migration to GitLab</s>
* (DONE) Set up automatic insertion of current application version into Inkscape man page [pjrm]
+
* (DONE) <s>Decide which Unit testing framework to use ([http://inkscape.13.x6.nabble.com/Unit-testing-td4967386.html Discussion July 2013 didn't get much traction])</s>
* (DONE) Change the SEGV and SIGABRT handlers to reliably autosave and put up a crash dialog
+
** Hackfest consensus is Google test.
* (DONE) add support for inkscape:label attribute for author-readable object names [mental]
+
* (DONE) <s>Set up continuous builds (e.g. Travis CI / Appveyor or gitlab)</s>
** (DONE) add SPObject::defaultLabel() to return a default label string if inkscape:label is unset [bryce]
+
* (DONE) <s>Make C++11 compiler a hard requirement</s>
* (DONE) Implement SPItem::{locked,setLocked,visible,setVisible} [bryce]
+
* (DONE) <s>Drop Autotools support (See [[Build system improvements]])</s>
* (DONE) Implement SPDesktop::itemIsHidden(SPItem *) for getting per-desktop visibility [mental]
+
* (DONE) <s>Migrate potrace to be an external dependency</s> Done for 0.92
 +
* (DONE) <s>Gtk3/UI revamp</s> Down to bug fixing and follow-on work
  
Drawing
+
* Split out less well maintained extensions to an 'extras' package
* (DONE) Implement Text on Path
+
** Add a test suite that runs each extension against a collection of test documents
* (DONE) Smoother freehand pencil tool [pjrm]
+
** Possibly start doing inkscape-extras releases in conjunction with Inkscape's releases?
* (DONE) Make gradient management & chaining work similar to patterns [bb]
+
** If we don't achieve this by this release, push it to 1.1 or later
** (DONE) Fix fill-opacity ignored with gradients [bb]
+
* Split tutorials and other content from the main executable, to enable them to be updated independently of our main release process
* (DONE) add support for visibility CSS property [mental]
+
** Need to investigate where we stand with this, and re-evaluate more precisely what we want to do this release
 +
* Prepatory work for expanded testing
 +
** Document how to do the tests
 +
** Create or identify a good model test case
 +
** Implement example unit tests for:  SP objects, verbs, cmdline options, live effects, UI dialogs, UI widgets/tools, UI view, etc.
 +
** Start collecting regression svg files in a testing repository somewhere
 +
* Thorough testing of document recovery after crash.  Make this more robust.
 +
** Need to better define what we want to test
 +
** How should the crash be triggered?
 +
** What should the document be?
 +
** Need to be careful about what cases we actually want to consider
 +
* Improved performance
 +
** with an empty start
 +
** when starting up with an existing file
 +
** peppering printfs in the startup logic shows that some routines that should get called one time only, actually get called multiple times
 +
** need to investigate if there is existing instrumentation tools that could be used to identify recursion or other causes of slowness during startup
 +
* Improved mailing list archive
 +
** Move existing archive to inkscape.org or add an archive mirror at inkscape.org ("official" inkscape information is spread out wide between different domains), this would be an improvement.
 +
** Consider also bringing lib2geom mailing lists?
 +
** inkscape: We need postmaster@inkscape.org and abuse@inkscape.org set up.  Maybe as part of a mailing list refresh?
 +
* Set up effort to package selected branches and organize community testing around them
 +
** Use this initially for changes planned for landing in 1.0
 +
** Once we're feature-frozen for 1.0, use this mechanism for wider testing of new feature work
 +
* Gtk+ 3 migration: Goal is a clean, deprecation-free build
 +
** Stop using GtkActions.  Migrate toolbars to use plain widgets, and GAction
 +
** Turn Inkscape into a proper Gtk::Application.  Stop using Gtk::Main
 +
** GtkMM/C++ify and clean up toolbar code
 +
** Remove unused GtkAction-based widgets
  
Interface & Usability
+
=== Inkscape 1.0beta ~ Test Case and Documentation Writing Focus ===
* (DONE) Make all knots display explanations in statusbar on mouseover
+
* Write unit test cases
* (DONE) Implement "Select Under" [bb]
+
** Core functions
* (DONE) Add shortcuts to button tooltips (at least for verbs)
+
* Better translations - keep track of % translations for all languages.  Drive to 95% on all major languages.
* (DONE) Basic metadata/RDF support for clipart, etc.
+
* Cleanup website and wiki
* Rudimentary layers UI
+
** Move pages of value to users from wiki to the main website
** Finish new gtkmm layer selector [mental]
+
** Trim down amount of legacy material presented in the wiki
*** (DONE) Update list upon addition/removal/reordering of layers [mental]
+
* Coder stories
*** Finish show/hide lock/unlock buttons [mental]
+
** different stories about how to do common development tasks, like hooking in a new widget or adding support of a new SVG tag
*** Add UI for setting inkscape:label attribute [mental]
+
** have people sketch in what they know, then pass around for critique to optimize the description
*** (DONE) Fix funky widget resizing [bryce]
+
** where to store the documentation?  Where would someone look?
*** (DONE) unselect objects when manually switching layers [mental]
+
** Tie off loose ends with layer-related commands [mental]
+
*** Add "selection to sublayer" command and its inverse [mental, bb]
+
*** Make "move to next/prev layer" move selected objects to next/prev layer [mental, bb]
+
* UI support for visibility
+
** (DONE) Implement and enable "visible" checkbox in object properties (using SPObject::{visible,setVisible} [bryce]
+
** Make "intelligent" raise/lower aware of visibility status (using per-desktop SPDesktop::itemIsHidden) [bb]
+
** Make selection tool and tests for item-at-point aware of per-desktop visibility [bb]
+
* (DONE) object label support
+
** (DONE) add ability to set inkscape:label from "Item Properties" [bryce]
+
** (DONE) remove id setting from "Item Properties"? [bryce]
+
** (DONE) switch to using SPObject::label()/SPObject::defaultLabel() in UI where object ID is currently used [bryce]
+
** search checks inkscape:label, and ignores layers [bb]
+
* (DONE) add (preliminary) support for "title" and "desc" elements to "Item Properties"
+
  
Documentation & Packaging
+
=== Inkscape 1.0 ===
 +
* Strict bugfix focus, with all development targeted to feature branches
 +
* This will be a long term stable release series
  
* (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]
+
'''Following is a WIP draft of the post-1.0 release goals; this is not yet finalized, and should not be taken as official yet'''
** (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 ===
+
=== Inkscape 1.1 ~ New Features ===
 +
* Land feature branches held for post-1.0
 +
* SVG Flowed Text
 +
** Fix flowtext
 +
** Implement SVG 2 flowed text which has a natural SVG 1.1 fallback.
 +
** Ex. https://dl.dropboxusercontent.com/u/65084033/irc/ask-smart-questions.svg
 +
* Externalize some (easy) dependencies for better modularization
 +
** Break libdepixelize out to its own library
 +
** Break libnrtype out to its own library
 +
** Break libuemf out to its own library
 +
** Switch to using libcroco as a regular dependency (not embedded in our codebase).
 +
*** Contact maintainer to see if still actively maintaining, and if can roll a new release for us
 +
*** Else, consider adopting maintenance of the library under the Inkscape project umbrella
 +
*** Or consider replacement with libcss or other CSS parser.
 +
*** See http://inkscape.13.x6.nabble.com/Should-inkscape-take-over-libcroco-td2784457.html
 +
** Switch to using Adaptagrams (libvpsc, libcola & libavoid) as a regular dependency
 +
*** Contact maintainer to see if still actively maintaining, and if can roll a new release for us
 +
*** Else, consider adopting maintenance of the library under the Inkscape project umbrella
 +
*** See https://bugs.launchpad.net/inkscape/+bug/1353833
 +
* Complete conversion to GTK 3
 +
** Drop use of libgdl in place of GtkNotebook
 +
** Be smarter about toolbar layout so we never have invisible (but necessary) buttons off the screen.
 +
** Rework panels so that they resize consistently and display contents better.  Consider moving back to dialogs in some cases or moving more functionality to the canvas.
 +
* Begin development of new plugin / extension system(s)
 +
** C++ API with Python bindings
 +
** Review the D-Bus scripting API GSoC work from 0.48 timeframe
 +
** Easy to create
 +
** Powerful enough to do LPEs, filters, etc.
 +
** Probably need several different APIs for different levels in the codebase, such as atop the object model, one for canvas stuff, one atop the UI, etc.
 +
*** For object layer will require better division from UI, so it doesn't require a selection for items to operate on
 +
** Include a debug print of the loaded extensions/plugins/etc.
 +
** Establish an Extensions Center for community-collaborative sharing/reviewing/maintaining extensions
 +
*** Core extensions are shipped with Inkscape
 +
*** User review ranking
 +
*** Developer review ranking
 +
*** Auto-QC ranking (mechanical testing, and checking for docs, test cases, etc.)
 +
** Search the Extensions Center and install from within Inkscape
 +
* Switch to using Poppler's API rather than using internals (the current situation causes regular breakage with new releases of Poppler)
 +
* [[GtkMMification]]
 +
* Improved performance
 +
** Working with large files
 +
** Working with files with lots of filters
 +
* Consider setting up workflow (passing tests, test coverage, code review) for getting code into trunk.
 +
** Improve new contributor experience for getting patch reviews
 +
** Switch patch review software from launchpad to something like mailing list + patchwork, or phabricator
 +
* make msi Windows install multilingual
 +
* Implement application-scope actions and "remixable" user interfaces:
 +
** Replace "Verbs" with application-scope Gio::Action definitions.
 +
** Define user-interface using Gtk::Builder XML files.
 +
** Provide command-line "headless" access to application actions.
 +
** Provide documentation for all actions, and tutorial for GUI customization
  
Internal
+
=== Inkscape 1.2 ~ Refactoring ===
* Merge the inkscape_gtkmm codebase into mainline with cmdline option to activate it [bryce]
+
* Split backend / GUI frontend
* Complete gtkmm conversion of at least 80% of dialogs
+
* Flip y-coordinate to match SVG.
* Clean up tool ("event context") code
+
** Introduce a backwards compatibility mechanism that will allow us to modify the XML representation of editing info. This is needed to bring the desktop coordinate system in line with SVG due to guideline and 3D box problems (they save desktop coordinates in the XML). This can be done either at the SP tree level or by moving to a SAX-based parser which updates the editing information as the document is parsed.
* 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]
 
* [http://www.dotmoment.com/generic-viagra Generic Viagra] [http://www.dotmoment.com/generic-propecia Generic Propecia] [http://www.dotmoment.com/generic-glucophage Generic Glucophage] [http://www.dotmoment.com/generic-lipitor Generic Lipitor] [http://www.dotmoment.com/generic-viagra Generic Viagra] [http://www.dotmoment.com/generic-propecia Generic Propecia] [http://www.dotmoment.com/generic-glucophage Generic Glucophage] [http://www.dotmoment.com/generic-lipitor Generic Lipitor] 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]
 
* 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]
 
  
=== Milestone 8 - Design Extension Architecture - Inkscape 0.42 ===
+
[[Category:Developer Documentation]]
 
+
* 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.
+
* Implement gradient UI "release" handler to deal with gradient garbage collection (see bug 984854)
+
 
+
RFE's
+
* [http://sourceforge.net/tracker/index.php?func=detail&aid=893812&group_id=93438&atid=604309 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) [http://inkscape.org/cgi-bin/wiki.pl?DirectoryReorgProposal 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 ==
+

Latest revision as of 20:21, 8 April 2018

This is a working document showing specific near-term tasks needed for achieving the numbered milestones. It is not a wishlist of features to be included in future releases. Because people often work on whatever they feel like, only the current and current+1 releases should be taken seriously. Beyond that is mainly conjectural.

See OldRoadmap for milestones that have already been achieved.

Inkscape 0.92 ~ Infrastructure Focus

2Geom 1.0

Inkscape 1.0alpha ~ Maintenance and Optimization Focus

  • (DONE) Migration to Git
  • (DONE) Migration to GitLab
  • (DONE) Decide which Unit testing framework to use (Discussion July 2013 didn't get much traction)
    • Hackfest consensus is Google test.
  • (DONE) Set up continuous builds (e.g. Travis CI / Appveyor or gitlab)
  • (DONE) Make C++11 compiler a hard requirement
  • (DONE) Drop Autotools support (See Build system improvements)
  • (DONE) Migrate potrace to be an external dependency Done for 0.92
  • (DONE) Gtk3/UI revamp Down to bug fixing and follow-on work
  • Split out less well maintained extensions to an 'extras' package
    • Add a test suite that runs each extension against a collection of test documents
    • Possibly start doing inkscape-extras releases in conjunction with Inkscape's releases?
    • If we don't achieve this by this release, push it to 1.1 or later
  • Split tutorials and other content from the main executable, to enable them to be updated independently of our main release process
    • Need to investigate where we stand with this, and re-evaluate more precisely what we want to do this release
  • Prepatory work for expanded testing
    • Document how to do the tests
    • Create or identify a good model test case
    • Implement example unit tests for: SP objects, verbs, cmdline options, live effects, UI dialogs, UI widgets/tools, UI view, etc.
    • Start collecting regression svg files in a testing repository somewhere
  • Thorough testing of document recovery after crash. Make this more robust.
    • Need to better define what we want to test
    • How should the crash be triggered?
    • What should the document be?
    • Need to be careful about what cases we actually want to consider
  • Improved performance
    • with an empty start
    • when starting up with an existing file
    • peppering printfs in the startup logic shows that some routines that should get called one time only, actually get called multiple times
    • need to investigate if there is existing instrumentation tools that could be used to identify recursion or other causes of slowness during startup
  • Improved mailing list archive
    • Move existing archive to inkscape.org or add an archive mirror at inkscape.org ("official" inkscape information is spread out wide between different domains), this would be an improvement.
    • Consider also bringing lib2geom mailing lists?
    • inkscape: We need postmaster@inkscape.org and abuse@inkscape.org set up. Maybe as part of a mailing list refresh?
  • Set up effort to package selected branches and organize community testing around them
    • Use this initially for changes planned for landing in 1.0
    • Once we're feature-frozen for 1.0, use this mechanism for wider testing of new feature work
  • Gtk+ 3 migration: Goal is a clean, deprecation-free build
    • Stop using GtkActions. Migrate toolbars to use plain widgets, and GAction
    • Turn Inkscape into a proper Gtk::Application. Stop using Gtk::Main
    • GtkMM/C++ify and clean up toolbar code
    • Remove unused GtkAction-based widgets

Inkscape 1.0beta ~ Test Case and Documentation Writing Focus

  • Write unit test cases
    • Core functions
  • Better translations - keep track of % translations for all languages. Drive to 95% on all major languages.
  • Cleanup website and wiki
    • Move pages of value to users from wiki to the main website
    • Trim down amount of legacy material presented in the wiki
  • Coder stories
    • different stories about how to do common development tasks, like hooking in a new widget or adding support of a new SVG tag
    • have people sketch in what they know, then pass around for critique to optimize the description
    • where to store the documentation? Where would someone look?

Inkscape 1.0

  • Strict bugfix focus, with all development targeted to feature branches
  • This will be a long term stable release series

Following is a WIP draft of the post-1.0 release goals; this is not yet finalized, and should not be taken as official yet


Inkscape 1.1 ~ New Features

  • Land feature branches held for post-1.0
  • SVG Flowed Text
  • Externalize some (easy) dependencies for better modularization
    • Break libdepixelize out to its own library
    • Break libnrtype out to its own library
    • Break libuemf out to its own library
    • Switch to using libcroco as a regular dependency (not embedded in our codebase).
    • Switch to using Adaptagrams (libvpsc, libcola & libavoid) as a regular dependency
  • Complete conversion to GTK 3
    • Drop use of libgdl in place of GtkNotebook
    • Be smarter about toolbar layout so we never have invisible (but necessary) buttons off the screen.
    • Rework panels so that they resize consistently and display contents better. Consider moving back to dialogs in some cases or moving more functionality to the canvas.
  • Begin development of new plugin / extension system(s)
    • C++ API with Python bindings
    • Review the D-Bus scripting API GSoC work from 0.48 timeframe
    • Easy to create
    • Powerful enough to do LPEs, filters, etc.
    • Probably need several different APIs for different levels in the codebase, such as atop the object model, one for canvas stuff, one atop the UI, etc.
      • For object layer will require better division from UI, so it doesn't require a selection for items to operate on
    • Include a debug print of the loaded extensions/plugins/etc.
    • Establish an Extensions Center for community-collaborative sharing/reviewing/maintaining extensions
      • Core extensions are shipped with Inkscape
      • User review ranking
      • Developer review ranking
      • Auto-QC ranking (mechanical testing, and checking for docs, test cases, etc.)
    • Search the Extensions Center and install from within Inkscape
  • Switch to using Poppler's API rather than using internals (the current situation causes regular breakage with new releases of Poppler)
  • GtkMMification
  • Improved performance
    • Working with large files
    • Working with files with lots of filters
  • Consider setting up workflow (passing tests, test coverage, code review) for getting code into trunk.
    • Improve new contributor experience for getting patch reviews
    • Switch patch review software from launchpad to something like mailing list + patchwork, or phabricator
  • make msi Windows install multilingual
  • Implement application-scope actions and "remixable" user interfaces:
    • Replace "Verbs" with application-scope Gio::Action definitions.
    • Define user-interface using Gtk::Builder XML files.
    • Provide command-line "headless" access to application actions.
    • Provide documentation for all actions, and tutorial for GUI customization

Inkscape 1.2 ~ Refactoring

  • Split backend / GUI frontend
  • Flip y-coordinate to match SVG.
    • Introduce a backwards compatibility mechanism that will allow us to modify the XML representation of editing info. This is needed to bring the desktop coordinate system in line with SVG due to guideline and 3D box problems (they save desktop coordinates in the XML). This can be done either at the SP tree level or by moving to a SAX-based parser which updates the editing information as the document is parsed.