Difference between revisions of "Roadmap"

From Inkscape Wiki
Jump to navigation Jump to search
(Move several items to Projects page: Swatch dialog, multi-page docs, CMYK, tutorials, GPU rendering)
 
(6 intermediate revisions by 2 users not shown)
Line 23: Line 23:
 
** Add to PPAs and other CI / autobuilds we already use for Inkscape [alex + bryce]
 
** Add to PPAs and other CI / autobuilds we already use for Inkscape [alex + bryce]
  
 
+
=== Inkscape 1.0alpha ~ Maintenance and Optimization Focus ===
=== Inkscape 0.93 ~ Maintenance and Optimization Focus ===
 
 
* (DONE) <s>Migration to Git</s>
 
* (DONE) <s>Migration to Git</s>
 
* (DONE) <s>Migration to GitLab</s>
 
* (DONE) <s>Migration to GitLab</s>
Line 33: Line 32:
 
* (DONE) <s>Drop Autotools support (See [[Build system improvements]])</s>
 
* (DONE) <s>Drop Autotools support (See [[Build system improvements]])</s>
 
* (DONE) <s>Migrate potrace to be an external dependency</s> Done for 0.92
 
* (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
  
* Gtk3/UI revamp
 
** This is mostly underway already, can maybe mark this done and focus on remaining subtasks
 
* Gtk3/UI panels fixing
 
** This definitely needs done but is existing funkiness that won't change due to move to Gtk3, so can bump it to later or moving to the Projects list
 
 
* Split out less well maintained extensions to an 'extras' package
 
* Split out less well maintained extensions to an 'extras' package
 
** Add a test suite that runs each extension against a collection of test documents
 
** Add a test suite that runs each extension against a collection of test documents
Line 46: Line 42:
 
* Prepatory work for expanded testing
 
* Prepatory work for expanded testing
 
** Document how to do the tests
 
** 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.
 
** 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
 
** Start collecting regression svg files in a testing repository somewhere
Line 58: Line 55:
 
** peppering printfs in the startup logic shows that some routines that should get called one time only, actually get called multiple times
 
** 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
 
** need to investigate if there is existing instrumentation tools that could be used to identify recursion or other causes of slowness during startup
* 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?
 
 
* Improved mailing list archive
 
* 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.
 
** 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?
 
** 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?
 
** 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 0.94 ~ New Features Focus ===
+
=== Inkscape 1.0beta ~ Test Case and Documentation Writing Focus ===
* 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.
 
* 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
 
* (Optionally) Start allowing use of C++-11 features that we find to be sufficiently widely supported
 
 
 
=== Inkscape 0.95 ~ Stabilization Focus ===
 
* Update all core plugins to handle multi-page documents
 
* Special focus on bugs relating to multi-page, flowed text, 2geom, and coordinate system flip
 
 
* Write unit test cases
 
* Write unit test cases
 
** Core functions
 
** Core functions
 
=== Inkscape 1.0 ~ Documentation Focus ===
 
 
* Better translations - keep track of % translations for all languages.  Drive to 95% on all major languages.
 
* Better translations - keep track of % translations for all languages.  Drive to 95% on all major languages.
 
* Cleanup website and wiki
 
* Cleanup website and wiki
 
** Move pages of value to users from wiki to the main website
 
** Move pages of value to users from wiki to the main website
 
** Trim down amount of legacy material presented in the wiki
 
** 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
  
 
-----------------------------------
 
-----------------------------------
Line 93: Line 88:
 
-----------------------------------
 
-----------------------------------
  
=== Inkscape 1.1 ~ Refactoring ===
+
=== Inkscape 1.1 ~ New Features ===
* Expand range of C++-11 features allowed; make C++-11 support more of a requirement for Inkscape
+
* Land feature branches held for post-1.0
** http://en.cppreference.com/w/cpp/compiler_support
+
* SVG Flowed Text
* Take a holistic approach to UI design ([http://sourceforge.net/p/inkscape/mailman/message/33080043/ Original email])
+
** Fix flowtext
*# Analyze the existing UI, make a list of UI decisions that are inconsistent between each other.
+
** Implement SVG 2 flowed text which has a natural SVG 1.1 fallback.
*# Look around, see how other project solves these things, figure out what's good/applicable for Inkscape (like designing particular custom widgets that are less pixel-hungry etc.).
+
** Ex. https://dl.dropboxusercontent.com/u/65084033/irc/ask-smart-questions.svg
*# Design some sort of HIG (Human Interface Guidelines) for Inkscape
+
* Externalize some (easy) dependencies for better modularization
*# Use it to plan redesigns existing dialogs/docks.
+
** Break libdepixelize out to its own library
*# Preserve dialog layouts between sessions
+
** Break libnrtype out to its own library
* Externalize some (easy) dependencies
+
** Break libuemf out to its own library
 
** Switch to using libcroco as a regular dependency (not embedded in our codebase).
 
** 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
 
*** Contact maintainer to see if still actively maintaining, and if can roll a new release for us
Line 112: Line 107:
 
*** Else, consider adopting maintenance of the library under the Inkscape project umbrella
 
*** Else, consider adopting maintenance of the library under the Inkscape project umbrella
 
*** See https://bugs.launchpad.net/inkscape/+bug/1353833
 
*** See https://bugs.launchpad.net/inkscape/+bug/1353833
 
=== Inkscape 1.2 ~ Infrastructure ===
 
* Replace VCS
 
* Greatly expand Unit test framework.
 
* 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
 
 
=== Inkscape 1.3 ~ Maintenance and Optimization ===
 
* 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 Poppler's API rather than using internals (the current situation causes regular breakage with new releases of Poppler)
 
* [[GtkMMification]]
 
* XML refactoring: Remove direct manipulation of XML from as many places as possible and replace it with SP tree methods.
 
* Improved performance
 
** Working with large files
 
** Working with files with lots of filters
 
 
=== Inkscape 1.4 ~ Major Features ===
 
 
* Complete conversion to GTK 3
 
* Complete conversion to GTK 3
** Switch to using libgdl as a regular dependency
+
** Drop use of libgdl in place of GtkNotebook
 
** Be smarter about toolbar layout so we never have invisible (but necessary) buttons off the screen.
 
** 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.
 
** 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.
Line 152: Line 125:
 
*** Auto-QC ranking (mechanical testing, and checking for docs, test cases, etc.)
 
*** Auto-QC ranking (mechanical testing, and checking for docs, test cases, etc.)
 
** Search the Extensions Center and install from within Inkscape
 
** Search the Extensions Center and install from within Inkscape
* Text support overhaul
+
* Switch to using Poppler's API rather than using internals (the current situation causes regular breakage with new releases of Poppler)
** Opentype (turning on/off small caps)
+
* [[GtkMMification]]
** Fix Overreliance on system fonts.  Deja Vu is not an adequate typeface.
+
* Improved performance
** Fix loss of typeface, text styling, text positioning
+
** Working with large files
 
+
** Working with files with lots of filters
=== Inkscape 1.5 ~ Stabilization ===
+
* 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:
=== Milestone [Future] ===
+
** 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 ===
 
 
===== Infrastructure =====
 
 
 
 
 
===== Maintenance =====
 
 
* Split backend / GUI frontend
 
* 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.
  
===== New features / Improvements to existing features =====
 
* <strike>Make flowed text SVG-compliant.</strike>
 
* [[SVG2]] support (with proper SVG 1.1 fallbacks)
 
* Improve support for SVG switches: the first recognized element in a switch should appear directly in the SP tree, not as a child of the switch element.
 
* Improve support for changing the name of the XML element node in response to SP tree changes.
 
* Hardware acceleration: make use of modern GPUs to speed up rendering.
 
* Live path effects: investigate extending to cover generic vector transformations (vector effects). Provide live versions of several destructive operations: boolean ops, stroke to path, text to path, etc.
 
* Mesh gradient support
 
* CSS support
 
* Javascript support
 
* Animation support.
 
** frame-by-frame interpolations?
 
** SMIL?
 
** Javascripts?
 
** Something else?
 
* Evaluate pdf exporter to join features from scribus Export
 
** Improved export for printing industry ([http://sourceforge.net/p/inkscape/mailman/inkscape-devel/thread/trinity-c6dc9287-cda7-4d8d-9a49-3201dd64f2d1-1412200320248%403capp-gmx-bs01/#msg32887957 Mailing list thread from October 2014])
 
* For animation and css, a functionality to remove ALL transformations from an SVG
 
* PDF cleanup function - ungroup everything, remove all unnecessary clipping and masking
 
* Better marker support
 
* Object navigator (like in ponyscape)
 
* Inkscape for Android
 
* CAD drawing functionality
 
* More file format import compatibility
 
** TopDraw
 
* OCR of bitmap traces
 
* Rewrite / reintroduce 3D box.
 
** 3-dimensional grid, perspective deformed, with snapping
 
 
===== Documentation =====
 
 
===== Community =====
 
  
 
[[Category:Developer Documentation]]
 
[[Category:Developer Documentation]]

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.