Difference between revisions of "Roadmap"

From Inkscape Wiki
Jump to navigation Jump to search
(25 intermediate revisions by 4 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, this roadmap should only contain items that really have a good chance of being done for the next release (which means, somebody is actually working on them).


NOTE: This is a working document showing specific near-term tasks needed for achieving the numbered milestones.
'''NOTE 1:''' Because this document became completely separated from reality, I replaced it with a more realistic version that reflects what we're actually doing. --[[User:Tweenk|Tweenk]] 13:45, 31 January 2010 (UTC)


''Milestones 0-12 have been completed since the start of the Inkscape Project. See [[OldRoadmap]]''
''Milestones 0-13 have been completed since the start of the Inkscape Project. See [[OldRoadmap]]''


=== Milestone 13 - Inkscape 0.47 - Refactoring / Cleanup ===
=== Inkscape 0.48 ===


New/Changed Dependencies:
0.48 is intended to be a quick release cycle focused on merging GSoC work and fixing some long standing bugs.
* Gtk 2.12 (required)


Architectural Refactoring Effort:
* Merge and stabilize Google Summer of Code 2009 work
* [[Lib2geom]] Integration
** (DONE) <del>Node tool rewrite</del>
** Eliminate code in favor of 2geom where feasible
** (DONE…?) Connector tool improvements
* Convert remaining GTK dialog code to Gtkmm
** (POSTPONED) D-Bus scripting API
* Eliminate all use of sp_repr_new in favor of XML::Document::* classes (see [http://article.gmane.org/gmane.comp.graphics.inkscape.devel/19068])
* (DONE) <del>Desktop integration improvements: solve the issue of broken files resulting from people unknowingly pasting bitmap images as links.</del>
* SubsystemRearchitecture
* (DONE) <del>Build system improvements: evaluate [http://code.google.com/p/waf/ Waf] as an unified build system for all platforms (Krzysztof)</del>
** Migrate SPObject to native C++ classes
** to be considered for 0.49, branch at lp:~tweenk/inkscape/waf-build)
** Rename all '[[SPFooBar]]' routines to '[[FooBar]]' and put into namespaces
* (DONE) <del>Move code hosting to Launchpad</del>
* Implement [http://grin-optics.org gradient] UI "release" handler to deal with gradient garbage collection (see bug 984854)
* Windows port improvements
* Create an API for tracking references and avoiding id clashes on import and interdocument copy/paste. The optimal place to put it would probably be somewhere at the XML level.
** (DONE) <del>move devlibs to a Launchpad project</del>
* Streamline style.*
** (DONE) <del>Rebuild C++ libraries using TDM-GCC to fix Launchpad bug [https://bugs.launchpad.net/inkscape/+bug/173116 #173116] - exceptions not caught across DLLs</del>
** Eliminate use of the style.h types in as much of codebase as possible, particularly display/*.
** (DONE) <del>Upgrade Windows devlibs to recent versions of GTK and GLib to fix several Windows bugs</del>
** Externally, it should present a simple set of accessor methods for getting/setting properties by name, and propagating to/from repr.
** Make the uninstaller work
** Inside, it should have:
*** a concise list of property names with the expected domain of values in CSS and the associated Inkscape data type
*** a concise list of property aliases which represent one or more properties combined, each with the rule used to combine
*** definitions of the aforementioned rules and value domains
*** some generic code (not tied to any one property) implementing the needed behavior


Codebase Cleanup Effort:
=== Inkscape 0.49 ===
* Change to use of [http://library.gnome.org/devel/glib/stable/glib-Quarks.html GQuarks] instead of #defines where feasible
* Use autoscan and autoreconf to find out which configure tests are still needed.
** Trim down the amount of stuff in our configure.ac
* (PARTIALLY DONE) [[DirectoryReorgProposal]]
* Convert all tabs into spaces (convert tabs to 4 spaces)
** Also see http://sourceforge.net/mailarchive/message.php?msg_id=7164324
* [[http://wiki.inkscape.org/wiki/index.php/InkscapeJanitors#Cleanup:_Whitespace Remove trailing whitespace]]
* Replace use of C macros (E.g. SP_IS_PATH) with C++ instance methods, static class methods, etc.
* Use [http://pmd.sourceforge.net/cpd.html Copy/Paste Detector] to find and refactor duplicated code


User Documentation Effort:
0.49 will be a longer cycle focused on refactoring and new features.
* Re-arrange tutorials into sub-categories
* (PARTIALLY DONE) Switch to use of xml2po for tutorial files ([[User:Colin Marquardt|Colin Marquardt]])
* Document filters


Inkscape SVG Effort
* (DONE) <del>Merge GSoC 2010 work</del>
* Revisit coordination system (move away from Cartesian)
* Evaluate changing the numbering scheme to a date-based one, or setting more realistic goals for major (1.0, 2.0) releases
* (DONE) <del>Port renderer to Cairo (Krzysztof - GSoC 2010)</del>
* (DONE) <del>Completely remove libnr</del>
* 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).
* Using the above mechanism, make flowed text SVG-compliant.
* 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.


User Interface Effort:
=== Long term goals ===
* Improvement of SVG patterns UI - make it similar to gradient-drag, instead of piggybacking knotholder
* Palettes
** Custom palettes like from Gnome
** Ability to load 3rd-party palettes (e.g. Pantone, Trumatch, Focoltone, Toyo, etc.)
* Reenable fuzzy font matching [bulia]
* Improve freehand curve smoothness [pjrm, paraprax]


Testing Effort:
* Better modularization: separate the Inkscape codebase into several libraries that could be used by other programs.
* Include some rendering tests in `make check'.
* General refactoring: make Inkscape a joy to develop.
* Get 'make check' to pass on Win32 and OSX (with the current btool, does this mean a 'btool check' should pass?)
* SP tree refactoring: Port the object tree to C++ objects.
* Investigate performance measurement testing for Inkscape
* XML refactoring: Remove direct manipulation of XML from as many places as possible and replace it with SP tree methods.
 
* Hardware acceleration: make use of modern GPUs to speed up rendering.
Animation Effort
* 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.
* Create a written conceptualization of how it should work
* CSS support?
** Currently, part of the concept discussion is at [[Animation-(Timeline)|here]]
* Animation support.
 
* [[GtkMMification]]
User Documentation Effort:
* More tutorials
** Node editing
** Advanced text effects
** Grid snapping
** Connectors
** Creating photo-realistic art
 
Performance effort:
*Support Hardware acceleration
**Take advantage of opengl 2.1 or dx9 to enhance editing performance.
*Multi-Processor
**Boost performance on multi-core processor.
 
GUI effort:
*Layer panel
**Add object selection on layer(similar to adobe illustrator)
 
=== Milestone 14 - Inkscape 0.48 - Animation ===
 
File Format Support Effort:
* PDF Import/Export
** Choice of PDF spec. (PDF/X-1a, PDF/X-3)
** Add file info/comments
** Add color bars
* [[MicrosoftVisio|Visio]] support
** Add extension for use of [[VDX2SVG]] (http://vdxtosvg.sourceforge.net/)
** (OBSOLETE) Add extension for use of [[PDF2SVG]] (http://cgit.freedesktop.org/~cworth/svg2pdf/)
 
DOM Binding Effort:
* Evaluate Adobe Activescript to use instead of Spidermonkey for our JS engine
* Create sample prototype app to explore ActiveScript
* Decide whether to go with Spidermonkey or Adobe ActiveScript
 
Tools:
* [https://bugs.launchpad.net/inkscape/+bug/sf904962 correct handling of multiple font faces] by Text tool
* [http://article.gmane.org/gmane.comp.graphics.inkscape.devel/16938/ Filters tool]
 
* Get basic rendering and authoring of simple animations working adequately
 
Desktop Integration Effort:
* [PARTIALLY DONE] Inter-application cut-and-paste
* Inter-application drag-and-drop
 
Architectural Refactoring Effort:
* Complete lib2geom integration
 
DOM Binding Effort:
* Create tool that reads the w3c idl files and generates binding code
* Bind xpath parsing/execution
* Finish the CSS-DOM classes
* Add a 'run' mode in a separate window that runs and displays the scripted SVG
 
Desktop Integration Effort:
* [[WebDAV/FTP]] support via GVFS, KIO, Neon, or the like
* Finish making printing work more efficiently and reliably
* Clipart manager GUI
 
Inkboard Effort
* Ensure multi-user conferences work across most JEP-compliant Jabber servers
* Conduct an informal security analysis of Inkboard for security flaws
 
File Format Support Effort:
* PDF Import/Export
** Generate multipage PDF documents
** Define bleed and slug areas for offset printing
** Add crop, bleed and registration marks
 
Inkboard Effort
* Stabilize the code by closing crash bugs in the bug tracker
 
SVG Feature Compliance Effort:
* Animation
** Sketch out UI mockup ideas for animation rendering/animation
** Make an ultra-preliminary proof of concept of at least one animation feature
 
Extension Effort:
* Unification of the way to display help on extensions
* Localizable help of bundled extensions
* Effect extensions browser
 
=== Milestone 15 - Inkscape 0.49 - Prototype all SVG Mobile features ===
 
SVG Feature Compliance Effort:
* Ability to select which SVG spec version to save as
* Multi-page
* Animation
* Implement perspective transformations via [[PerspectiveObject]]
* Path editing
* Shaped strokes
* Masking/clippaths
** on-canvas editing (patch for 0.47 is ready)
** Should work like gradient tool to apply transparency
* [https://bugs.launchpad.net/inkscape/+bug/sf893812 hyperlinking]
* Ensure Inkscape does not throw away the internal DTD subsets of documents it reads
 
=== Milestone 16 - Inkscape 0.50 - SVG Mobile Support ===
 
SVG Feature Compliance Effort: (Also see [[SVG Tiny Compliance]])
* Multi-page
* Scripting
* Markers
** Inherit stroke properties like color
** On-canvas editing
** Fix snapping issue
* Real CMYK / LAB / HSB support
 
=== Milestone 17 - Inkscape 0.51 ===
 
Architectural Refactoring Effort:
* cairo Adoption Effort:
** Integrate a cairo-based SVG Canvas library
* follow the [http://standards.freedesktop.org/icon-naming-spec/icon-naming-spec-latest.html Freedesktop Icon Naming Spec] for easier themeing
 
File Format Support Effort:
* Native [[Adobe Illustrator]] file Import (DONE)/Export
** (DONE) Requires good PDF Import/Export
* Native [[CorelDraw]] file Import/Export (currently uses UniConvertor)
* DXF import/export
* Improved raster support via Gdk::Pixbuf
 
=== Milestone 18 - Inkscape 0.52 - Tech drawing abilities ===
 
User Interface Effort:
* Implement iso (DONE) & hex grid
* Editable toolbars (Gtk::Toolbar class)
* Geometrical constraints
** "Perpendicular-to", "Parallel-to", etc.
* Path trimming/extending/offset
* Filleting tool
 
Extensions Effort:
* Implement extension registry for users to upload/download extensions via Inkscape
* Dia-like smart shapes support
([[CAD]] and [[BlueprintGeometricAndTechDrawing]])
 
=== Milestone 19 - Inkscape 0.53 - Inkcore ===
 
* Separate sections of code into various libraries for use by other programs
** inkcanvas
** inkview
** inkscape
 
=== Milestone 20 - Inkscape 0.54 ===
=== Milestone 21 - Inkscape 0.55 ===


=== ??? - Inkscape 1.00 - Full SVG 1.1 support ===  
=== ??? - Inkscape 1.00 - Full SVG 1.1 support ===  

Revision as of 10:10, 25 February 2012

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, this roadmap should only contain items that really have a good chance of being done for the next release (which means, somebody is actually working on them).

NOTE 1: Because this document became completely separated from reality, I replaced it with a more realistic version that reflects what we're actually doing. --Tweenk 13:45, 31 January 2010 (UTC)

Milestones 0-13 have been completed since the start of the Inkscape Project. See OldRoadmap

Inkscape 0.48

0.48 is intended to be a quick release cycle focused on merging GSoC work and fixing some long standing bugs.

  • Merge and stabilize Google Summer of Code 2009 work
    • (DONE) Node tool rewrite
    • (DONE…?) Connector tool improvements
    • (POSTPONED) D-Bus scripting API
  • (DONE) Desktop integration improvements: solve the issue of broken files resulting from people unknowingly pasting bitmap images as links.
  • (DONE) Build system improvements: evaluate Waf as an unified build system for all platforms (Krzysztof)
    • to be considered for 0.49, branch at lp:~tweenk/inkscape/waf-build)
  • (DONE) Move code hosting to Launchpad
  • Windows port improvements
    • (DONE) move devlibs to a Launchpad project
    • (DONE) Rebuild C++ libraries using TDM-GCC to fix Launchpad bug #173116 - exceptions not caught across DLLs
    • (DONE) Upgrade Windows devlibs to recent versions of GTK and GLib to fix several Windows bugs
    • Make the uninstaller work

Inkscape 0.49

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

  • (DONE) Merge GSoC 2010 work
  • 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
  • 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).
  • Using the above mechanism, make flowed text SVG-compliant.
  • 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.

Long term goals

  • Better modularization: separate the Inkscape codebase into several libraries that could be used by other programs.
  • General refactoring: make Inkscape a joy to develop.
  • SP tree refactoring: Port the object tree to C++ objects.
  • XML refactoring: Remove direct manipulation of XML from as many places as possible and replace it with SP tree methods.
  • 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.
  • CSS support?
  • Animation support.
  • GtkMMification

??? - Inkscape 1.00 - Full SVG 1.1 support

Milestone [Future]