Skip to content

Roadmap

Raine Revere edited this page Nov 10, 2020 · 23 revisions

em

em is a transhierarchical outliner app that facilitates sensemaking flow.

A flow state... is the mental state in which a person performing an activity is fully immersed in a feeling of energized focus, full involvement, and enjoyment in the process of the activity. [1]

We can experience flow states with anything when the conditions are right. Athletes, musicians, programmers all experience flow. Why not also with sensemaking in our everyday lives? This includes journaling, note-taking, planning, outlining, analyzing, synthesizing, brainstorming, distilling, summarizing, consolidating... any cognitive-linguistic conceptual activity. Pen and paper has allowed these activities to flourish and grow in modern society. Yet digital technology enables more than simulated paper. We can leverage virtuality to extend our symbolic processing capacities and enable highly functional, connected, and powerful sensemaking experiences. As social systems collapse, environmental threats heighten, and cultural change speeds up, we need good sensemaking and good sensemaking tools more than ever before.

em provides a personal thoughtspace coupled with interactive controls that facilitate the emergence of a conceptual flow state. em maps shortcuts and mobile gestures to semantic operations (what your mind is doing) rather than mechanical operations (what the computer is doing), creating a tight feedback loop between thinking and writing.

Vision

We envision a cybernetic relationship with technology that extends our collective cognitive, linguistic, symbolic, and conceptual capacities so that we may more thoughtfully, accurately, and wisely make sense of ourselves and the world we live in.

Ownership

em is released as public source under the Do No Harm License.

Development of em is funded by the Cybersemics Institute, a U.S.-based 501(c)(3) nonprofit founded by Raine Revere.

Core Team

  • Raine Revere - Lead Developer
  • Anmol Arora - Developer
  • Bijay Shrestha - Developer

Status

em is in alpha status.

Objectives

em development is currently guided by six major objectives. Within objectives, epics represent groups of related tasks that require significant development effort.

⚡️ 100k

em must be speedy and smooth up to 100,000 thoughts. This would allow a reasonably prolific thinker to use the app for 2-3 years. At time of writing, performance issues emerge around 10,000 thoughts, although em is actively being used by its founder with about 25,000 thoughts. Larger capacities must be adequately handled in the areas of performance, storage, and load times.

(For a lifetime of sensemaking, em should eventually support 1,000,000 thoughts or more.)

Epics:

  • 🗽 Independence

    There are several architectural upgrades that involve refactoring the codebase into more "independent" pieces. Tight coupling in these areas represents a significant impediment to the goal of supporting 100,000 thoughts. Creating a solid architecture that can grow is essential to scaling thought capacity and achieving production-level performance.

    • Independent Edit #495
      • Changing a thought currently requires changing the context of all its descendants. This could involve hundreds or thousands of thoughts. Instead, changing a thought should only change its immediate connections.
    • Independent Render #188
      • Thoughts are currently rendered in the DOM as nested elements. Since ancestors are containers of descendants, they cannot be removed, even when they are no longer visible, as that would also remove all of their descendants. Instead, thoughts should be rendered as siblings and their x position controlled programmatically. This will not only allow hidden thoughts to not be rendered, but also more complex animations and transitions.
    • Independent Update #304, #230
      • There are known syncing issues when editing on multiple devices that result in modified or even deleted thoughts. This is likely due to update collisions, as both thoughtIndex[].contexts and contextIndex use arrays which are not easily merged. Instead, thoughts and contexts should be stored as objects so that individual thoughts can be added/removed without potentially overwriting the other thoughts with a state that has been updated on another device. There may be other syncing issues, but this is a known problem that must be addressed first.

💃 Beta

So many bugs must be vanquished before em is production ready!

Epics

  • 🐞 Bugs
  • ⛰ Stability
  • 🙂 Onboarding Experience

📱 Native Mobile

em has been built mobile-first, offline-first from the start. However, significant work is required to adapt the codebase to work as a native app. The current plan is to use Expo + React Native Web to create a (mostly) shared codebase between native and web.

🏆 Trophy Codebase

em is open to contributors from the open source community. In order to cultivate developer engagement, the codebase should be robust, well-organized, follow best practices, offer an API, and keep up-to-date with relevant new libraries and techniques.

Epics

  • 🔀 Refactoring
  • ✅ Testing (Issues)
    • Initial #244
    • Cursor and Browser Selection #422
    • Continuous Integration
  • 🔌 API
  • 📝 Documentation #668
  • 🔳 Stand-Alone React Component (low priority)
  • 🧮 Metaprogramming #249

🧠 Full-Featured Sensemaking Experience

The features and capabilities of a sensemaking tool should be part of an integrated design that affords sensemaking flow. While many more features have been designed, these are the essential features necessary to use em as one's daily sensemaking platform.

Epics

  • 🏙 Context View
    • Initial
    • Commands work across normal and context views #320
    • Nested context views
    • Autocomplete #88
  • ↗️ Import/Export
    • Clipboard
    • Drag and Drop #866
    • Evernote (low priority)
    • Google Docs (low priority)
    • HTML
    • JSON #714
    • Markdown #867
    • Notion #868
    • Roam #865
    • Plaintext
    • WorkFlowy
  • 📎 Linking
    • ngrams #37 (low priority)
    • Inline Links #869
  • 📱 Multi-Device
    • Realtime sync
  • ✏️ Recently Edited #180, #323, #246
  • 📖 Split View #201
  • 🛠 Toolbar
    • Initial
    • Improve help system
  • 🔠 Sorting
  • 🗄 Table View
    • Initial
    • Fix nested table positioning #467
    • Table descendants are indented too far #471
  • 🗑 Undo/Redo #105

🎁 Collaboration

Personal sensemaking cannot truly be separated from collective sensemaking, and the tools should support this. While em initially focuses on the individual experience, full sharing and collaborating capabilities are necessary for em to be usable within the larger web and social media ecosystem.

Epics

  • Publish
    • Initial
    • IPFS Pinning
    • Self hosting
    • Mutable
  • Share
    • Public
    • Permissioned
  • Collaborative Editing
Clone this wiki locally