samepage-network / roam-samepage

MIT License
4 stars 2 forks source link

Filecoin Dev Grant [DRAFT] #2

Closed dvargas92495 closed 1 year ago

dvargas92495 commented 2 years ago

Open Grant Proposal: SamePage

Name of Project: SamePage Proposal Category: app-dev Proposer: @dvargas92495 Technical Sponsor: @KarolaKirsanow and @miyazono Do you agree to open source all work you do on behalf of this RFP and dual-license under MIT, APACHE2, or GPL licenses?: Yes

Project Description

Tools for thought (TFTs) are applications that are meant to augment human intelligence by providing quick capture of ideas via notes and free association of these ideas via links and references. The space is currently littered with plenty of different web2 options, from Roam to Obsidian, Notion to Logseq. Each of the companies behind these products believes that their specific data model and bundle of user interfaces will be the solution to solving personal knowledge management, and some believe they could grow into the solution that solves collective knowledge management.

However, all users are different and have highly specific needs. This has played out by Notion and Roam starting as the primary two tools of choice, and slowly losing power users to the newer entrants in the space. As users continue to migrate between tools and settle into their preferred UI and servers of choice, collaborating has gotten increasingly difficult. In order for teams of researchers or independent contractors to collaborate, they either need to a) compromise into using one tool, copy/pasting data back and forth from their personal tool or b) import/export data from their personal tool to the personal tools of their colleagues.

Because of this, tools for thought on their own will not be a sufficient answer for collaborative thought. What we need instead is a protocol for thought: a set of decentralized computing resources and adapters from each of these tools. A network that allows users to continue sketching ideas in their personal tool for thought and that tool interfacing with the tools of their colleagues directly.

An example use case: I want to be able to open a page in Roam and have it connect directly with a page in another user's Obsidian vault. We can write changes to the same document asynchronously and they will be resynchronized once connected to the internet.

To achieve this, we plan to develop SamePage, a network composed of a series of stateless lambda functions that will use IPFS as the file storage backend. To help inform the design of the protocol for communicating with this network, we will implement a series of plugins for a set of the previously mentioned tools for thought. In our MVP, we plan to build plugins to connect:

In the future, we want to extend the network to also connect:

These TFTs have proven to be very successful authoring tools for researchers to explore questions and tasks. But no tool has cracked collaboration and because of this few research labs have been able to scale their workflows using any one of them. However, a protocol that allows each researcher to stay within their own tool but could effectively interface between them would allow communication to scale from where they are most comfortable working.

Value

Successfully building out this network would allow teams of people to collaborate with each other without having to all migrate to a single platform. A research lab could have one member in Roam, one in Obsidian, and one in LogSeq, and still be able to share one lab notebook of findings without any of them compromising on their tool of choice. This would provide users of these tools an alternative to the current export=>import=>reformat workflow with the ability to interface with each other directly. Since the proliferation of new tools for thought in 2019, the unserved need to connect work across different software platforms grows.

Through Joel and Brendan's prior research, they've seen this problem repeatedly — it's hard to bring others up to speed, especially when team members use different tools. Even then, when teams don't share the same vocabulary, struggles occur to introduce new team members to a project. David has already made strides to solve this later problem, introducing a multiplayer connection within Roam that allows for different users to share pages — and their surrounding context — to enable teams to collaborate with reduced friction.

The primary user groups we are targeting are those collaborating around either a problem or set of tasks. The former often involves research groups with labs composed of members synthesizing their research on their own tools and currently struggling to find a way to combine their findings and build off of each other. The latter involves freelancers and agencies who are looking to reduce friction around onboarding new clients by allowing each party to stay in their company’s tool of choice. The risks of not getting this right would include data loss while reconciling changes between clients and accidentally leaking private data publicly. Other risks include loss of engineering resources devoted to an idea that doesn't gain momentum or is an improvement from the status quo of users collaborating on a single platform.

To mitigate these risks, we aim to first tackle handling of public data. This will allow us to store and manage every version of a shared page on IPFS without fear of leaking private data. We then plan to iterate with end-to-end tests and user feedback to ensure we are not incurring data loss over time. In the next stage of our grant, we are looking to reach out to about 20 teams of users and onboard them to the network. Given our team’s reputation and experience (see Team section below) in the TFT industry, we are confident that we will onboard the right teams to give us ongoing feedback on whether the network is improving current workflows.

There are also some technical challenges to solve that pose risks for executing on this project, and we plan to address these through the development of our MVP. Versions of the data will fork when one or more clients are offline — how should those changes and potential merge conflicts reconcile? It will never be the case that each TFT will support the exact same set of features as all other TFTs — how should features from one TFT show up in one where the feature is unsupported? Ideally the network with respect to the user data itself could be fully stateless — how can we guarantee correctness without a shared intermediate state? Or how will we know that whichever intermediate format is chosen will be flexible enough for all foreseeable products in the TFT industry?

Answers to these questions are partly technical and partly UX-related. David’s work building Roam Multiplayer lays a great foundation to solve these challenges, and the internal team has been testing and iterating on this design already.

Further, there is a growing body of research around CRDTs (conflict-free resolution data types) and this network will aim to use them to handle risks around merge conflicts. Our connections to the Ink & Switch team, who has published research and functioning applications using CRDTs, will provide us with a community to provide hands-on feedback to our approach. To handle non-feature parity across TFT clients, we will build a flexible data format that allows for generic attributes to be defined. This will push the work for adapting into each plugin, and do so in a many-to-one relation instead of many-to-many translations. AtJson is emerging as a promising data model in this regard, but more exploration is still to be done. With all the code being open source, this will allow for faster future portability and development of adapters in foreseeable TFTs.

Throughout the MVP, we will address these risks via in-house testing, planned technical experimentation, and our feedback from valuable community sources. By the close of our MVP, we expect to have validated our initial approach with key users and communities.

Deliverables

This first stage will shoot for an MVP that will allow syncing changes across Roam, Obsidian, and LogSeq. Deliverables include a plugin published to each of the three apps' stores, as well as deploying lambda functions live to accept synchronous changes between them. There will also be a live WebSocket Gateway to notify online clients of changes by their peers on a shared page.

All plugin code published to these stores are required to be open source. And while we will start the network with computing resources we manage, all code that run on those resources will be open source. This means that teams will be able to deploy a self hosted version of SamePage on their own servers to handle syncing between their TFTs, if we build it with this composability in mind.

Development Roadmap

All milestones listed below will be worked on by the first two team members specified in the Team section. The timelines on each milestone assumes a July 1st, 2022 start date. In general, milestone estimates were calculated by estimating what we needed for four months of development, and reverse engineered from there:

  1. Connect Roam Graphs with each other
    1. Build out RoamJS Multiplayer to support page syncing across multiple graphs, using conflict-free resolution data types
      • Milestone is already a work in progress and expected to simply polish/test for users within Roam to use.
      • July 1st - July 7th
      • $2754.10
  2. Connect Logseq & Roam Graphs with each other
    1. Publish a preliminary extension on LogSeq
      • July 8th - July 14th
      • $2754.10
    2. Port logic used in RoamJS Multiplayer to LogSeq extension to support page syncing across multiple graphs
      • July 15th - July 28th
      • $2754.10
    3. Connect a Roam graph to LogSeq graph for append-only syncing
      • July 29th - August 11th
      • $5508.20
  3. Connect Obsidian, Logseq, & Roam Graphs with each other
    1. Publish a preliminary extension on Obsidian
      • August 12th - August 18th
      • $2754.10
    2. Port logic used in RoamJS Multiplayer to Obsidian extension to support page syncing across multiple vaults
      • August 19th - September 1st
      • $5508.20
    3. Connect a page from an Obsidian vault to a page in a Roam graph and LogSeq graph for append-only syncing across the three tools
      • September 2nd - September 22nd
      • $8262.30
  4. Polish, Documentation, & Maintenance
    1. Start building out documentation on how to add more clients to SamePage
      • September 23rd - September 30th
      • $2754.10
    2. Start recording demos and reaching out to teams for a monitored alpha launch
      • October 1st - October 7th
      • $2754.10
    3. Support private file storage on IPFS using DID encryption
      • October 8th - October 14th
      • $2754.10
    4. Start working on a self hosted version for technically minded teams to use on their own servers
      • October 15th - October 21st
      • $2754.10
    5. Maintenance and improvements: bug clean up and buffer for any remaining work to be done from previous milestones
      • October 22nd - October 31st
      • $3934.43

Total Budget Breakdown

$48K - Used to pay two core contributors $6K / month for four months of development.

Maintenance and Upgrade Plans

This grant application serves as stage 1 of a four stage plan to build out this project into a sustainable business model, who's funds will be used to adapt the infrastructure and software over time. See the Launch Plan in this doc for details on the later stages of the project.

Team

Our team is more active on Twitter, so we listed those links first.

Team Members

David Vargas

Brendan Langen

Joel Chan

Team Website

https://samepage.network

Relevant Experience

Team code repositories

Additional Information

We learned about the Open Grants Program through Karola Kirsanow. Her team at Protocol Labs have been funding the development of the Discourse Graph RoamJS extension David and Joel have been working on. We believe synthesizing and collaborating on discourse graphs to be the first major application for research teams to use SamePage. This project goes a step further to accelerate the creation of research public goods, particularly those suited for decentralized collaboration and science.

The best email addresses to reach us at are:

silvianetobessa commented 2 years ago

@dvargas92495 These are raw comments I wrote down as I was reading, take them with a pinch of salt. I share them in the spirit of "providing feedback early and often".

Technical Sponsor:

Project Description:

Value:

Benefits:

Development roadmap:

Team: Joel Chan: should we emphasise he’s not receiving funds at this stage?

dvargas92495 commented 2 years ago

Technical Sponsor:

yes I wasn't sure what to put here, down to incude whatever you guys think is best

add some links to the web2 tools?

added!

Use case: who’s “your”?

clarified!

Suggestion: add listed above.

added a list of which apps we hope to include in the mvp, and which to connect later

I would advise you to value consistency.

Our plan is to implement both the network and the plugins that interface with the network. I mentioned the network in the project description as a series of stateless lambda functions that will use IPFS as the file storage backend, have flipped the order to hopefully bring clarity.

provide a more “tech saviour” example too

Can you clarify more what you mean here in this bullet?

I personally like to avoid absolutes,

agreed, replaced

roadmap

Yea wasn't sure what would be most useful here. Made it more hierarchical

teams

Clarified Joel's role!

linkedin

My thought was that this was meant as a place to learn more about us or connect with us. My linkedin is effectively useless in that regard as I don't keep that up to date and Twitter serves that purpose better for me. I assumed the same was true for Brendan and Joel. Should we still include it?

KarolaKirsanow commented 2 years ago

Hey @dvargas92495 - nice to see this coming together. Few comments and QQ:

dvargas92495 commented 2 years ago

technical sponsors

done!

hyperlink generously

I added a couple more in deliverables - however was there something that jumped out at you? couldn't find much else to be hyperlinked besides the TFT app, which I linked twice in the project description

feasibility, desirability, viability

using git

I hadn't ruled out git and in fact I was thinking of using git at the very least as inspiration. There's been a good amount of research done on CRDTs and git like CRDTs (https://riffle.systems/papoc22.pdf) that I think will be where we ultimately land.

The main issue I see with just git is with handling merge conflicts in an environment when multiple users are editing the same "page" at the same time. My original comment in the doc about "rich text" was weak and I've revised inline.

silvianetobessa commented 2 years ago

Hey @dvargas92495 I find it hard to comment and make suggestions on the issue. I ended up copying the current version of the proposal to a google doc, and I left you a trail of comments and small suggestions. Some are definitely more valuable than others -_-'

Overall, the proposal is getting stronger after each iteration! I like how you emphasise the composability of the MVP and de-risked it by proposing synchronous changes 💪

My two main concerns are:

  1. that we are still short on explaining how TFTNet serves a community need, beyond a reasonable doubt. What's our target community? Hypothetical, what can the team do to increase TFTNet chances to get traction and momentum?
  2. we list some technical challenges, but I don't think we are reassuring the reader that the team can solve at least a subset of them. As I see it, conflict resolution and versioning are fundamental parts of TFTNet. This is detailed in the Launch Plan doc, but I'd like to see a short statement of the team's commitment to add and build those capabilities next, or a short description of how you would solve this next.
dvargas92495 commented 2 years ago

Thanks for the detailed feedback! Sorry about making you spin up a copy on the google doc, I should have done this at the outset!

I left some edits in both the issue and the google doc (ironically, a use case for this project idea). I'm not sure I've addressed your main concerns fully, but I added some more paragraphs attempting to address both. Gonna do another read through+edits tomorrow.

We've also landed on the project's actual name: SamePage. Name's simple, and communicates the idea of trying to get separate TFTs "on the same page".

Our landing page is live on https://samepage.network - it's mostly my starter app template for now with an email input for building up a waitlist. I'm also investigating how to acquire https://same.page as that would be really cool 😎

I remember from our call, you both mentioned discussing with the ecosystem teams, any news on that front? Are our only next steps to keep iterating on this doc and then post in the Filecoin repo when ready?

dvargas92495 commented 2 years ago

Ok we've iterated on the doc and on the landing page (changes made on the doc have been copied to this issue as well). Let us know if you have any additional thoughts!

silvianetobessa commented 2 years ago

Each of the companies behind these products believe

believe -> believes

silvianetobessa commented 2 years ago

@dvargas92495 Looking good! Let's just hold the submission for @KarolaKirsanow 's feedback and our meeting next week.