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

(DONE) Set up autogeneration of Inkscape source code documentation (Doxygen not available online according to old wiki page but available here (fossies.org)) (http://jenkins.inkscape.org/job/Inkscape_trunk_doxygen/doxygen/) (DONE) Put it publicly somewhere on the inkscape domain for "official" access. (http://jenkins.inkscape.org/job/Inkscape_trunk_doxygen/doxygen/)

(http://jenkins.inkscape.org/job/Inkscape_trunk_doxygen/doxygen/) (DONE) Build system: migrate away from Autotools (See Build system improvements) (DONE) Decide between CMake and Waf (DONE) Alex will be doing a "neutral party" review of the two Decision to go with cmake for now. (DONE) Get decided system working See CMake_Tasks (DONE) Switch release tools to use new build system Documented for now; will wait on mechanizing it until after switch to git. (DONE) Switch packaging tools to use new build system (DONE) Retain Autotools support one final release (legacy support) , then drop next release.

(DONE) Make the Windows uninstaller work (reevaluate this, we now have msi installer for win32 and Win64)

2Geom 1.0

2geom maintenance (DONE) Stop embedding 2Geom in Inkscape's codebase; handle it as a regular dependency (https://gitlab.com/inkscape/inkscape/-/merge_requests/2109) (DONE) Move project to gitlab, from https://launchpad.net/lib2geom, http://lib2geom.sourceforge.net/, and https://github.com/inkscape/lib2geom [kk] (https://gitlab.com/inkscape/lib2geom) Possibly start doing lib2geom releases in conjunction with Inkscape's releases? [bryce] Add to PPAs and other CI / autobuilds we already use for Inkscape [alex + bryce]



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 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 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



Inkscape 1.2 ~ Refactoring