Open kalekundert opened 3 years ago
I can (and should) start this project by implementing the new kanban-inspired features (tags, planned/current/complete) in the CLI interface. This should be pretty straight-forward, except for having to replace the .id
file with a .meta
directory, and I'll be able to start using those features right away.
Experiment pages:
This article has some information on search engine packages available in python: https://blog.miguelgrinberg.com/post/the-flask-mega-tutorial-part-xvi-full-text-search
Packages include: Elasticsearch, Apache Solr, Whoosh, Xapian, Sphinx
After briefly looking into this, I think whoosh is the best option. It's probably the least performant, and also doesn't seem to be that actively maintained. But all the other options would dramatically complicate installation, because they are written in other languages (e.g. java, c++) and require running/communicating with a server process. Whoosh is pure-python and has no separate server. Since exmemo is meant to be installed by end-users, having a straight-forward installation process is the most important consideration.
Kanban-style statuses I'd like to have:
exmemo note new
Worried I have too many states, some of which may not be very useful. But for now I'm just going to cater to my own needs, and worry about generalizing later. Ex memo is somehwat opinionated in general, so this isn't even inconsistent with the bigger picture.
Need to add --prereq
argument to exmemo note new
, that will automatically add the new experiment as a prerequisite to its parent.
Kanobo seems to have the following statuses:
New commands:
-
prefix: remove tag+
prefix: add tag
Curently, the lab notebook is hosted as a static site; it's basically just a graphical way to view notebook entries. However, it would be nice if the web interface was more interactive and more customized to the lab notebook application. Some specific features that would be nice:
The underlying directory structure would remain the single source of truth, and "edit" actions by the web server would directly operate on the file system. Some more thoughts about the implementation:
_build
directory.*.rst
into nodes... toctree::
,:expt:
) might be hard./
: Dashboard-style views of current/planned/complete experiments./expt/<id>
: Show the requested experiment./tag/<name>
: Show all the experiments associated with the given tag./search/<query>
: Show a list of all the experiments matching the given query (with some context)..meta
directory to each experiment to hold information about ids and tags. Right now the only metadata is the.id
file in each experiment. Alternatively, I could keep the metadata in a single structured file (e.g. nested text) that contains ids and tags. A directory is probably more future-proof, though.Probably the first thing to play with is the Flask/Sphinx linkage. If I can get that to work, the rest should be pretty straight-forward and incremental.