Foam – A Roam Research alternative with VSCode, Markdown and GitHub
github.com
github.com
Note that I am not a researcher, but a dev manager, so most of my note-taking revolves around meeting notes and action items with some research thrown in.
Athens will allow importing of Roam databases and will support many of Roam’s features, such as blocks, pages, backlinks, and Roam markup syntax. Unlike Roam, Athens stores your database of notes on your local computer, since it is a self-hosted web app.
To this day though I've found that Zotero is unbeaten to keep everything organized. I collect all my notes and documents in the Zotero library, and I sync it on multiple devices by placing the Zotero files in a Dropbox folder.
In this way I can use whatever app I want to write the actual notes (MD, txt, docx, whatever). I organize the notes in Zotero "folders" and the documents of each note are stored in "sub-folders". The best thing is that these are not actual folders, so the same document, if relevant for multiple researches, can be placed in two or more folders/sub-folders etc.
This setup has worked for me for nearly 8 years, with over 50 publications and over 5000 documents in my Zotero library. And best of all, the only thing I'm actually paying for is Dropbox, which I would anyway and, IMHO, is totally worth it. But that's another story. And more importantly, to get things started one can rely on the free tier of Dropbox, so even that's free.
So as a researcher (which translates to little money to spare and high volumes of documents to manage), I find that to this date I still have to find a solution that beats my configuration. I would love though to discover new opportunities!
I wish more apps would take the wide availability of "magic syncing folders" into account when designing their data storage. (I know many VC funded apps would prefer to keep the data in house so it can be monetized, but there is less excuse for open source tools)
I take notes from my mobile/desktop browser address bar or simply edit the files directly. No dependencies, no cloud storage, only files and no one can ever access them but me. Works like a charm for me.
The result is I'm using a mishmash of all those, and keep forgetting what is synced where.
For GDrive (I use that for work), [insync](https://www.insynchq.com/) is not 100% perfect but was worth the one-time price.
Is it because you’re assuming a cloud backup is necessary component of syncing solution? In that case, you can just designate one of your synced devices to keep backups to S3/B2 :D
YouNeedABudget used to do this and then “upgraded” to use their own proprietary service that charges $X/month.
I think it’s not just the data monetization, but that frequently data sync is the only feature that requires ongoing services. So if I write software and want to charge a monthly service fee, then data sync is where I can force the service.
Companies can do whatever they like, but jerk companies will make poor designs that require their own magic sync. Smart companies should fall back to a sync folder to allow self-run and just charge me for software.
However, I do not use zotero notes much at all (apart from taking notes on bibliographic elements), and so I am hoping you might write some more about the mechanics of how you do that.
I am particularly interested in how you handle cross-references. I tend to use markdown and wiki approaches, because they make it easy to have inline cross-references to other documents. Is there a way to do that with zotero notes, other than using the "Related:" and "Tags:" items at the bottom of a note?
Also, do you have hints on organizing folders of notes?
Since you've been doing this for years, I can bet that you have some great advice, and I hope you can spare the time to explain your procedures in a bit more detail.
Thanks.
It's very versatile — it's got great image handling, for example, so you can use it for collecting visual materials, and easily browse as a gallery or as full-sized images. And I particularly love the built-in PDF support, which has everything you need — multiple reader views, annotations, table of contents, rotation, conversion, OCR, etc. Search is fast, multiple database support is great. And it's a very nice touch that you can combine the local database file support with cloud sync, although the mobile app could be better there.
It's worth noting that Devonthink does not have citation/reference management, so for scientists/adademics it's probably not an adequate replacement as Zotero, Endnote, Papers, etc.
I need something that can store them separately, allowing me to export one with annotations if I choose.
Annotations become part of the PDF file on disk. But they're stored as separate editable objects in the PDF that remain editable; for example, if you open an annotated PDF in Preview (on macOS) or in Adobe Reader, they are still editable. And so you can remove them.
Devonthink also lets you remove all the annotations. With your PDF(s), select Data > Convert > "to PDF without Annotations", and it will make a copy that has all the annotations removed.
I agree that it would be nice to keep the annotations separate. But fortunately the PDF format is flexible enough that it can preserve the annotations and not "hard code" them into the visual tree.
You can’t even export pdfs or notes from it anymore to send to others. Only some snippets via some bad Elsevier platform which is a headache. They will lock you in, and they specifically updated Mendeley such that the database is encrypted towards you yourself. I lost my whole Years worth of papers and research to it.
Do not use Mendeley. Do not use anything made by Elsevier.
Now I pay for unlimited storage on Zotero. This is for two reasons: 1) They recommended supporting them by buying storage rather than donating directly. Maybe it has changed now but I continue with my subscription, 2) I have several co-authors with whom I share my documents. Most of them don’t have a paid Zotero subscription. But shared folders don’t eat up their personal storage limit unlike Dropbox.
Also how do you have documents with inline images? Is it possible to cite other documents from zotero -- let us say you are creating a literature review?
Yes, you can cite documents you have with zotero by having it generate a pre-formatted citation or a bibtex entry.
What I learned is that one folder with 36000 files is not a good idea.
They impose a taxonomy on thought and rely heavily on "best practices".
Even the simplest organizational schemes require a great deal of _discipline_ to be successful with, and nothing is a "one size fits all" solution.
I'm looking forward to the day when I can dump interesting thoughts (or links to articles, videos, whatever) into a "knowledge base" and it finds connections and labels things for me while I sleep.
Who's building this?
Then when you open a note, a side panel with back-links opens side by side with the note. Press a key command to flick between the search bar and the note, and update the side-panel whenever a new note is opened. This would be the perfect app for me.
Which I think means: all that's needed is discipline. Which organizational scheme you use (if any) is almost irrelevant.
The useful question is then: which methods help building discipline?
I think you just described dreaming.
There is no software that would piece different ideas together to come up with a new one. That is called AI and we are not there yet.
What you want is get the results without doing any actual work yourself. This is not a problem that any software could fix.
I do and so do others. But this is not magic. Computers can't read your mind, they can't create perfect connections without the users guidance. A certain level of discipline will always be necessary. At the end you are the only one who knows what you know and need at a specific moment, any tool can only assist you in this.
Mark Berenstein is one of the original Hypertext pioneers and has built a fantastic tool for notes.
http://www.eastgate.com/Tinderbox/
This and DevonThink are the only reasons I remain on a Mac.
Mek from archive.org has recently decided to give it a shot.
This means that the user blanket accepts the probability that language is similar enough in two separate thoughts to form a connection, or they receive a basket of suggestions from a program and approve/disapprove each. One inevitably leads to meaningless connections, and the other leads to work on the user's part to prune out all the trash.
What do you think?
It’s the same issue with static sites: you get a posts folder, dump everything in it, and then you dump all the images in an images folder and lose association between them.
I would much prefer if these tools took front matter metadata (or a pathname) to link to each other and had a note-per-folder approach (my own site does that, and I store images for each post in the same folder as “index.md”—the pathname becomes the final URL).
A full hierarchical approach (not just single level) is much better (believe me, I’ve been doing this for 16 years and have nearly 8000 notes/posts at taoofmac.com).
In fact, insisting to placing notes in a single hierarchy only serves to support a common but incorrect notion IMO: that things have but one single, universally valid, most important attribute. Of course no one will seriously argue that this is the case, but the notion is nonetheless ubiquitous because of our need to simplify, probably.
I think it would be better if you recognized that while this works neatly for you, some of us have other systems that work nicely for us.
Tags and search in particular are really empowering to me because I can file things in multiple places and find them in all of them - or I can search for multiple tags at once to slice out a subset of my notes or bookmarks.
Not with page bundles in Hugo: https://gohugo.io/content-management/organization/
But you can tag your ideas, or create "folder" notes that contain list of other notes. And you can nest those notes or course, and even have loops in your graph, so it's more flexible than folders.
Also, for static sites, I use Jekyll and I create a folder for each post in the image directory. It's very convenient.
On our platform, everything is a card (rather than a document), and if you want an actual structured hierarchy, you can nest cards inside other cards. Each card can have multiple parents, so if you are collaborating with others you can easily have the same "card" in different places to keep yourself organized. In that way it works similar to symbolic links in a filesystem, except it's nesting so there are no folders – just cards all the way down.
At the same time, because your cards are not actually siloed into different folders, we have things like the "home", which has all the cards you've ever made so that you can easily filter your entire library by tag / author / etc. and see all of those cards at once.
Unlike the OC solution, however, Supernotes is not self-hosted, and so probably isn't as appealing to a lot of the techie HN crowd.
Being an HNer working on the product is a pretty big pro for me. Will be showing this specific comment to a few people for reference to Supernotes as well.
Being around HN for a while has definitely influenced how I think about the product and what I want to build. For a while I was wanting to build Supernotes as a federated service (and at some level I still want to do that), but for now the focus is mostly on making the most seamless UX.
But this is definitely something we are working to make as easy / thorough as possible. Data ownership by our users is very important, which we've spelled out in our terms[1] as well.
Question: Do you have an option where your backend could be used to supply content to a frontend public website? Mind you, given your data structure, I'm not sure how that would work.
Let me give you an example. I like to read, mostly long form non-fiction (i.e., books). Naturally, I highlight things of importance. I want to take those ideas and get them into something where I can organize, add categories and tags, etc.
Yes. A basic WordPress site would be sufficient. But given a tool like yours, why not try to take up a level? On the backend, my "thoughts" well organized. The frontend some view of that I'd want to share with the public.
Thoughts?
Hopefully quite soon (we already have a working demo) we will introduce "card pages", which will be public (or semi-private, it'll be configurable) pages that represent either a card itself or that card's children. These pages can then be embedded into any other webpage.
The idea is to both support behavior akin to embedding a tweet, where you are just viewing a singular card as a card, but also to allow people to effectively create "documents" on Supernotes (that can then be shared publicly) by displaying the children of a card in "seamless" mode, so that even though it's actually a bunch of cards under the hood, it'll look like a blog post, or wiki article, or readme, or whatever.
Every card on Supernotes will be able to have multiple pages, so that you can have a truly publicly-facing representation (which might limit how people can interact with it) but simultaneously embed your card somewhere else that is semi-private (like a Notion doc for your team) and allow people to actually interact / edit the card from there.
https://www.amazon.com/Dreaming-Code-Programmers-Transcenden...
https://www.chandlerproject.org/vision/
> cards can not only have multiple parents but can have different parents for different users. This aspect might be novel
Very nice.
If only that was limited to static site generators. Wordpress does not have any media organizing by default, no folders, no nothing. There are plugins, of course.
That was my biggest surprise when I recently looked at Wordpress.
Storing them into folders is just giving you problems. I would need to put them into many folders, to get any benefits, but than again, this could be done by tags so much more easily.
In the end there is no reason to directly manipulate the file structure. It is just easier to have a flat hierarchy. If I need to find something: there are tags, there is the graph, and of course there is a full text search.
If I'm looking for the word cow in a doc that I think is in a folder (even if it's in subfolders), then I can do this:
grep --color=always -r "cow"
(I like setting color to always, and for some reason I'm too lazy to set up an alias so I don't have to type it)
I can get way more complicated by escaping spaces, looking for certain file types, etc.... really this does about the same as grep though - but still interesting:
find -name ".txt" -o -name ".md" -type f | sed 's/\ /\\\ /'g | xargs grep --color=always -n "cow"
Using these utilities, I've been able to find things in lots of lines of code, or lots of lines of md files.
That's not a bug, but a feature of Zettelkasten.
I generally like to annotate or mark stuff instead of sorting them into folders to search through them later. It's by far easier to remember _what_ you're looking for than _where_ you can find it. If you're trying to find a place you have been to before, it's easier to remember a land mark next to it than the streets you have to drive down.
FWIW, subdirectory linking support is not far away. Work is being tracked on GitHub at the issue below, and I already have a WIP PR in the works: https://github.com/foambubble/foam-vscode/issues/8
If you have any more suggestions and ideas on how to improve Foam, feel free to open issues on GitHub!
I'm using a a much less capable tool for managing my notes called `mkdocs`. It converts a collection of markdown pages to HTML that I serve from a script running on a Raspberry Pi (`python3 -m http.server 8100`) `mkdocs` provides Github integration but I keep the repo on a private server so I don;t have to worry about private information leaking. Point is, It does nothing with directories so that is completely under my control. It links the pages hierarchically but I can insert links between pages and to images. Manually.
Currently Zettlr doesn't have graph view, But the PR for a graph view is up and soon will come (power of open source?). If cool with it, I would recommend Open Source Software like Zettlr. :)
PR for graph view in Zettlr - https://github.com/Zettlr/Zettlr/pull/921
edit: it has!
Foam looks like a very thin layer built on top of existing VS Code extensions. It integrates with a template generated GitHub repository. If it hasn’t been done already, I imagine a “VimWikiHub” layer to be equally useful.
It really depends on your toolchain preferences and whether you want to integrate with a GutHub repo.
I would love to help to get it working for VSCodium if it doesn't depend on anything VSCode specific.
Check out the contribution guide here: https://foambubble.github.io/foam/contribution-guide
The Readme for the linked repo mentions this note taking system was inspired by Roam Research. That doesn't mean it's a Roam Research alternative.
Personally, I like VSC but I find it quickly gets cluttered and I'm trying to pare back the things I use it for.
I also often find myself struggling with the VSC UI for file handling. I don't know why. I often find myself opening another editor / file manager to use along with VSC. It seems error prone to me.
Roam is just getting started with a dedicated team and a sustainable business model. At this point, I'm guessing they have built a lot of runway for development even if they lose a lot of users from their pricing.
Development with a dedicated team will move quicker than open source efforts. In this context, we're talking about a "Roam alternative" because the alternative is implementing ideas from Roam. Unless the team is all out of ideas, the future of alternatives will be to continue copying Roam.
The graph seems to be one of the least useful features. It doesn't take long before it becomes useless.
Also, core feature in Roam is its Search box. I also don't see that in Foam.
To search, I think you can use VS Code’s built-in project-wide file contents search (⌘⇧F) or filename fuzzy matching (⌘P).
Notes are really just text to edit, so why not use a text editor for notes, especially if it's something you already have open?
For my much more simple notes, mostly lists for things like todos and music to check out, I switched to using a folder of text files in a separate VS Code window, and I couldn't be happier. I used to use Notational Velocity on Mac and then Zim on Linux, but I realized I might as well have a full editor for things like sorting, (un)capitalizing and block selections. I find rich text features and even markdown distracting for my notes, but I could use the latter if I ever wanted. Line folding is great for decluttering, and it lets me stick to under ten topical files. I thought I wanted wiki linking, but really just clickable web links plus multi-file search. Finally, autosave of existing and new, unnamed files is what let me to ditch a notes-specific app.
As opposed to what? Free? Getting investors who will pay for development while the service monetizes the users? It's unfortunate that this is what users have come to expect. That we feel should be getting free usage of a service when the developers have bills to pay just like everyone else, in addition to the cloud usage costs.
The people complaining about monthly fee in that three are target users for nobody but Facebook, Twitter, etc.
There _is_ an alternative that isn't free and that is one off payments (rember when we used to buy software?). I happily pay in the order of $50 to $120 for one off payments, often locked to a version.
In many cases this is _more_ than I've ended up paying for subscriptions I've used, then abandoned after 6-12 months.
Customers generally don't mind so long as they can cancel easily if they find they don't need or want the product.
Plus, you can't really buy a "web app" with a one off purchase and much more software is developed as web apps nowadays.
The difference here is, Roam and similar services run on servers that cost money monthly. The service is almost worthless without it. Ultimately someone needs to pay for this.
No software is really finished.
The supposed benefit of my data being hosted is not a benefit to everyone. I already have multiple solutions to backup and sharing, I don't need another silo where my data lives. I don't need another vendor hosting arbitrary data which means I now can't use the product because the megacorp I work for won't let that through their legal.
Key point I was making above was that one off payment is an option and can be successful, we don't need to fall straight into the free vs subscription dichotomy.
that is also a downside though. which side of the coin wins depends on the customer. I rather use icloud/dropbox and apps then an unencrypted web version. Roam decided to implement a web app, the actual use case does not require a server or monthly maintanance costs.
Evernote: €7/month
Notion: $4/month
Ulysses: $5.49/month
Standard Notes: $9.99/month
OneNote (+ the entire Office 365): $9.99/month
Inkdrop: $4.99/month
Bear: $1.49/month ($14.99 per year!)
https://news.ycombinator.com/item?id=23667492
Why are we talking about Roam rather than those services then? Why don't we just "find and replace Roam with Bear?" (anyone know the Regex for that?)
Getting hard "Dropbox is trivial to implement with FTP, curlftpfs and CVS" vibes from this kind of thinking.
> We don't want fuckin tire kickers who don't take thinking tools seriously.
> You don't think it's worth the money, that's cool - gtfo.
> You're actually poor -- we'll help you out.
https://www.reddit.com/r/RoamResearch/comments/ep2vy6/how_mu...
That thread on Reddit really soured me on Roam. I'm glad to see alternatives like Foam pop up because there are some interesting ideas there.
Their core strategy is sound - to develop, at an early stage, for a passionate group of users (even if the group is small).
1. afford too many subscribtions
2. accept the risk that my notes disappears because I miss a few reminder mails (I'm kind of hopeless when it comes to that.)
If someones gonna store your stuff on the cloud, someone's gotta pay, a payment model is the best for something like note taking. 15 sounds a bit high though.
No way. Time is short. They aren't selling carrots. This isn't a commodity. There's no "market price" for a quality service. If you don't think it's a quality service, then don't use it. If you do think it's a quality service, then $15 is a no-brainer.
I follow the Patio11 school of thought. Charge more. Then charge more again. You should be doing that for your own services and you should be using services which do this.
Sure, there are some consumer focused services which in reality do need to be price conscience. Roam isn't one of these services.
As I said in another comment, if Roam were a commodity, then why are we even talking about it? Let's change the subject. So, Notepad...
The funny thing is if they would have tried to charge a one of $300 people would have called the price crazy, but buy making it a subscription it's suddenly OK. Even though $300 doesn't even correspond to 2 years of subscription (and for notes you quickly end at having to pay for >10 years)
Why are you going to let Evernote tell you how much you should charge?
> The funny thing is if they would have tried to charge a one of $300 people would have called the price crazy
Funny you mention that. They have a one off $500 option and they claim to have made more money from that option than they have from their investors.
Roam is a niche market and so is always going to be more expensive than more commonly used software, because there are fewer people to pay for the common expenses - same reason I have to pay more for books here in Denmark than I have to pay for English books - the cost of creating them gets stretched over fewer people.
I'm actually a paying roam customer btw. I'm definitely going to evaluate it for a few months before deciding if it's worth it or not. I'm just not sure too many others will.
However it looks like the Roam folks are aware of that as well and are actually just using this price point to scale slowly. Bold move but understandable. Bold because it's testing their 7 minutes of fame and betting the flame will continue to burn when they are ready.
Good luck with that. Many, many companies have learned the hard way that it's easy to price yourself into bankruptcy. Especially in extremely competitive sectors.
If there really were alternatives to Roam then why would we even be talking about Roam? Why aren't we talking about Notepad? Nobody talks about Notepad because it's not interesting. It's not interesting because there's nothing special about it.
There's loads of projects on Github we could propose as alternatives to Roam. If they are really alternatives, then (again) why are we talking about Roam? Why is Roam in the title?
Why aren't you talking about Foam, which is the subject of this HN entry? Why does the title name Roam and "A Roam Research alternative."
Let's all repeat together.
Room: The editor has a name. The editor's name is Foam.
A bicycle isn't an alternative to a car. A bicycle might be another viable option for transportation, but it's not a car alternative. If you believe a bicycle is an alternative to a car then you're simply not using (or have no feed) of the benefits a car can provide over a bicycle.
There is no alternative to Roam (unless you're trying to sell something, apparently.) Once people stop talking about Roam, then there will be an alternative, because it's no longer interesting.
So, have you tried Notepad?
Foam isn't an alternative to Roam unless you don't need key characteristics which differentiate the two services.
I also feel that Roam is being used as click-bait to attract eyeballs to other note taking apps.
This reminds me of the "I can't believe it's not butter!" marketing campaign. Logically, you could apply that tagline to any product. I can't believe this celery isn't butter! No, margarine isn't butter. They are using butter to sell their own products.
Just the same, any note taking app could be an alternative to Roam. I would bet this discussion thread wouldn't have been this long if Roam wasn't in the title.
I'm glad that's not the common understanding of the word.
I'm glad Roam offers decent exporting though.
Fiddly, yes. This is very early stage project and in need of polish.
Lacking backlinks, however? We actually got those, thanks to the VS Code Markdown Notes extension:
See bottom of the file here for example: https://raw.githubusercontent.com/foambubble/foam/master/rea...
This means that for the time being links are broken in the GitHub markdown preview.
I'll look into getting this fixed, but not sure what the best way forward is.
If the README only included basic information and a link to the github pages, it would be easier to follow.
P.S. since I'm already typing, have you considered supporting semantic links, in addition to the regular ones? It will make the relationships between the pages clearer at a glance, and allow for better automation in the future. It might also help in visualization, for example you could toggle only specific relationships, to get a simpler graph of the information you care about.
Thanks for the idea! I have quite a few on the Roadmap already, and would love to hear more in GitHub issues
Foam Back links aren't working. That's one of the essential features of Roam.
I think that's a feature that any of the Markdown Link packages could offer. But then again I would keep the link graph in a separate data store and just show back links in a separate panel—not by editing the document itself.
We need to be able to define relationships between data. There needs to be a piece of metadata that describes the type of link like “influenced_by” or “influenced” or “evolved_from” etc.
Bad thing is that the website has almost nothing on it. I don't know if it's a service, a downloadable app, a self-hosted web app, or anything.
And the text on the website is light grey on a white background so it's very difficult to read.
I found more information on the github, but it still needs screenshots and information on how to actually use it (download? self-host on server?)
I did so. One thing that is noted is that everything is private by default. What does that actually mean? Even on the github, I couldn't find any kind of description of what "private" means? Is it e2e encrypted? The keys are saved somewhere on my device?
When I create a new concept, I see it has a relations config at the bottom of the concept creation page. How do I use the relations that I define there?
More competition is always good to see.
Biochemical pathways: https://www.roche.com/sustainability/philanthropy/science_ed...
Financial market trades
Suppliers for the parts of a car
Electrical networks
Data networks
Neural networks
Metabolic networks https://en.wikipedia.org/wiki/Metabolic_network
Electronic components
Fields of mathematics
History of mathematics / politics
etc
And explicit block referencing is near effortless too, though I do agree that there you can run into issues with the structure becoming obsolete and useless over time (I know I did).