Thinking in Public

Foam: One Month In šŸ›

Musings on Innovation, Tools For Thought, Open Source, Venture Capital, Communities, Software Sustainability, and the Future of Foam. July 26, 2020

Itā€™s been a month since I released a very early prototype of Foam on Twitter:

Iā€™ve built something Iā€™ve thought of for a long time, and itā€™s finally ready for preview! šŸš€

Foam is a personal knowledge management and sharing system built on VS Code and GitHub šŸ§ 

Try it out and let me know what you think! šŸ‘€

ā€” @jevakallio, 25 June 2020

Foam is my humble contribution to the burgeoning ecosystem of Tools for Thought: A developer-friendly approach to note-taking, personal knowledge management and digital gardening, built on top of Visual Studio Code and GitHub.

I shared it on the internet hoping to get some feedback on my ideas, but instead I accidentally ended up creating a community of people excited to discover better ways to work, together.

In one month, Foam has been installed 8000 times, despite its awkward, multi-step Getting Started experience. It has collected 5800 stars on GitHub, the same amount as my previously most starred repository did in 3 years. Our Discord community has been joined by 550 people, weā€™ve merged 68 Pull Requests from 30 individual contributors, and our first weekend we hit #1 on Hacker News, Product Hunt and GitHub Trending.

In short, itā€™s been a whirlwind of a month. In this post, I want to pause for a moment, recount the brief history of Foam, and give you a peek at what the future of the project might look like.

šŸ’­ Table of Thoughts

šŸ“š The Book Club

A week before I launched Foam, a friend and I decided to start a book club. The first book we selected was Where Good Ideas Come From by Steven Johnson, where the author explores patterns of innovation in nature and in human creativity.

In retrospect, this book explains how Foam came to be, but in a weird twist of fate, caused Foam to exist even before I read the first page.

šŸ“ Taking Smart Notes

Iā€™ve recently become a sucker for personal productivity books, and none has gripped me more than How to Take Smart Notes by Sƶnke Ahrens. In it, Ahrens describes a note-taking methodology that can significantly improve your learning and information retention over time. So before starting Where Good Ideas Come From, I knew I wanted to take notes on it, but I had an inconvenient problem:

There was a hole where my note-taking tool used to be.

Earlier this year, I was introduced to Roam Research, the most hyped and, arguably, the genre-defining Tool for Thought. Part note-taking app, part graph database, Roam aims to organise information in a way that matches how our brains work: associatively instead of hierarchically. Our brains arenā€™t indexed by categories: You canā€™t simply access all of your thoughts related to ā€œsoupā€; instead, you can think of gazpacho, and then follow the string of thoughts, facts and memories that unravels as you tug on the ball of yarn. Roam works similarly, by allowing you to create bi-directional links between ideas: not only documents, but individual thoughts within a document, and visualise and traverse them as a graph.

The power of this idea is hard to explain, and it took me a month of use to realise the benefit of this mode of note-taking, but once I figured out that Roam happens to be the perfect companion to the methodology described in How to Take Smart Notes, I knew there was no going back to traditional note-taking.

Now, Roam is a good idea, but like most early-stage startup software, also an infuriatingly imperfect implementation: slow to start, clunky to write in, occasionally losing information when editing offline, and not available on mobile. I was fine with this, until they moved from their private beta to a paid subscription model, priced veryā€¦ confidently at $15/month.

As a software engineer, I like to pay for software, and for a tool that can improve my learning and life-long knowledge retention, the price of a meal per month is very reasonable. But at the same time, I had enough frustrations with Roam that made me question whether it was the companion I wanted on my life-long learning journey.

As a software engineer, I also have the ability to think up software and will it to existence.

So, I had the classic developer thoughtā€¦

šŸ¤” ā€œHow hard could it be?ā€

Building a ā€œRoam, but betterā€ on my own seemed like a daunting task. To conjure up a pun that would surely elicit groans and eye-rolls at the Roam Research offices, Roam wasnā€™t built in a day. As a salient data point, the folks over at Athens Research have been working on an open source Roam-like app for 4 months, and despite being way smarter and dedicated than I am, havenā€™t shipped yet.

What I ended up building took me six days from idea to production.

To understand how, letā€™s go back to Johnsonā€™s Where Good Ideas Come From.

šŸ’” Where Good Ideas Come From

The book is laid out in seven chapters, each describing a pattern of innovation, and a few chapters in particular are very relevant.

The Adjacent Possible

Chapter 2, The Adjacent Possible, explains that good ideas rarely occur out of the blue. In fact, when they do, they rarely tend to be successful in the market, and are considered either to be wrong, or ā€œahead of their timeā€. Instead, good ideas are are often just one step away from what was previously possible ā€” or a combination of established ideas that together form something new: an innovation.

Foam is very much an innovation borne out of The Adjacent Possible: Itā€™s the ideas behind How to Take Smart Notes as interpreted by Roam Research, combined with my own personal experiences using Visual Studio Code and GitHub. So in the end, I didnā€™t need to invent much.

The Slow Hunch

Chapter 3, The Slow Hunch makes the case that good ideas are rarely a lightbulb moment, but a slowly evolving hunch, or a series of ideas that build on top of each other until reaching their final, innovative form.

In 2018, I wrote and published a serialised novel in a fashion that, in retrospect, is much like Foam. It was only after falling in and out of love with Roam that I realised the true power of these tools, when transposed outside of the software development context. So, Foam didnā€™t just come to me: itā€™s a natural conclusion (or at least a milestone) of a path Iā€™ve been on for a while.

(In a mind-bending coincidence, this chapter also discusses the need for good note-taking in order to cultivate the slow hunch, and describes the tradition of Foam-like journals from the Commonplaces of English enlightenment and thinkers like John Locke, all the way to Tim Berners-Leeā€™s World Wide Web!)

Platforms

Finally, Chapter 7, Platforms, makes the case that platforms and ecosystems have the ability to foster and supercharge innovation:

ā€œThe most generative platforms come in stacks, most conspicuously in the layered platform of the Web. [ā€¦] Tim Berners-Lee was able to single-handedly design a new medium because he could freely build on top of the open protocols of the Internet platform. He didnā€™t have to engineer an entire system for communicating between computers spread across the planet; that problem had been solved decades before. All he had to do was build a standard framework for describing hypertext pages (HTML) and sharing them via existing Internet channels (HTTP)ā€ ā€” Steven Johnson, Where Good Ideas Come From p.189.

Just like the Web was built on top of the infrastructure of the Internet, Foam is built on a tall, open source stack of turtles.

šŸ¢ Foam Stack

Precisely because of the platforming abilities of these tools, I was able to build a Roam-like user experience (well, a very barebones experienceā€¦) in a matter of days, rather than weeks, or months.

The idea for Foam occurred to me on a Friday afternoon. By the following Friday, we had our first 1000 users. What happened in between is a true testament to the power of open source and software interoperability. The most credit I can take is the credit a curator takes of a well-put-together exhibition.

šŸ–¼ Software As Curation

Earlier this week, Geoffrey Litt wrote a piece, Foam: Software as Curation, where he asks a question:

We tend to think of software in terms of monolithic ā€œapps.ā€ But what if we thought about software design as a process of curating existing parts into a holistic user experience?

He also explains, in laymanā€™s terms, Foamā€™s ā€œmostly airā€ philosophy:

While Foam does install its own extension, most of the value comes from installing other existing extensions and choosing good default settings. For example, it installs a few extensions that provide a nicer Markdown writing experience, and that tweak lots of things about how Markdown docs link to each other. And it picks a color theme well suited to writing Markdown. I would have never come across this whole configuration on my own, but Iā€™m glad that someone else figured it out for me.

The piece is very good (and not too rosy-eyed about Foamā€™s approach, either, which I appreciated), but it ascribes to me, the curator, too much prescience: I didnā€™t build Foam out of existing extensions because I have faith in Software as a Curation. I did so because it was the easiest way to get it done.

Hard things are hard. I, personally, have always been a big fan of the easy road, especially when the payoff of the work is uncertain, as it is with ideas. Building Foam by combining existing extensions was an act of prototyping, not a philosophy.

It was only after I had built the initial version that I realised that what I had in my hands wasnā€™t just a prototype, but a seedling of a novel(ish) approach to product development.

Because of the ecosystem effects, Foam already has real-time collaboration (via Visual Studio Code Live Share) and a cross-platform mobile app (via GitJournal), something that other personal knowledge management apps like Roam sorely lack.

Most other tools have a Learning Curve, but Foam has what I like to call a Discovery Curve. Using a novel combination of tools or extensions, you may discover a powerful feature that didnā€™t exist before the moment you put them together.

Foam is a bet that by leveraging standard platforms, extensibility frameworks and commonly accepted interoperability surfaces, we can scale open source software to create a best-in-class product for our users.

āš–ļø But Does It Scale?

Once I interrogated this idea of Software as a Curation, I found it yielded many interesting qualities that formed Foamā€™s Principles (read later, not important right now).

However, this approach has also many drawbacks, some of which are in the category of subtle-but-gnarly, though most of them are, in retrospect, pretty bloody obvious: Weā€™re attempting to build a best-in-class product as a distributed team, but most of our team members havenā€™t ever agreed to be a part of the team, and few still donā€™t even know that a team exists.

As a self-identified fan of the easy road, had I been able to predict the kind of interest Foam has received, and the community it has created, I would have likely not elected to take this approach, and would have instead gone for a more traditional monolithic architecture.

And that would have been a mistake. Mistake, partly, because I would have never shipped it. But also a mistake, because nothing good comes easy.

It sounds like a clichĆ©, but what weā€™re building with Foam isnā€™t software, itā€™s a communiā€”

Wait.

No.

That made even me roll my own eyes.

Let me try again.

What weā€™re building with Foam is a distributed, loosely-affiliated group of like-minded people interested in solving their own problems, and contributing those solutions to a commons.

In the Tools for Thought space, people keep using this term Collective Intelligence. Iā€™m not sure what it means exactly, never bothered to Google it, but this sounds like that could be it?

It also sounds a lot like another thing, which I do know a thing or two about: Open Source.

šŸæ Why Open Source Sucks

Yadda yadda ā€œthe worst form of Government except for all other forms that have been triedā€, or whatever Churchill supposedly said about democracy, applies very much to Open Source Software.

Iā€™ll leave out the usual critiques (misaligned incentives! corporate profiteering of free labour! toxic culture of overwork!), and hone in on one critique, recently wielded by one of the Great Leaders of the personal productivity movement, and the manufactured-drama Antichrist of the #roamcult religion, Tiago Forte:

I canā€™t recommend open source software in general. Itā€™s designed for the philosophical preferences of software developers, not the needs of everyone else ā€” @fortelabs, 12 July 2020

The most annoying part of this critique is that itā€™s true. I donā€™t agree with its conclusion (I recommend open source software in general), but (with few notable exceptions), open source software, specifically end-user applications, tend to be unapproachable to non-developers.

Partially, this is because the movement generally fails to attract, and respect the value of the labour of, talented folks from disciplines other than software engineering. Great products are designed, not engineered. In addition to being well-designed, great products are also well-tested, well-documented, well-managed and well-marketed.

This is especially true of free, non-corporate-sponsored open source software (FOSS). Some open source software, like Visual Studio Code, stands out because they have the resources of worldā€™s most valuable company at their disposal. Turns out itā€™s not closed-source license terms that make it easier to build good software, itā€™s money.

Tiago Forte also offered thoughts on the role of capital in the longevity of software, specifically in the space of knowledge management apps like Foam:

Knowledge mgmt apps want to be open and standards-compatible so theyā€™re available to the largest number of people

So they have no moat and fail to build sustainable businesses

Which means they go out of business and are available to no one

We need cutthroat capitalist PKM ā€” @fortelabs, 12 July 2020

To respond to this, suffice to say: Pffffft. Just watch me.

šŸ’ø Why Foam is Free

Reading back the previous section, I realise that this sounds like Iā€™m gearing to asking you for money, either in form of a paid product or sponsorship. Doubly so, if you have read the Athens Sponsorware announcement shared earlier today.

Rest easy, feel free to let go of your purse strings, I am not going to ask you money. Though, if you were excited at the prospect of sponsoring an open source personal knowledge management tool, I recommend sponsoring Athens on their OpenCollective! ā¤ļø

This is not to say money is bad.

Itā€™s true that money makes some things more complicated, but it sure as hell makes a lot of things a lot easier!

Money is the best known mechanism of incentivising people to do things they otherwise wouldnā€™t. If Foam had (a lot of) money, we could hire UX researchers, UI designers, documentarians, community managers, and all the other valuable but underappreciated-in-open-source roles that are necessary for building great products. (And yes, developers too, because itā€™s still easier to pay someone to write code than to hope theyā€™ll do it out of their own free will, and in a way that you hoped they would.)

ā€œStop daydreaming!ā€, you may say. This is open source software. We canā€™t have nice things.

But, what if we could?

What if I told you I was already offered between 1-3 million dollars in exchange of a small stake of Foam? Not by one, but multiple venture capital funds.

And they were (at least on paper) on board with keeping the software open source.

For a piece of software thatā€™s more curation than code. More glue thanā€¦ whatever it is you want to metaphorically glue.

For a non-entity entity thatā€™s not even a registered company, and technically speaking, owns nothing.

Not going to lie, I did consider it.

Itā€™d be nice to have money.

Itā€™d make it a lot easier to build a world class product.

Itā€™d be nice to finally exchange all these pointless GitHub stars for some real-world value tokens.

Itā€™d also kill whatever this fucking thing dead in a heartbeat, both spiritually, but also, probably, as a product.

Fuck Tiago Forteā€™s ā€œopinionsā€. I believe Open Source can create sustainable, world-class software, and thatā€™s what weā€™re going to do.

Iā€™m not going to take the easy road.

(Side note: Iā€™m not disavowing money entirely. One day, I might ask you to loosen your purse strings, either in form of (voluntary, no-strings-attached) sponsorships, or in the form of your credit card details in exchange of a paid product offering. But that offering will have to earn your money by providing some outsized value that a loosely coupled Open Source organisation cannot give you for free)

šŸ¦øā€ā™€ļø Doing Good, Well

So, whatā€™s the plan? Whatā€™s in store for Foam? How do I plan to overcome the odds stacked against Open Source, and build a great product despite systemic challenges?

Why canā€™t open source end-user applications (as opposed to frameworks, libraries, developer tools), typically compete against their commercial alternatives?

My plan, at a very high level, is to attempt to address each of these issues:

So, how do we do this? Well, with all its warts, Open Source does have one thing that corporate competitors (usually) donā€™t:

Weā€™re not in a rush. Foam is intended to be a lifelong companion on your quest for knowledge. Things Take Time, and to do them well takes twice as much. Weā€™re going to move intentionally, and with focus.

Weā€™re going to focus on building a sustainable organisation that can rise above the usual pitfalls of Open Source (poverty! misery! drama! people fucking off to take paid jobs because they need to eat!).

How exactly weā€™ll do this? Thatā€™s not solely up to me, thatā€™s up for us as a community distributed team to decide.

I do however, have some thoughts Iā€™d like to share, but itā€™s getting late and I donā€™t feel like explaining them right now (another benefit of not having taken anyoneā€™s money! No accountability!), so Iā€™ll just drop this here without further comment:

Foam Org Draft

(Ok, maybe just one comment, which is to say that this is a draft, and Iā€™ve thought about this about as much as I thought about the first version of Foam before I launched it, which is to say, not enough. This is a conversation Iā€™ll aim to open as a RFC by August 1st, and hopefully ratify an organisational model by September 1st in early September, when I plan to transition to working on Foam full-time, paid by my savings until a further strategy emerges.)

If youā€™re interested in joining us on this journey. check out Foam. Foam 0.3.0 is out now with a few new features, and much more to come. Whether youā€™re a software engineer, designer, writer, community organiser, or just a personal knowledge management enthusiast interested in contributing to a commons, read our Contribution Guide or get in touch over at Foam Discord.

On a personal note, I feel optimistic about Foam, and our ability to create a best-in-class software product that truly helps people. Just as Foam, the tool, is a product of my slow hunch, I believe the work Iā€™ve done in our industry as an engineer, leader, community organiser, hype man, and a general hard-to-eradicate nuisance has prepared me for the role of Foamā€™s curator, and Iā€™m excited to see whatā€™s in store for us.

Itā€™s been a hell of a month.

Looking forward to the next one.

ā¤ļø


Written and published on Foam by @jevakallio.

Feedback welcome on Twitter and the Foam Discord.