


        Contents of this TODO file:

        - Frescobaldi paradigm
        - TODO and wishes for Frescobaldi 2.x
        - ROADMAP for Frescobaldi 3.0
        - Other ideas/wishes


Frescobaldi paradigm
====================

With all the feature ideas, Frescobaldi should remain a simple and
straightforward application to use.  Which means:

- Not too much configurability. Just good defaults
- Shortcuts for the basic tasks
- Quick startup by loading modules only when the user requests a certain action
- Predictable behaviour
- Coding: separation of concerns, messages, modularity, encapsulation

See also README-development.


TODO and wishes for Frescobaldi 2.x
===================================

- LilyPond context help

- wizard to download and unpack LilyPond documentation and/or LilyPond itself

- Load .ly file specifying other encoding than UTF-8
  (this can be done from the command line but not via the user interface)

- interface for running lilypond-book

- Midi input and import. Probably using a basic sequencer, allowing changes,
  corrections and quantizing touchups before putting the LilyPond representation
  in the editor.
  * mamoch is working on Midi input like the 1.x rumor did.

- tool to separate out things from music and attach them to invisible rests (s)
  in a separate expression

- check or even auto-insert bar checks

- editing via Music View:
  * relevant context menu on right-clicking object
  * drag an object to e.g. create an \override #'extra-offset command

- Table of Contents support in qpopplerview
  stub: qpopplerview/toc.py


ROADMAP for Frescobaldi 3.0
===========================

At a certain point, master will become Frescobaldi 3 and Frescobaldi 2 will
get it's own branch "v2"

1. Use Python 3 (Frescobaldi 2.0 should also run with Python 3)

2. Require and make use of PyQt5 and Qt5 (recompile/update poppler-qt4)

3. SVG music view and editor
   
   Make a new music view that displays the SVG output of LilyPond and allows
   for very fine-grained editing, both via altering the LilyPond source but
   also editing and saving the SVG file manually to provide a final PDF
   rendering. Probably using QGraphicsWebView.


Other ideas/wishes
==================

- continuous autocompile (run LilyPond whenever deemed suitable)
  stub: engrave/autocompile.py

- support for Git/Hg/Svn diff/revert/commit

- play from cursor: plays music to MIDI output

- editor:
    * context menu (with help, open filename, etc)
    * if matching brace out of view, popup a small display of it (idea:
      Franciso Vila)
    * vi-mode (stub: vimode/)

- define and extend api for script snippets

- make Frescobaldi api (using pydoc) browsable via the helpbrowser.

