Hacker News new | past | comments | ask | show | jobs | submit login
Organice: An implementation of Org mode without the dependency of Emacs (github.com/200ok-ch)
221 points by Tomte on May 27, 2022 | hide | past | favorite | 89 comments



I don't think the point is so much that it does not depend on Emacs, but that it is a phone application.

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.


Agreed, feature parity seems too high a goal to reach. But being able to peruse and even change my notes on the fly is a very attractive option, even if my main interaction is through emacs.

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.


I use Orgzly on mobile and while I prefer emacs for any serious work, it works just well enough to capture my thoughts, URLs, etc..


I've used Orgzly a while back, but I haven't gotten around to setting up sync to my notes again when I moved them. While it's great- And here again, the many sync options are amazing!- I found the interface a bit cluttered, it got in the way of simply writing what I wanted to write. That's very subjective though.

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.


+1 for Orgzly. I sync the notes from Orgzly to my computer using syncthing. This way I can create outlines in Orgzly and complete details on my Computer.


yea, embedding elisp in links, a feature I love, wouldn't be possible for example.


From what I gather it's a server the serves pages that can be displayed well on phones. The notion of phone application makes me think of something else - but maybe I'm just old.


organice is not a server that serves pages that can be displayed well on phones. It is a standalone application that runs in your browser (phone or desktop) and is capable of not only displaying, but also editing your Org files.


Very interesting project. I've recently switched todolists and journals to text files on google drive. Editing on mobile is not an optimal experience, but it feels great not being locked in. Might be worth highlighting that it's all text files?

Good to see Swiss made software on here. Greetings from Japan!


Okay, it's a PWA that is served from a server. The code in the repo is the code for that server. (We could waste some time defining "server".) You wouldn't deny that? Docker containers don't run on phones. But I agree the borders get blurred with PWAs.


Organice is a front-end application. As you said a PWA or SPA.

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.


You are right, I had it confused with https://orgzly.com.


organize is similar to orgzly in that it is a standalone application that runs in your browser (phone or desktop) and is capable of not only displaying, but also editing your Org files.

It is not a server that serves pages that can be displayed well on phones as written by GP.


> I cannot imagine anyone adding support for all the external types

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.


As a vim user I don't use org-mode, but I take notes in way too many places: google keep, docs and random text-files. Then I always forget about where they are and trying to find them in the wrong place.

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?


> 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.

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.


Have you tried vimwiki? It's vim, it's text so you can copy stuff from wherever.

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.


Contrariwise, I absolutely love org-babel. When I’m taking notes learning a new system I can embed runnable examples and their results in my notes.

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.


> 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.

Lol. So you mean that airport and rental car agents are really just typing away in org mode in Emacs back there? :p


vimwiki is pretty good, but it uses a proprietary vimwiki format.

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.


You'll usually lose features resorting to Markdown and who knows what features you'll have with all the 'flavors'. I really wish it started losing ubiquity to competiors that are more usable and more standardized.


Org mode is wonderful and I use it any time I'm on the computer. However, I'm not satisfied by any of its mobile interfaces. That's the major weak point in my view.


Have you tried orgzly?


perhaps a combination of logseq, syncthing and jekyll for read-only publishing is an option?



Note that not all of this software is free (as in freedom), which is particulary unusual for Emacs-related software.


Emacs packages, and Org specifically, tend to have a hands-on approach to editing files: Emacs' API relies on moving around the cursor (‘point’) and doing stuff in its vicinity, and Org has rather little abstraction on top, basically jumping from user-visible commands straight to this fiddling.

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.


Well I think the first is kind of what orgdown is trying to do. https://karl-voit.at/2021/11/27/orgdown/ As for the second doesn't guile have a feature complete elisp implementation?


Afaik Guile is now persistently in the state of ‘kinda done’—it got bogged down in lexical scope or something like that, and no progress is seen for a quite a while.

Remacs seemed to be the next hopeful, but apparently is also abandoned for the past two years: https://github.com/remacs/remacs


Elisp as an embedable engine would be cool, but it would still need lots of the other parts of Emacs, e.g. the buffer data structure. A more realistic approach would be to implement some kind of FFI/RPC display type in emacs and compile the whole of emacs as a library or with emacsen.


> it would still need lots of the other parts of Emacs, e.g. the buffer data structure

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.


I think it would be interesting to build an orgmacs distro, probably building on Nicolas Rougier’s excellent work. Basically, present it as a standalone note taking tool with “modern” keybindings and appearance and have Emacs just be an implementation detail. “Powered by Emacs” would be in the branding somewhere to give credit, but not front and center where it’ll scare people off.

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.


spacemacs within for example aquamacs would go a long way already.


The lack of good node/graph based APIs for Org Mode is my beef as well. When you compare it with the APIs of the Leo Editor[1], Org pales in comparison. Manipulation that is trivial in the Leo Editor can be quite a pain in Org mode.

[1] https://leoeditor.com/


What is "node/graph" based APIs that's not the next-heading etc functions that it does have?


Let me see if I can remember some of them:

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.


I ended up writing a few functions that implement that kind of an API on top of what Org provides—just a handful of them so far, ones that I needed for the last customizations. I'm probably not the first to do that, and vaguely remember seeing something like that on Github.


Re. parser:

> 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.


I've used that parser to write some custom tools for me, it chocked on one large file (30k lines) with lots of code blocks. It needed 30 min and dozens of GiB of RAM to parse that file, that was on the JVM not in the browser. But the next update of the parser combined with some strategic deletions of code blocks, made parsing fast enough.


I don't think you did. You probably used the sister project https://github.com/200ok-ch/org-parser which has a well known issue regarding what you are describing: https://github.com/200ok-ch/org-parser/issues/56

organice has no such performance issues (and does not run on the JVM). I use it daily with 5k LOC files.


You are right, I was under the assumption that Organice did use 200ok-ch/org-parser. Sorry, for the confusion.


I've been playing with this a bit lately and it's probably even good enough to introduce to my non-technical wife who has an increasingly complicated job but she is unlikely to invest the time in learning emacs itself.

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.


Hi there, maintainer here.

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.


To answer my immediate question "why does this look almost exactly like org-web?":

> 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.


Everyone can judge for themselves what is similar and what is not. Having said so, organice has about four times the commits of org-web. It shares a common history, but the last few years have diverged a lot. Also, there is nothing hidden, you’ve found the info right there in the top level readme as you’ve said yourself.

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.


> s 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.


Thank you_/\_


Agreed. It is hard work. As it is mentioned, walk on and be water.


It looks like orgnice has been an independent (and more active) project for 3/4ths of the life of org-web. I wouldn't feel compelled to prominently advertise the fork either.


I've looked at the Org mode ecosystem a lot, but I haven't found any client with a "normally usable" UX, including this one. They all seem to cling to the weird concepts of Emacs (some people may like that, I do not).

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 :-)


Could you point out any specifics? (otherwise, it sounds like: "I don't like it because I don't like it")


I can't believe I've never seen this before, and it has 1.7k stars on github too! It looks very promising, especially all the sync options.

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.

[0] https://gitlab.com/publicvoit/orgdown


Hi there, maintainer of organice here. Even before publicvoit started the great effort of orgdown, we've started working on a standardized Org mode parser which will run for different programming languages and runtimes: https://github.com/200ok-ch/org-parser

Having said so, since orgdown is a subset of Org mode, organice fully supports orgdown. Technically and as a project.


Been using organice for years. To me, it’s by far the most usable solution to interacting with org files on a mobile device.


After >150 upvotes, the first kind words on the project. Thank you for making my day and taking the time to say something nice_/\_


That is business as usual for Hacker News.

Remember the now infamous thread where the Dropbox founder was sharing his work and people were saying it was useless since rsync existed?


You are so welcome. I have become familiar with 200ok through my use of organice, and I very much respect the ethos you all take towards OSS.


It might solve the issue I use bear as my org mode thing. But bear us iOS-mac only. Under Ubuntu …

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.)


I'm skeptical this will work nicely with different Emacs/Orgmode versions - unless it's a super basic subset.

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)


You're right to be sceptical. Org mode syntax is not easy. That's why a lot of work went into the parser. organice has a big set of tests for its parser and aims to be 100% compatible with Org mode syntax. I'm using it daily since years on 5-digit LOC Org files and don't get a one byte diff where I shouldn't (apart from some documented bugs). If you find a discrepancy, changing/adding tests, as well as modifying the parser is usually not too hard.


I mean a super basic example everyone has come across - in the past 5 years the block syntax at some point changed randomly from all-caps to lower-case (no idea why..). You're saying organice just sticks to the legacy syntax? I guess half my issues were with config parameters, Elisp variables and the export targets


It's case-insensitive, both work fine. But I think the default that's inserted when you hit the key to insert a block changed from upper to lower.


> in the past 5 years the block syntax at some point changed randomly from all-caps to lower-case (no idea why..).

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.


I'm on Doom Emacs, which uses the current Org from Git, and uppercase for ‘BEGIN_SRC’ works for me just as lowercase, which I normally employ myself. Maybe it didn't in the past, but at least it's fixed now.


Out of curiosity:

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.


It's emacs so I'm guessing it's possible. e.g. https://www.emacswiki.org/emacs/AutoEncryption


Yeah, that supports handling encrypted files, but the question is if org indexes such files to handle interlinking, file completion, agendas and stuff.

I guess it doesn't.


It depends on how you do it. Org maintains a reference to what id's you use in links, so if you have an encrypted file with an id link, those links are active and you'll be taken to the right file when following the link (and asked to decrypt it etc.)

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.


Agenda opens every underlying file in the emacs session so I would assume it would work. I've never used encryption, though.


Org supports both full-file encryption and encryption of the text of entries but not the headings and properties (org-crypt). It's your choice.


In issues for Orgzly, support for org-crypt was mentioned as a wanted feature, so I guess that's what some people use. However, it sounds like it encrypts text inside files, maybe on per-note basis.

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.


Out of curiosity, why would you store data on a third party service without encrypting it automatically? rclone can easily encrypt file names as you want to.


git-crypt is also a user-friendly solution for transparent encryption/decryption for git repositories.

I have been using this for my logseq notes synced across multiple computers (through a private git repo) and works fairly well.



I'd love to be able to build a SMS to org-todo gateway, where my quick todos are just simple text messages... It may be easier with a discord/telegram bot but the simplicity of sms is ubiquitous and reliable (I am often in rural area with very limited networking)


If you have a smartphone, then you can use the customizable capture templates[1] (similar to Emacs) from organice. You can even use bookmarklets to capture web content, and have Siri integration.

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...


Wouldn't it be easier to have e.g. Orgzly on the phone and add todos straight into the Org files? Then have them synced to desktop via Syncthing, for example, once you're on wifi. That's my setup, and in fact I have Orgzly pop up notifications for tasks, because I'm too lazy to look at the agenda.


I imagine you could whip something together using huginn which is an open source IFTTT/Zapier alternative

https://github.com/huginn/huginn


Does anyone have recommendations as to libraries (not applications) out there that allow one to interact with org files?

(Preferably in rust, since I'm learning it rn)


There's https://metacpan.org/pod/Org::Parser which works quite well in Perl.

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.


Thanks!


There's a sister library to organice which works in JavaScript, Java, Clojure and ClojureScript: https://github.com/200ok-ch/org-parser


Thanks! The README has info that's helpful beyond the specific library itself, so this is a nice find!


You are very welcome^^


Will be trying this out today. Really like the idea!


Can anyone easily explain org mode and why it is apparently so enabling?


How does this compare to orgzly?


First, let me say that they share a lot of similarities. They are both standalone applications to view and edit Org mode files. They are both Free and Open Source applications.

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.


[flagged]


I'm surprised you didn't mention the inevitable web assembly port, orgWASM.




Guidelines | FAQ | Lists | API | Security | Legal | Apply to YC | Contact

Search: