Giter Club home page Giter Club logo

endo's Introduction

๐Ÿšง Endo ๐Ÿšง

build status contributing license

Endo is a JavaScript platform ๐Ÿ‘ทโ€โ™€๏ธunder development๐Ÿ— for secure communication among objects within one process and distributed between mutually suspicious machines. The foundation of Endo is SES, a tamper-proof JavaScript environment that allows safe execution of arbitrary programs in Compartments.

โš ๏ธEndo is not Done. All following statements about Endo are aspirational.โš ๏ธ

Most JavaScript libraries built for Node.js, either in CommonJS or ECMAScript module format, are suitable for running in Endo without modification, since such programs rarely tamper with global scope or shared intrinsic objects. The exception is shims, which require special treatment and express consent to work with Endo.

Endo protects program integrity both in-process and in distributed systems. SES protects local integrity, defending an application against supply chain attacks: hacks that enter through upgrades to third-party dependencies. Endo does this by encouraging the Principle of Least Authority.

Since most JavaScript libraries receive powerful capabilities from global objects like fetch or modules like net, Endo uses LavaMoat to automatically generate reviewable policies that determine what capabilities will be distributed to third party dependencies.

For distributed systems, Endo stretches object oriented programming over networks using asynchronous message passing to remote objects with the Handled Promise API and a Capability Transfer Protocol.

Between remote objects and SES compartments, Endo makes distributed programs easy to program, and easy to reason about integrity. CapTP frees the programmer from needing to create bespoke communication protocols over message ports or byte streams.

Ruminations on the Name

  • In Latin, "endo-" means "internal" or "within". This is fitting because Endo runs Node within a safe sandbox. This is fitting in turn because Endo is built on the legacy of Google Caja. In Spanish, "caja" means "box" and is related to the Latin word "capsum" and English "capsule", as in "encapsulate".
  • Endo is an anagram of Node and Deno. That is to say, we are not Done yet.
  • The endo command, like the sudo command, is a "do" command. However, instead of escalating privilege, it attenuates privilege.
  • Endo lets applications endow packages with limited powerful objects and modules. As they say, you can't spell "endow" without "endo"!
  • So, "E.N.Do" forms the acronym "Encapsulated Node Do".

So, just as "soo-doo" (super user do) and "soo-doh" (like "pseudo") are valid pronunciations of sudo, "en-doh" and "en-doo" are both valid pronunciations of endo.

Bug Disclosure

Please help us practice coordinated security bug disclosure, by using the instructions in our security guide to report security-sensitive bugs privately.

For non-security bugs, please use the regular Issues page.

License

Endo and its components are Apache 2.0 licensed.

endo's People

Contributors

agoricbot avatar aidenrourke avatar caridy avatar chris-hibbert avatar dckc avatar dependabot[bot] avatar dtribble avatar erights avatar fudco avatar jdalton avatar jfparadis avatar katelynsills avatar koba04 avatar kriskowal avatar kumavis avatar mappum avatar michaelfig avatar mikesamuel avatar orangeman avatar rekmarks avatar tgrecojs avatar trusktr avatar warner avatar

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.