Organice: An implementation of Org mode without the dependency of Emacs
github.com
github.com
Full independence seems inprobable, or at least I cannot imagine anyone adding support for all the external types: https://orgmode.org/manual/External-Links.html. IMO Org is a markup language imersed into Emacs, and there is nothing wrong with that.
I also think the syntax is just very nice to work with and I prefer it over markdown, so having more options to use it is certainly good.
It is one of the reasons I love emacs so much: there is so little interface in the way of doing what you want to do. If you like you can compile, debug, use lsp, read rss, manage your agenda, do any damn thing you want- but at its core emacs is just an extremely capable text editor that enables you to do your thing.
It is not a server that serves pages that can be displayed well on phones as written by GP.
No, I do not deny that it needs a web server. It also needs no docker. Any old Apache or Nginx would do just as well.
Good to see Swiss made software on here. Greetings from Japan!
Indeed, I doubt it that anyone would try to cram handling of very different types, protocols and workflows into one app—other than Emacs, of course. Especially on a phone.
These days, custom protocols are a standard way to call external applications via links. So instead of sticking to Org's standard protocols, one could use those that are handled by applications that the person uses, particularly on a phone. It's actually possible to create handlers for Org's protocols, even on phones, and redirect the links to apps—but it's likely easier instead to use available protocols on phones and override them in Org or generally on the desktop, redirecting to modes and apps there.
Also, variations of the ‘share’ functionality are used nowadays when there's more content than a one-line link—and similarly, with some fiddling it's possible to define custom handlers and workflows for that. Personally I'm using the Automate app on Android.
So I spend a lot of time daydreaming about something like org-mode that is available across all my devices, perhaps something I can share with my family so we can coordinate.
What I am slowly realizing is it's not the features that I am missing from existing productivity/note/todo mobile interfaces ... it's the keyboard.
I am a keyboard oriented person, so no matter how snappy or feature rich a mobile interface is it will always feel sluggish to me. Maybe it's just a matter of getting used to, but for now I am stuck being un-organized. And tbh, I don't know if there is a solution other than having an open laptop with me at all times. Anyone else feels this way?
Org mode is good and all but my god listening to people talk about it makes it seem they are building a fucking rocket by themselves based on how convoluted and massive their notes are. For regular people who just want notes that are searchable and connectable VimWiki is awesome.
You can switch it over to Markdown but you lose a couple features IIRC.
I have a pretty extensive vimwiki, but it's only available on my laptops. I sync it via Git and have to remember to commit and push or it won't be available on another device.
I did hack up a simple React/Go app a while back to give it a web interface with a simple WYSIWYG editor I could access from my phone, with auto-commit/auto-push, but I ultimately haven't really used it.
Honestly if you just want linkable and searchable notes plain text with tags and whatever flavor of grep floats your boat will get you there.
Lol. So you mean that airport and rental car agents are really just typing away in org mode in Emacs back there? :p
That's extremely valid. Our brains are often highly contextual and the context of having a physical keyboard is different from a soft keyboard on a touchscreen (or trying to use voice dictation).
I picked up a bluetooth keyboard (from Microsoft's hardware division incidentally) that folds up in half and can fit in many of my pockets when not in use, and there is something to be said about carrying just that and my iPhone and being able to write with a physical keyboard just about anywhere. It's an easier way to bring that particular writing context along with me than needing a laptop in a backpack or messenger bag. It's certainly impacted my writing productivity (for the better) for projects like NaNoWriMo.
Disclosure: I authored Plain Org and Flat Habits.
My dream is that Org is implemented in layers instead: a low-level Org API deals with the text and provides concepts of headings, lists and such, the internal ‘business logic’ uses those, and the interface and user commands are built on top. Then extensions to Org, like my personal functions and customizations, can also operate on the higher-level concepts, instead of having to mess with text regularly or to keep in mind how each function moves the cursor.
Another dream is that Elisp is implemented as a standalone embeddable engine, instead of being conjoined with Emacs. Thus, if the two dreams merge, third-party applications could embed elisp, have their own low-level Org API that uses the app's structures, with their own interface plugged into that—but borrow logic from Org and bolt other scripts and customizations onto it. Like, I could just copy my scripts from the desktop onto the phone. That's my kind of PIM.
Of course, there would be limitations, like working with snippets in other languages, which unavoidably relies on Emacs' text APIs. But personally I can sacrifice that on the phone, just as I do now with Orgzly.
Remacs seemed to be the next hopeful, but apparently is also abandoned for the past two years: https://github.com/remacs/remacs
As I wrote right there, the embedding app could have its own implementation of low-level Org parts, talking to the app's internal structure and storage.
Running the whole of Emacs on a phone, and with tons of crosstalk to emulate the display, and with logic in the app to process that emulated display and convert into the actual interface, would be bonkers, which is why no one does that. Completely wrong level of abstraction—it's just the same problem of too much low-level fiddling, amplified into an entire inter-app API.
Say I have a node. I want all the children in some form (tree, list, whatever).
Say I want to move a node and all its children from one location to another.
Given a node, I want its text, but not its children.
Given a node with a subtree, I want to manipulate the document so that it becomes flat. All its (nested) children are elevated to the level just under the node.
I want to compare if two nodes are "equal" (same text, and recurse downwards).
Given a node with a subtree, I want to traverse in some order of my choosing (DFS, BFS, etc).
I want a count of how many child nodes there are (1st level)
I want a count of how many children there are (all levels).
The API may have some of these, but likely not all of them. All of these are trivial in Leo, as Leo gives this to you as a tree. Most of Org's API involve some level of parsing, manipulating the cursor, etc.
The main reason I haven’t done it myself is because I've used Emacs for over two decades and I don’t mind it’s idiosyncrasies anymore than I mind that lisp has parentheses.
> organice has a custom parser for Org files. It works quite fine and has unit tests to prove it. One of the quality goals for the parser is that when it parses and re-exports an Org file, it should not change the original file. Not seeing unrelated diffs is important for the productivity of the user. It sounds trivial, but lots of alternative products do not live up to this expectation.
organice has no such performance issues (and does not run on the JVM). I use it daily with 5k LOC files.
It's very mobile oriented and while it works on a desktop browser, it's not optimized for one (especially screen width -- though there are some patches/hacks in the GH issues).
Personally I use Orgzly on mobile (with Syncthing). One feature I would absolutely miss with Organice is notifications for scheduled events and deadlines. Having these things reminding me on my connected smartwatch is a killer feature for Org mode.
I'm using organice with my on-technical wife for all kinds of tasks and it works well. She even introduced it at her workplace(;
I agree that notifications are very important to have. For the time being, I'm using this workflow: https://200ok.ch/posts/2022-02-13_integrating_org_mode_agend...
Of course, this workflow is only for a technical (Emacs) user. The reason having gone this way is that iOS does not allow for web notifications. Having said so, I'm also currently working on a branch to integrate customizable reminders and deploy organice into the Android and iOS stores. Then it'll have native notifications on all available platforms.
> We forked the project, because we have different visions on how to go forward. He envisions a mobile only solution, we think it’s great to have organice be available to any browser to enable anyone on the go or any non-Emacs user easy access to Org files. Also, DanielDe thinks of org-web as his pet project whereas organice has the full power of 200ok llc behind it whilst building a strong self-sufficient community around it.
Took too long to find, IMO. Especially for something with a code base apparently so close I'd have deemed it more fitting to mention "fork of" within the first page or just mark it through the Github "forked from" feature. But instead the name org-web isn't even prominently featured anywhere. I think that's just not great style.
As for bad style, the same could be said about a random person in a forum shaming the many hours of work by a diverse group of hard working individuals putting their work up for free.
Regardless of your intentions or how truthful that is, this bit will only make the point your trying to make weaker and needlessly antagonize any potential user.
Or, if you want a shorter version, you unintentionally made yourself look like a dick here.
I've ended up using Logseq. Which, by the way, can also operate on Org mode files, but I chose to stay with the default Markdown (since I don't find the Org mode ecosystem all that appealing). It doesn't exactly have the same goals and not all of the planning features, but I find that it fits my requirements quite well (as a "normal", "modern" looking application). Oh, and it has nice keyboard commands too :-)
A while back I saw an effort to create an orgmode syntax standard called orgdown, I hope some sort of standard can be agreed on other than whatever the current orgmode package supports. I think orgmode is a beautiful syntax that has nice advantages over markup, and I'm excited to see it venture beyond desktop emacs.
Having said so, since orgdown is a subset of Org mode, organice fully supports orgdown. Technically and as a project.
Remember the now infamous thread where the Dropbox founder was sharing his work and people were saying it was useless since rsync existed?
Not sure I trust … you know it is probably the most important bits and pieces of my life. Especially action list. And it is another windows and in a different context as well (browser not terminal shell).
**
Btw, I like vim in iOS. Under ssh to aws. With working-copy it is all good except the organisation part.
I use tmux attach to get back to my current state of operation. But it is not in 1 screen but quite a few. iOS meant textastic tab. It is not that convenient. But I can live.
If I am in macOS, the gvim (-Gtk) seems to work only sometimes in multi-os (not vim) windows mode (eg ^wL sometimes work sometimes not).
Btw, as gui in macOS need to be in the same swank thread, it is quite a lot of actual os (not vim) windows.
**
Keyboard issue raised here I am a bit odd. Other than I really do not like meta cntl key combinations in emac, i am ok even with iOS soft keyboard. (Better the tailored one with textastic of course.)
In my experience org files break very easily between releases of Emacs/Orgmode. I've spent a lot of time updating orgfiles at each release. Often certain behaviors are just removed and you can't bring them back
Lately I've given up and switched to Asciidoc.. No nice editor integration and literate workflow, but at least I'm not chained to one editor that randomly changes stuff at each release (+ the syntax is nicer)
This is a non-issue - Org mode treats them as case insensitive.
I've used org mode for over a decade and have had few compatibility issues. Of course, I can see that if you use a lot of advanced features + elisp, you'll have more.
Does org-mode have encryption mode? Where all the files and maybe their names get encrypted on disk?
That's a must have for me for the multiple devices scenario with storing data on 3rd party service.
Right now I'm using obsidian because it has client side encryption, but it's not open source so not optimal.
I guess it doesn't.
for example:
encryptedfile.org.gpg
* someheading
:PROPERTIES:
:ID: bf15277c-8505-4888-9497-a5533829217d
:END:
EOF
otherfile.org
[[id:bf15277c-8505-4888-9497-a5533829217d][this link will work]]
EOF
I'm not sure about agenda and file completion though.
I have been using this for my logseq notes synced across multiple computers (through a private git repo) and works fairly well.
On desktop, encrypting files is usually easier done in separate software, like Veracrypt or the multiple Linux filesystems. However, it's rather slim pickings for that on phones—Cryptomator is one that does that (iirc), but it's actually not open-source for phones.
Limited networking is not a big issue, because organice can cache your Org file locally until you can sync later.
If you do get around to building an SMS to Org mode gateway, I'd be interested to see a post about it, though. Good luck with it!
1. https://organice.200ok.ch/documentation.html#capture_templat... 2. https://organice.200ok.ch/documentation.html#bookmarklets 3. https://organice.200ok.ch/documentation.html#siri_integratio...
(Preferably in rust, since I'm learning it rn)
I am using it in a data-driven program to extract multiple tables from a single file. CSV is too limited with only one table layout per file, and trying to read multiple sheets from a binary spreadsheet format is far too complex. Org files let me edit tables in a plaintext format that even lets me attach attributes to tables, and file tables under headings that describe what they are.
They do take slightly different approaches, though. orgzly is an Android application. organice is a PWA, so you can install it on Android, iOS, or use your desktop browser.