-
Notifications
You must be signed in to change notification settings - Fork 394
Planning
My personal goal is to drive zim towards an 1.0.0 release which would afford to reduce time spent on developing and maintaining zim while having a stable application that is maintainable for the future.
Below an outline of what I consider the scope of this "1.0.0" release and what is "nice to have". Upon reaching the milestone will also cleanup the bug tracker and close all kind of feature requests that are not in this list and are not actively pursued by their submitters in order to get a better overview of active issues.
What does version "1.0.0" mean?
- See https://semver.org/ for numbering scheme logic, consider what needs to be in 1.0.0 to avoid releasing 2.0.0 anytime soon
- Stable and complete basic functionality
- Stable interface towards plugins, custom tools & command line
What kind of changes can be introduced in 1.x.0 releases?
- Any features that can be implemented via a plugin
- Any feature in the core that extends functionality without taking away or changing object hierarchies used by plugins
- In specific new source formats can be added later but the default zim wiki format may be hard to extend without breaking edge cases, so goal to put all in that touches the format
- Setup "zim-plugin-template" repo as starting point for plugin development - make it such that git checkout in plugin folder adds the plugin in the list
- API documentation with sphinx using reStructuredText or similar -- issue #155
- Starting from class diagram ensure API documentation and annotation in place for all classes that are in active use by plugins
- Re-write user manual in a more "presentation" style text, focus on use cases / why you would use something
- Use Gtk3 window HeaderBar
issue #1233 - Create distinction between
NotebookViewandPageViewextensions, both allowed to fill the side pane - Improve multi-window navigation and editing with pop-outs vs new window -- impact on plugin interface
- Minimum API change to allow later redesign of sidepane -- see BlueprintSidepaneWidgets
- Refactor to use GtkApplication instead of zim.ipc module --
issue #338 #144 #175 - Get rid of "zim.fs" module -- removes API --
issue #107 - Get rid of "zim.parsing" module, remaining functions go into "zim.utils" -- removes API
- Refactor "zim.utils" in smaller sub-modules -- could change API
- Refactor "zim.gui.widgets" in smaller chucks -- could change API -- issue #227
- Let the page object own the textbuffer to allow multiple views of same page --
issue #111 #478 #153 - Refactor pageview in more maintainable code -- break up in multiple modules & plugins, then reduce deps between these -- including full test coverage
- Get rid of "etree" and make ParseTree opaque object based on tokens -- issue #114
- PageView images become objects as well
- Remove custom ordered dict class --
issue #592 - Deprecate
ConfigDict.setdefault() - Direct write INI files -- issue #674
- Copy-paste images between pages, copy source(s) as well --
issue #45 also see #929 and #930 - Handle (large) text files that are not zim pages --
issue #907-- alternative is no fix, but default to Markdown wiki format - Find within inline objects --
issue #384 - Undo within inline objects -- #203
- Markdown support -- issue #26 [BlueprintMarkdown]
- Index manual sortable -- extend internal API -- issue #32
- In page object data for e.g. equations -- changes plugins -- #841
- Wiki syntax for inline objects (not multiline)
{{type: attrib text}}and wiki syntax$$...$$and widget rendering inline vs block -- changes wiki syntax -- #841 - Nested formatting -- changes wiki syntax --
issue #305 - Links to headings with
page#anchor-- could change wiki syntax --issue #978also see issue #417 also see BlueprintTagsAndAnchors
- Window class separate from view with panes
- Use a Gtk3 stack to switch view in mainwindow for e.g. search and tasklist instead of dialog
- Hamburger-button menu instead of traditional menu bar (optional)
- Remove hacks for table object
(https://github.com/zim-desktop-wiki/zim-desktop-wiki/wiki/BlueprintMarkdown) -- although having this can solve several hard issues as marked above
- Tables with full functionality -- extend internal API for embedded pageview -- issue #818 see also #431 #503 #591
- Refactor search to allow plugins add keywords, and re-use query parsing for tasklist -- keep in mind allowing backend speed improvements as well -- issue #64
- Improve search performance -- issue #881 #64
- Allow paste HTML -- issue #149 #441
- A "paste as" option -- issue #51
- Allow to "pin" pages on top of index (like bookmarks)
- Better tasklist support for GTD lists
- Redesign of sidepane to allow packing multiple small widgets -- see BlueprintSidepaneWidgets
- Tasklist search filter language and saved filters (user defined lists)
- Tasklist to also show completed tasks + insert completion date option (like todo.txt)
- Journal index all dates and show in right hand side pane as "related"
- Attachmentsbrowser also show folders that are not a page
- Related pages (tag, backlink, date) in right hand pane -- issue #39 #40
- Autocompletion while typing tasks or links
- Data-table plugin (tree widget instead of pageview table) - also way to visualize CSV attachments
- Blockdiagram plugin
- PlantUML plugin
- Matplotlib plugin
- Mindmap plugin
- Plugin for database fields on pages
- Plugin for admonition blocks
- Plugin for inline "foot"notes -- render icon, show content in buble
- Plugin Python snippets throughout the page + run action
- Functionality for resolving conflicts - e.g. merge git, file sync
- Alternative filesystem layouts (e.g. flat or folder per page) -- issue #54
- Cross-references to objects (pages, headings, images, ...) throughout the notebook
- Aliases for linking pages under different names
- Saved searches / keyword index (with aliases)
- Sticky notes plugin (replace quicknote?)
- Photo album plugin
- Colored "sections" for top level pages, via tabs or via folding index pane
- ....