ROADMAP.md
Given the rapid growth and adoption of Neorg it's critical that a development plan is established to not only help the development team keep track of progress but to also facilitate and encourage contributions from the flourishing community.
This file is written and maintained in Markdown for easy viewing on GitHub.
It will be switched to a .norg file when possible.
core.clipboard.code-blocks work with a visual selection.core.maneouvre module, which has been deprecated since 1.0.a and b commands in the hop module are not implemented.sc-imesque Table EditorTo achieve the above, a set of cross-platform tools must be initially developed. For the motivation behind this, see the external tools section.
The calendar is a planned sophisticated and flexible tool for selecting a date. While it sounds rather trivial, the calendar is the main user interaction for any date related operation. Because of this, there are many components to a calendar.
At its core the calendar is simply supposed to allow the user to select a date. This is such a vast concept however that the calendar should be able to handle a variety of situations/contexts.
Depending on the preferred context, the calendar should be able to work in four
major views - DAILY, WEEKLY, MONTHLY and YEARLY. Each mode has a
different layout fit for the task at hand, and displays varying amounts of
information based on said view.
As with all things Neorg, other modules should be free to create their own views via an API. Apart from just creating views, any module should be free to add "custom data" to the view, which the view should be able to handle appropriately through a set of default API functions. An example of this may be the GTD module, which could display all the tasks for a day in the daily view, or it could highlight a day as red in the monthly view if there are urgent tasks that have not been yet completed.
The user experience comes first - the keybinds should be as close as possible to vim, with
slight deviations if the keybinds hinder the "mnemonic" keybind model, where a sequence of words
(e.g. delete around word) can be converted to a set of keybinds (daw).
Walled gardens? No thanks. Conversion from (and to) .norg and Neorg workflows should be
hassle-free.
.norg file format. Work has begun (but is currently stalled)
in the following PR. There is also an incomplete
pandoc parser written in Haskell here, so if you
have some Haskell skills then this is your time to help out! :).org to .norg, and vice versa.
Org and markdown are the most common formats to convert to .norg, and whereas markdown can
be handled just fine by pandoc, org may need some extra fine tuning to work effectively. We'd
like for Neorg to be able to "understand" workflows within emacs's org-mode, such as the
inbuilt agenda view and others, and convert them into the Neorg-appropriate counterpart.External tooling is a great way to help Neorg see adoption in spaces other than Neovim. While the
best features will remain within the Neorg plugin for Neovim, writing tools for .norg and for
Neorg should not be difficult nor discouraging. As a result, we'll create and maintain a set of
embeddable-anywhere tools. These include:
.norg. Because Norg is a well-standardized format, many parsers can be created
for it without forming annoying "dialects". Currently, the most well supported parser is the
tree-sitter parser, which is embeddable essentially anywhere thanks to its library being written
in C.
Apart from tree-sitter, work-in-progress
parsers can be found for many languages like rust,
zig,
haskell and
julia!n amount of clients.A logistics question - how do these libraries play with Neorg in Neovim itself?
All of the libaries we mentioned will be written in Rust, and via cbindgen we will
generate .o/.so library files that may be used anywhere, including Neovim.
Lua has great support for importing shared library objects, so all that it takes
is a Github action that compiles e.g. the GTD backend library, pulling in all dependencies,
packing it into a small .so, and then shipping it directly with Neorg!
A mobile tool for Neorg would greatly increase it's adoption range thanks to portability. Such a mobile application could utilize all of the external tools written by us to ensure that it's consistent in behaviour with all of the other Neorg tools in the ecosystem.
Features of a mobile application would include:
Do not worry, we're not a new startup overhyping AI thinking it will change the world. Also don't fret, we will not use AI like most companies as a tactic to collect and send information to servers for data analysis.
We strongly believe that for a specific and specialized subset of tasks artificial intelligence (or, more specifically, natural language processing tools) are a novel way to aid in note taking. All models shipped by Neorg would not be in the main Neorg package, but as addon plugins. These addon plugins would ship with the model placed locally on your machine, and no contact with an external server would be required to use these models.
There are currently only three use cases that we would like to use natural language processing for, and these are:
All of these plans are for the very far future, long after GTD and Zettelkasten are complete. However, if you have experience in training such models or would like to help, then do not hesitate!