Difference between revisions of "Dev:Software roadmap"

From Synfig Studio :: Documentation
Jump to: navigation, search
m (User Interface)
 
(80 intermediate revisions by 12 users not shown)
Line 1: Line 1:
A software roadmap is in the process of being developed. My task at the moment is figuring out what all I will be implementing over the next 4-6 months and [[wiktionary:quantum|quantize]] it into specific discrete steps. This way everyone should know when to expect specific types of functionality. If you would like to lobby for specific functionality to be implemented sooner than what is stated, please discuss it in the [[Talk:Software roadmap|talk page]].
+
A software roadmap is in the process of being developed. If you would like to lobby for specific functionality to be implemented sooner than what is stated, please discuss it in the {{l|Talk:Software roadmap|talk page}}. See the {{l|Roadmap}} page for a list of defined goals for each release.
  
 +
Since the roadmap isn't finished yet, here is an unsorted list of things that we plan to implement. Also see the  [http://sf.net/tracker/?group_id=144022&atid=757419 feature requests tracker], the [http://svn.voria.com/code/ETL/trunk/TODO etl], [http://svn.voria.com/code/synfig-core/trunk/TODO synfig] and [http://svn.voria.com/code/synfig-studio/trunk/TODO synfigstudio] TODO files and the {{l|Wish list}} page for more ideas.
  
Since the roadmap isn't finished yet, here is an unsorted list of things that I plan to implement:
+
== Roadmap ==
  
* '''Optimizations'''
+
=== Fixes ===
** Change the way surfaces are stored in memory from chunky to planar. This alone should provide significant speed improvements, as well as pave the way for hardware optimization.
+
** Support for arbitrary [[color channels]]
+
** Support for customizable [[color mixing gamma]]
+
* '''User Interface'''
+
** Re-write the canvas properties dialog, as it is currently too awkward and confusing
+
** Reimplement the [[draw tool]] so that it is actually useful
+
  
There is certainly much more that I haven't mentioned, but it's a start.
+
* Fix the rest of the crashes
 +
* Portability fixes
  
 +
=== Features ===
  
== Timeline Test ==
+
* new import/export formats (svg, swf, etc)
This is just me testing out the [http://meta.wikimedia.org/wiki/EasyTimeline timeline feature] in mediawiki.
+
* sif format documentation
<timeline>
+
ImageSize  = width:160 height:550
+
PlotArea  = width:50 height:530 left:50 bottom:10
+
  
DateFormat = yyyy
+
=== Under-the-hood changes ===
Period    = from:1910 till:1965
+
TimeAxis  = orientation:vertical
+
ScaleMajor = unit:year increment:5 start:1920
+
  
PlotData =
+
* Redesign the render target class
  color:red fontsize:S                              # set defaults
+
** current implementation doesn't handle large images very well
  bar:USSR from:1919 till:1922 text:Lenin            # red bar
+
* migrate API to be more language agnostic
  bar:USSR from:1922 till:1953 text:Stalin          # red bar
+
* Add support for arbitrary multiple color channels
  bar:USSR from:1939 till:1945 text:WWII color:green # green bar
+
* Add support for customizable mixing gamma per canvas
  bar:USSR from:1953 till:1964 text:Krushchev        # red bar
+
* Start migrating toward a script-friendly API
 
+
* Implement garbage collection of synfig nodes
  color:blue                                        # change default color
+
* Re-write or replace the "Simple Text" layer for proper font support. Current implementation is gnarly.
  bar:US from:1913 till:1921 text:Wilson            # blue bar
+
  bar:US from:1917 till:1918 text:WWI color:green    # green bar
+
  bar:US from:1921 till:1923 text:Harding            # blue bar
+
  
#> this multiline comment does not end command PlotData,
+
=== Optimizations ===
  even when the previous line does not start with a space<#
+
  
  bar:US from:1923 till:1929 text:Coolidge          # blue bar
+
* Change the way surfaces are stored in memory from chunky to planar. This alone should provide significant speed improvements, as well as pave the way for future hardware optimization. (like Apple's new [http://www.apple.com/macosx/tiger/coreimage.html CoreImage])
 +
* Support for arbitrary {{l|color channels}}
 +
* Support for customizable {{l|color mixing gamma}}
  
</timeline>
+
=== User Interface ===
 +
 
 +
* {{l|UI_Reloaded|UI overhaul}}
 +
* Re-write the canvas properties dialog, as it is currently too awkward and confusing
 +
* Reimplement the {{l|Draw_Tool}} so that it is actually useful
 +
* Rewrite state_draw to handle simultaneous creation of region/bline/curve gradient, like state_region. ({{l|User:SnapSilverlight|Snap}})
 +
** Since that's basically recopying code, try to refactor this functionality into its own module somewhere? ({{l|User:SnapSilverlight|Snap}})
 +
 
 +
== TO-DO ==
 +
 
 +
'''''(Synfig-Studio)'''''
 +
 
 +
* Objectify Synfig-Studio's representation of Synfig-Core's types
 +
** Build datatypes for Studio visualisations
 +
*** Implement 'shell' datatypes for existing Synfig types.
 +
**** Studio Layer datatype
 +
***** Create initial definition of this datatype and add to project
 +
***** Insert code into selection functions to store references to ducks on "studio layer" type when selected.
 +
***** Add functions to "studio layer" type to select specific ducks on layer.
 +
* Rework and extend layer-search system.
 +
** "The layer should provide a virtual function for determining if the layer is clickable at the given point or not -- a bool. This will allow you to implement different types of traversals/filtering" -- darco, on IRC
 +
** "Actually, I think there will still need to be a virtual function which handles the traversal case, and have it use the bool function... Things can get complicated if you had a layer that had two canvas parameters" -- darco, on IRC
 +
* Build a public interface for DuckMap (duckmatic.cpp/208)
 +
(From the code)
 +
;'''src/gtkmm/cellrenderer_timetrack.cpp''' (161)
 +
:Add in RangeGet so it's not so damn hard to click on points
 +
;'''src/gtkmm/cellrenderer_timetrack.h''' (104)
 +
:Make multiple... on both time and value select...
 +
;'''src/gtkmm/duckmatick.h''' (208)
 +
:need a public interface for DuckMap
 +
;'''src/gtkmm/widget_timeslider.h''' (78)
 +
:Fill out blue pill stuff
 +
;'''src/synfigapp/blineconvert.cpp''' (496)
 +
:Tolerance should be set based upon digitization resolution (length dependent index selection)
 +
;'''src/synfigapp/blineconvert.cpp''' (584)
 +
:Must be sure that the break points are 3 or more apart then must also store the breaks which are not smooth, etc. and figure out tangents between there
 +
 
 +
== Needs //Comment// Doc ==
 +
 
 +
;'''src/gtkmm/app.h''' (file header brief)
 +
;'''src/gtkmm/canvasview.h''' (546)
 +
:rebuild_ducks()
 +
;'''src/gtkmm/cellrenderer_timetrack.h''' (142)
 +
:property_enable_timing_info_;
 +
;'''src/gtkmm/duck.h''' (79)
 +
:class Duck
 +
;'''src/gtkmm/duck.h''' (155)
 +
:set_tangent(bool x)
 +
;'''src/gtkmm/duck.h''' (158)
 +
:get_tangent()
 +
;'''src/gtkmm/duck.h''' (175)
 +
:set_type(Type x)
 +
;'''src/gtkmm/duck.h''' (178)
 +
:get_type()
 +
;'''src/gtkmm/duckmatic.h''' (367)
 +
:set_type_mask(Type x)
 +
;'''src/gtkmm/duckmatic.h''' (370)
 +
:get_type_mask()
 +
;'''src/gtkmm/duckmatic.h''' (388)
 +
:Duckmatic::Push
 +
;'''src/gtkmm/duckmatic.h''' (407)
 +
:Duckmatic::Bezier
 +
;'''src/gtkmm/duckmatic.h''' (421)
 +
:Duckmatic::Stroke
 +
;'''src/gtkmm/instance.h''' (file header brief)

Latest revision as of 15:28, 28 June 2010

A software roadmap is in the process of being developed. If you would like to lobby for specific functionality to be implemented sooner than what is stated, please discuss it in the talk page. See the Roadmap page for a list of defined goals for each release.

Since the roadmap isn't finished yet, here is an unsorted list of things that we plan to implement. Also see the feature requests tracker, the etl, synfig and synfigstudio TODO files and the Wish list page for more ideas.

Roadmap

Fixes

  • Fix the rest of the crashes
  • Portability fixes

Features

  • new import/export formats (svg, swf, etc)
  • sif format documentation

Under-the-hood changes

  • Redesign the render target class
    • current implementation doesn't handle large images very well
  • migrate API to be more language agnostic
  • Add support for arbitrary multiple color channels
  • Add support for customizable mixing gamma per canvas
  • Start migrating toward a script-friendly API
  • Implement garbage collection of synfig nodes
  • Re-write or replace the "Simple Text" layer for proper font support. Current implementation is gnarly.

Optimizations

  • Change the way surfaces are stored in memory from chunky to planar. This alone should provide significant speed improvements, as well as pave the way for future hardware optimization. (like Apple's new CoreImage)
  • Support for arbitrary Color channels
  • Support for customizable Color mixing gamma

User Interface

  • UI overhaul
  • Re-write the canvas properties dialog, as it is currently too awkward and confusing
  • Reimplement the Draw Tool so that it is actually useful
  • Rewrite state_draw to handle simultaneous creation of region/bline/curve gradient, like state_region. (Snap)
    • Since that's basically recopying code, try to refactor this functionality into its own module somewhere? (Snap)

TO-DO

(Synfig-Studio)

  • Objectify Synfig-Studio's representation of Synfig-Core's types
    • Build datatypes for Studio visualisations
      • Implement 'shell' datatypes for existing Synfig types.
        • Studio Layer datatype
          • Create initial definition of this datatype and add to project
          • Insert code into selection functions to store references to ducks on "studio layer" type when selected.
          • Add functions to "studio layer" type to select specific ducks on layer.
  • Rework and extend layer-search system.
    • "The layer should provide a virtual function for determining if the layer is clickable at the given point or not -- a bool. This will allow you to implement different types of traversals/filtering" -- darco, on IRC
    • "Actually, I think there will still need to be a virtual function which handles the traversal case, and have it use the bool function... Things can get complicated if you had a layer that had two canvas parameters" -- darco, on IRC
  • Build a public interface for DuckMap (duckmatic.cpp/208)

(From the code)

src/gtkmm/cellrenderer_timetrack.cpp (161)
Add in RangeGet so it's not so damn hard to click on points
src/gtkmm/cellrenderer_timetrack.h (104)
Make multiple... on both time and value select...
src/gtkmm/duckmatick.h (208)
need a public interface for DuckMap
src/gtkmm/widget_timeslider.h (78)
Fill out blue pill stuff
src/synfigapp/blineconvert.cpp (496)
Tolerance should be set based upon digitization resolution (length dependent index selection)
src/synfigapp/blineconvert.cpp (584)
Must be sure that the break points are 3 or more apart then must also store the breaks which are not smooth, etc. and figure out tangents between there

Needs //Comment// Doc

src/gtkmm/app.h (file header brief)
src/gtkmm/canvasview.h (546)
rebuild_ducks()
src/gtkmm/cellrenderer_timetrack.h (142)
property_enable_timing_info_;
src/gtkmm/duck.h (79)
class Duck
src/gtkmm/duck.h (155)
set_tangent(bool x)
src/gtkmm/duck.h (158)
get_tangent()
src/gtkmm/duck.h (175)
set_type(Type x)
src/gtkmm/duck.h (178)
get_type()
src/gtkmm/duckmatic.h (367)
set_type_mask(Type x)
src/gtkmm/duckmatic.h (370)
get_type_mask()
src/gtkmm/duckmatic.h (388)
Duckmatic::Push
src/gtkmm/duckmatic.h (407)
Duckmatic::Bezier
src/gtkmm/duckmatic.h (421)
Duckmatic::Stroke
src/gtkmm/instance.h (file header brief)