Difference between revisions of "Roadmap"

From Inkscape Wiki
Jump to navigation Jump to search
(Added strikethrough over doxygen bullet points as that is fixed already at (http://jenkins.inkscape.org/job/Inkscape_trunk_doxygen/doxygen/))
Line 13: Line 13:

=== Inkscape 0.92 ~ Infrastructure Focus ===
=== Inkscape 0.92 ~ Infrastructure Focus ===
* Build system: migrate away from Autotools, either to CMake or Waf

=== Inkscape 0.93 ~ Maintenance Focus ===
=== Inkscape 0.93 ~ Maintenance Focus ===

Revision as of 08:05, 31 March 2015

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

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

  • Build system: migrate away from Autotools, either to CMake or Waf

Inkscape 0.93 ~ Maintenance Focus

Inkscape 0.94 ~ Feature Focus

Inkscape 0.95 ~ Stability Focus

Inkscape 1.0 ~ Documentation Focus

Milestone [Future]

Random Ideas / Requests / Needs

Note this list is unordered, unapproved, and unofficial. Feel free to add new ideas worth considering for the roadmap.

  • C++11. Initially focus on widely supported C++11 features, then later adopt remaining features as they become widespread.
  • 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 libnrtype out to its own library
    • Break libuemf out to its own library
    • Break libvpsc out to its own library
  • 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
  • XML refactoring: Remove direct manipulation of XML from as many places as possible and replace it with SP tree methods.
  • 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).
  • Switch to using Poppler's API rather than using internals (the current situation causes regular breakage with new releases of Poppler)
  • Split backend / GUI frontend
  • Split out less well maintained extensions to an 'extras' package

New features / Improvements to existing features
  • Improve support for CMYK/spot colors
  • Multi-page documents and parent/child document references
  • 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.
  • Using the above mechanism, make flowed text SVG-compliant.
  • 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.
  • Flip y-coordinate to match SVG.
  • 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?
  • D-Bus scripting API. (Merge GSoC work from 0.48 timeframe?)
  • Evaluate pdf exporter to join features from scribus Export
  • 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 redesign existing dialogs/docks.
    5. Preserve dialog layouts between sessions
  • For animation and css, a functionality to remove ALL transformations from an SVG
  • PDF cleanup function - ungroup everything, remove all unnecessary clipping and masking
  • Improved performance
    • Start up empty
    • Opening an existing file
    • Working with large files
    • Working with files with lots of filters
  • Better marker support
  • Object navigator (like in ponyscape)
  • New plugin / extension system
    • Easy to create
    • Powerful enough to do LPEs
  • 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
  • Introduce new tutorials
  • Split tutorials and other content from the main executable, to enable them to be updated independently of our main release process
  • Better translations - keep track of % translations for all languages. Drive to 95% on all major languages.