Coder Social home page Coder Social logo

andymatuschak / orbit Goto Github PK

View Code? Open in Web Editor NEW
1.6K 31.0 51.0 55.71 MB

Experimental spaced repetition platform for exploring ideas in memory augmentation and programmable attention

Home Page: https://withorbit.com

License: Other

JavaScript 2.71% TypeScript 91.53% Objective-C 1.12% HTML 3.14% Shell 0.14% Roff 1.36%
spaced-repetition research-platform mnemonic-medium memory-augmentation

orbit's Introduction

Orbit

Orbit is an experimental platform for publishing and engaging with small tasks repeatedly over time. In the short term, it's focused on supporting the "mnemonic medium", a way of augmenting texts so that readers can easily remember all the key details. For an example, see Quantum Country, a textbook on quantum computation. More abstractly, Orbit aspires to offer a more general form of spaced repetition systems like Anki, as part of a connected cloud service. Learn more on the home page.

Orbit stores a collection of tasks and manages their schedules. Tasks can be ingested from around the web, via APIs or embedded iframes, or through various services running on your local computer. You can complete scheduled tasks in desktop, mobile, and web applications. A backend service syncs user data and orchestrates notifications.

You should also understand that Orbit is (for now) first and foremost a vehicle for research. We hope that it's useful, of course, but the main goal is not implementing features or polishing loose screws. We're focused on trying to understand the scope of systems like this, and what they one day want to become.

If you’re an author interested in using Orbit in your own texts, please view the preliminary documentation.

Packages

This is Orbit's mono-repo, comprising many modular packages. You'll want to run bun install in the root to install dependencies before doing anything else. (We use Bun as our package manager and script runner.) From there, bun build will build all the packages, and bun test will run all the tests.

While everything is written in Typescript, components of Orbit must run in Node, web browsers, and react-native environments, which can require some care. See the table below for an overview, and see Readme files in individual package folders for details on each package.

Package Description Node Browser react-native License
app Orbit client apps (webapp, native mobile / desktop) AGPL3+ / BUSL1.1
backend Server components of Orbit, including API backend, notifier, logging service, etc AGPL3+ / BUSL1.1
api Interface definitions for Orbit's REST API APL2
api-client Client implementation of Orbit API APL2
core Core data structures and operations APL2
store-shared Core types and functions for Orbit's data store APL2
store-fs Data store implementation for on-disk file format APL2
store-web Data store implementation for browsers via IndexedDB APL2
sync Syncs Orbit data stores (e.g. to central server) APL2
ui Generic styles and UI components APL2
web-component Author-facing library for Orbit integration into external web sites APL2
Auxiliary packages:
anki-import Implements Anki .apkg import APL2
docs Orbit's documentation site APL2
embedded-support Implementations shared by app and web-component APL2
note-sync Syncs Orbit prompts from Markdown notes APL2
sample-data Sample Orbit data for tests APL2

Contributing

Thank you for your interest in contributing!

Orbit's just been open-sourced; we haven't yet created consistent processes and venues for discussing ongoing development plans. Those will come (hopefully) soon!

Please understand that (for now), Orbit does not aspire to be a typical open-source project, soliciting open-ended contributions and participation from a large community. Orbit is primarily a vehicle for research; its direction is determined by Andy Matuschak and direct collaborators. We'll strive to keep the process open to input and relatively transparent. But open-source community engagement can be extremely time-consuming, and we have to keep our focus on the research.

That said, we're excited to work with serious contributors! Let's just get to know each other, ease into the relationship. If you're interested in participating, a great way to start would be by engaging with existing issues on GitHub, particularly those marked "help wanted." If you're game for implementing something substantial that we've been putting off, we'll be excited to invest time into a collaboration. If you find a bug in Orbit, we'd be grateful for issues with accompanying pull requests. If you'd like to contribute substantively but you're not sure how to start, please email Andy.

One more thing: as with many open-source projects, you'll need to sign a Contributor Agreement to contribute to Orbit. A bot will prompt you to do this when you open your first pull request. The agreement asks you to jointly assign copyright; that is, you retain all your own rights to the contribution, but share them with us. And we pledge that your work will be released under an FSF/OSI-approved license. See this FAQ if you have questions (our agreement is the same as Oracle's, but with names swapped).

License

Orbit is open-source. We use an unusual licensing strategy intended to be as permissive as possible while discouraging commercial copy-cats. Here's a summary; see the LICENSE files and details in each package for more:

Acknowledgements

Orbit was created by Andy Matuschak. It continues to develop the concept of the "mnemonic medium" co-created with Michael Nielsen. Orbit is a free service; our Patreon community helps it stay that way. You can become a member to support the work, and to read regular patron-only articles and previews of upcoming projects.

Thanks in particular to my sponsor-level patrons: Adam Marblestone, Adam Wiggins, Andrew Sutherland, Ben Springwater, Bert Muthalaly, Boris Verbitsky, Calvin French-Owen, Dan Romero, David Wilkinson, fnnch, James Hill-Khurana, James Lindenbaum, Jesse Andrews, Kevin Lynagh, Lambda AI Hardware, Ludwig Petersson, Maksim Stepanenko, Matt Knox, Mickey McManus, Mintter, Nathan Lippi, Patrick Collison, Paul Sutter, Peter Hartree, Ross Boucher, Russel Simmons, Salem Al-Mansoori Sana Labs, Thomas Honeyman, Tim O’Reilly, Todor Markov, Tom Berry, Tooz Wu, William Clausen, William Laitinen, Yaniv Tal.

orbit's People

Contributors

andymatuschak avatar goondrious avatar jessmartin avatar kirkbyo avatar maciejmatu avatar talor-a avatar zanderkasanjian avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

orbit's Issues

Support SVG images

Commonly used for diagrams, etc. There's potentially quite a lot of complexity here due to React Native, which can't natively display SVGs. We're already using react-native-svg for a few interface elements (including the starburst), but I believe it is not a full implementation of the format. We should better understand those limitations and how pervasive their impact is as part of an implementation strategy.

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.