Your plans for version 2.0

CodiMD 1.6.0 announced that it’s the last version of 1.x.

We want to go forward and develop a version which introduces some breaking changes. Version 2.0.

I already provided some thoughts to it in the community chat, but would love to have a bit more discussion about it over here.

Plans:

  • Remove the not so great embeddings and replace them with with URL-based replacements (i.e. instead of writing {youtube <some id>} just paste the link in a single line)
  • Rework configs as it’s done in a currently open PR (probably replace config.json with a config.yaml and getting rid of the split between dev, test and prod environments within the same file)
  • possibly rename if we come up with a good name on time
  • Add basic user profiles
  • Relocate notes to an own sub directory (from https://demo.codimd.org/<some uuid> to https://demo.codimd.org/n/<some uuid> or similar) but with backwards compatibility
  • Working towards having an actual, standardized API
  • Reworking internals towards TypeScript

To be clear, I can’t do all of this on my own, and it’s not a made decision, I want your input on it, but that’s at least my vision for 2020. I would love when there would be people who also want to work on the front-end and make some improvements towards UI/UX there as well. I really invite you to share your ideas with me in this perspective and I would like to setup some tasks on Github soon, so people who want to help, can easily find a spot to get their hands dirty :slight_smile:

Work has started: https://github.com/codimd/server/pull/280

3 Likes

It looks like a good plan! Out of curiosity, what is the reasoning for “Relocate notes to an own sub directory”, I have no objection to it, just wondering if there an open issue with more context that I can read to catch up.

1 Like

Main reason for the relocation is the conflict in free URL mode which causes things like documents existing at https://codimd.example.com/robot.txt which is rather bad. For now we fight this by having forbidden NoteIDs, but I think the better solution would be to move things into a sub-directory and define an API for it.

Although this thread is more than a month old and I didn’t contribute for about a year now I followed the story quite a bit and collected some thoughts.

First of all, though off-topic, I want to express my support for this project and honour @sheogorath’s fair attitude and open mind throughout the difficulties with HackMD.

Secondly, though I never compiled and thus seen @amenthes’s profile page I’m excited.

Feedback

  • TypeScript :+1: (thx @davidmehren)
  • API :+1:
  • Note sub directory: Although this makes things clearer and easier I’m not a huge fan of this.
    • I like short URLs
    • Maybe we should think about namespaces for users or even groups in this context
    • Maybe we could relocate UUIDs but leave the opportunity for even newly created freely chosen IDs (if they are activated)

Idea: Hooks

I think we are missing a hook system for the API/CLI, so we could hook Listeners on events to export the notes, do some stuff like a git commit or add support for WebDAV.

Taking inspiration from Android sensors, which accept sampling rates, we could define some approximately frequencies the listener could request, like:

  • live: every change (may cause heavy load)
  • minutely: every minute, if changed
  • revision: every saved revision
  • offline: when no user views the document (may never occur)

I guess this is a quite important feature for interoperability.

Further Ideas

  • Groups
  • Some way to structure and organise notes
  • File system-compatibility (WebDAV?) although no inotify
  • Full text search
  • Extensive tagging
  • Cross-document references
  • Frequently visited notes (quite related to the history data model)
  • Import websites (including bookmark link)
  • Better spell and grammar checking, maybe even something like Hemingway App or Grammarly
  • Lint the Markdown
  • Render preview with custom themes (useful for corporate design)
  • Custom designs
  • Make all features clickable (WYSIWYG-alike)
  • GUI for YAML metadata
  • Paste links in corresponding syntax
  • Plugin system, maybe based on APIs/FaaS
  • Exports with Pandoc!
  • Handle disconnects or even implement an offline mode
  • Add IPFS.io as an upload storage

Well, many ideas might be boo big or even unnecessary but I want to share them anyway, hoping that I get some feedback. I can elaborate on those in separate threads or issues, if somebody is interested. Do we have an ability to run some permanent ranking of the most wanted features by the way?

Tools like MS Word enable users without expertise to write whole books, while such as Evernote empower them to organise themselves. Although my personal preference is stability over functionality the extensive functionality was a strength of HackMD.
For me such tendencies are a good inspiration, how about you?