Difference between revisions of "Roadmap"

From Inkscape Wiki
Jump to navigation Jump to search
(Added item about Sodipodi history)
(40 intermediate revisions by 7 users not shown)
Line 3: Line 3:
''See [[OldRoadmap]] for milestones that have already been achieved.''
''See [[OldRoadmap]] for milestones that have already been achieved.''


=== Inkscape 0.91 ===
=== Inkscape 0.91 ~ Refactoring ===


0.91 will be a longer cycle focused on refactoring and new features.
0.91 will be a longer cycle focused on refactoring and new features.
Line 12: Line 12:
* (DONE) <del>Completely remove libnr</del>
* (DONE) <del>Completely remove libnr</del>


=== Inkscape 0.92 ===
=== 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>


=== Inkscape 0.93 ===
=== Inkscape 0.93 ~ Maintenance and Optimization Focus ===
* (DONE) <s>Migration to Git</s>
* (DONE) <s>Migration to GitLab</s>
* (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>
** Hackfest consensus is Google test.  Bryce will make RFC to devel list for any other opinions.
* Set up continuous builds using Travis CI / Appveyor
* (DONE) <s>Make C++11 compiler a hard requirement</s>
* Gtk3/UI revamp and panels fixing
* (DONE) <s>Drop Autotools support (See [[Build system improvements]])</s>
* Improved performance
** with an empty start
** when starting up with an existing file
* 2geom maintenance
** Stop embedding 2Geom in Inkscape's codebase; handle it as a regular dependency
** Move project to gitlab, from https://launchpad.net/lib2geom, http://lib2geom.sourceforge.net/, and https://github.com/inkscape/lib2geom
** Possibly start doing lib2geom releases in conjunction with Inkscape's releases?
** Add to PPAs and other CI / autobuilds we already use for Inkscape
* Split tutorials and other content from the main executable, to enable them to be updated independently of our main release process
* 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?
* Refactor out "Sodipodi" history
** SPItem, SPObject and other variables have names from the early versions of Sodipodi, these names no longer makes sense (especially for new developers).
* (DONE) <s>Migrate potrace to be an external dependency</s> Done for 0.92
* Prepatory work for expanded testing
** 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
* New Swatch dialog [Tomasz' GSoc project]
* Thorough testing of document recovery after crash.  Make this more robust.


=== Inkscape 0.94 ===
=== Inkscape 0.94 ~ New Features 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.
* Multi-page documents and parent/child document references
* 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
* Improve support for CMYK/spot colors
** Minor UI streamlining
** Eliminate the CMS tab
** Change the CMYK tab to allow selecting the CMYK colors directly
** Allow setting the document to CMYK, which sets a global CMYK profile
** Stores RGB colors as RGB, CMYK colors as CMYK
* Solicit community-contributed tutorial contributions
* (Optionally) Start allowing use of C++-11 features that we find to be sufficiently widely supported
* 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?
* Experimental GPU rendering support (e.g. cairo-gl or something vulkan-based).  Should be compile-time option defaulted to off.


=== Inkscape 0.9x ===
=== 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
** Core functions
* Introduce new tutorials


=== Inkscape 1.0 ===
=== Inkscape 1.0 ~ Documentation Focus ===
* Review, update, and expand existing documentation
** code documentation
** tutorials
** man page
** kickoff manual effort?
* 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


=== Inkscape 1.x ===


=== Milestone [Future] ===
-----------------------------------
'''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 ~ Refactoring ===
* Expand range of C++-11 features allowed; make C++-11 support more of a requirement for Inkscape
** http://en.cppreference.com/w/cpp/compiler_support
* Take a holistic approach to UI design ([http://sourceforge.net/p/inkscape/mailman/message/33080043/ Original email])
*# Analyze the existing UI, make a list of UI decisions that are inconsistent between each other.
*# 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.).
*# Design some sort of HIG (Human Interface Guidelines) for Inkscape
*# Use it to plan redesigns existing dialogs/docks.
*# Preserve dialog layouts between sessions
* Externalize some (easy) dependencies
** 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


=== Random Ideas / Requests / Needs ===
=== 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


Note this list is unordered, unapproved, and unofficial.  Feel free to add new ideas worth considering for the roadmap.
=== Inkscape 1.3 ~ Maintenance and Optimization ===
 
===== Maintenance =====
* C++11.  Initially focus on widely supported C++11 features, then later adopt remaining features as they become widespread.
* Better modularization
* Better modularization
** Switch to using libcroco as a regular dependency (not embedded in our codebase)
** Switch to using libgdl as a regular dependency
** Break libavoid out to its own library
** Break libcola out to its own library
** Break libdepixelize out to its own library
** Break libdepixelize out to its own library
** Break libnrtype out to its own library
** Break libnrtype out to its own library
** Break libuemf out to its own library
** Break libuemf out to its own library
** Break libvpsc 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)
* 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.
* [[GtkMMification]]
* [[GtkMMification]]
* XML refactoring: Remove direct manipulation of XML from as many places as possible and replace it with SP tree methods.
* XML refactoring: Remove direct manipulation of XML from as many places as possible and replace it with SP tree methods.
* Refactor out "Sodipodi" history
* Improved performance
** SPItem, SPObject and other variables have names from the early versions of Sodipodi, these names no longer makes sense (especially for new developers).
** Working with large files
** Working with files with lots of filters
 
=== Inkscape 1.4 ~ Major Features ===
* Complete conversion to GTK 3
** Switch to using libgdl as a regular dependency
** 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
* Text support overhaul
** Opentype (turning on/off small caps)
** Fix Overreliance on system fonts. Deja Vu is not an adequate typeface.
** Fix loss of typeface, text styling, text positioning
 
=== Inkscape 1.5 ~ Stabilization ===
 
 
 
 
=== Milestone [Future] ===
 
 


===== Infrastructure =====
===== Infrastructure =====
* Replace VCS.
 
* Replace Automake Build System.
 
* Make the Windows uninstaller work (reevaluate this, we now have msi installer for win32 and Win64)
===== Maintenance =====
* make msi Windows install multilingual
* Split backend / GUI frontend
* 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])
** Greatly expand Unit test framework.
** Set up workflow (passing tests, test coverage, code review) for getting code into trunk.
* Set up autogeneration of Inkcape 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)])
** Put it publically somewhere on the inkscape domain for "official" access.
* 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.


===== New features / Improvements to existing features =====
===== New features / Improvements to existing features =====
* Multi-page documents and parent/child document references
* <strike>Make flowed text SVG-compliant.</strike>
* [[SVG2]] support (with proper SVG 1.1 fallbacks)
* [[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 SVG switches: the first recognized element in a switch should appear directly in the SP tree, not as a child of the switch element.
* <strike>Using the above mechanism, make flowed text SVG-compliant.</strike>
* Implement SVG 2 flowed text which has a natural SVG 1.1 fallback.
* Improve support for changing the name of the XML element node in response to SP tree changes.
* Improve support for changing the name of the XML element node in response to SP tree changes.
* Flip y-coordinate to match SVG.
* Hardware acceleration: make use of modern GPUs to speed up rendering.
* 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.
* 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
* CSS support
* Javascript support
* Animation support.
* Animation support.
* D-Bus scripting API.  (Merge GSoC work from 0.48 timeframe?)
** frame-by-frame interpolations?
** SMIL?
** Javascripts?
** Something else?
* Evaluate pdf exporter to join features from scribus Export
* 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])
** 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])
* Take a holistic approach to UI design ([http://sourceforge.net/p/inkscape/mailman/message/33080043/ Original email])
* For animation and css, a functionality to remove ALL transformations from an SVG
*# Analyze the existing UI, make a list of UI decisions that are inconsistent between each other.
* PDF cleanup function - ungroup everything, remove all unnecessary clipping and masking
*# 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.).
* Better marker support
*# Design some sort of HIG (Human interface guidelines?) for Inkscape
* Object navigator (like in ponyscape)
*# Use it to redesign existing dialogs/docks.
* 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 =====
===== Documentation =====
===== Community =====
===== Community =====


[[Category:Developer Documentation]]
[[Category:Developer Documentation]]

Revision as of 15:33, 23 September 2017

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.91 ~ Refactoring

0.91 will be a longer cycle focused on refactoring and new features.

  • (DONE) Merge GSoC 2010 work
  • (DONE) Evaluate changing the numbering scheme to a date-based one, or setting more realistic goals for major (1.0, 2.0) releases
  • (DONE) Port renderer to Cairo (Krzysztof - GSoC 2010)
  • (DONE) Completely remove libnr

Inkscape 0.92 ~ Infrastructure Focus

Inkscape 0.93 ~ 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. Bryce will make RFC to devel list for any other opinions.
  • Set up continuous builds using Travis CI / Appveyor
  • (DONE) Make C++11 compiler a hard requirement
  • Gtk3/UI revamp and panels fixing
  • (DONE) Drop Autotools support (See Build system improvements)
  • Improved performance
    • with an empty start
    • when starting up with an existing file
  • 2geom maintenance
  • Split tutorials and other content from the main executable, to enable them to be updated independently of our main release process
  • 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?
  • Refactor out "Sodipodi" history
    • SPItem, SPObject and other variables have names from the early versions of Sodipodi, these names no longer makes sense (especially for new developers).
  • (DONE) Migrate potrace to be an external dependency Done for 0.92
  • Prepatory work for expanded testing
    • 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
  • New Swatch dialog [Tomasz' GSoc project]
  • Thorough testing of document recovery after crash. Make this more robust.

Inkscape 0.94 ~ New Features 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.
  • Multi-page documents and parent/child document references
  • SVG Flowed Text
  • Improve support for CMYK/spot colors
    • Minor UI streamlining
    • Eliminate the CMS tab
    • Change the CMYK tab to allow selecting the CMYK colors directly
    • Allow setting the document to CMYK, which sets a global CMYK profile
    • Stores RGB colors as RGB, CMYK colors as CMYK
  • Solicit community-contributed tutorial contributions
  • (Optionally) Start allowing use of C++-11 features that we find to be sufficiently widely supported
  • 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?
  • Experimental GPU rendering support (e.g. cairo-gl or something vulkan-based). Should be compile-time option defaulted to off.

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
    • Core functions
  • Introduce new tutorials

Inkscape 1.0 ~ Documentation Focus

  • Review, update, and expand existing documentation
    • code documentation
    • tutorials
    • man page
    • kickoff manual effort?
  • 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



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

  • Expand range of C++-11 features allowed; make C++-11 support more of a requirement for Inkscape
  • Take a holistic approach to UI design (Original email)
    1. Analyze the existing UI, make a list of UI decisions that are inconsistent between each other.
    2. 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.).
    3. Design some sort of HIG (Human Interface Guidelines) for Inkscape
    4. Use it to plan redesigns existing dialogs/docks.
    5. Preserve dialog layouts between sessions
  • Externalize some (easy) dependencies
    • Switch to using libcroco as a regular dependency (not embedded in our codebase).
    • Switch to using Adaptagrams (libvpsc, libcola & libavoid) as a regular dependency

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
    • Switch to using libgdl as a regular dependency
    • 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
  • Text support overhaul
    • Opentype (turning on/off small caps)
    • Fix Overreliance on system fonts. Deja Vu is not an adequate typeface.
    • Fix loss of typeface, text styling, text positioning

Inkscape 1.5 ~ Stabilization

Milestone [Future]

Infrastructure
Maintenance
  • Split backend / GUI frontend
New features / Improvements to existing features
  • Make flowed text SVG-compliant.
  • 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
  • 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