Giter VIP home page Giter VIP logo

anarchyos's Introduction

Hi, I'm Julian ๐Ÿ‘‹

I'm a software engineer with a focus on P2P, Node.js, React, Blockchain and Electron.

Currently I'm creating Filecoin Station (desktop app) and Meridian (decentralized impact evaluator) at Protocol Labs.

anarchyos's People

Contributors

juliangruber avatar refset 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

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

Forkers

dylly

anarchyos's Issues

the stack

there's some confusion about what this will be on the technical site:

  • an os written in javascript?
  • an os written in c?
  • an "os" that you launch on top of a host os?

I'm quite sure we need to be able to run C applications, so just javascript / browser is not an option.

An entire os would allow for most flexibility but is a huge amount of work and slows down adoption times.

If we can make it so that you can run anarchyos on top of your host os - which needs to be *nix based - we'd have the best of both worlds and can still level up to a whole os later.

Package manager

Hey,

I put a little thought into our package manager.

Name

I'm bad at names so there's none.

Paths

Tricky part is how to support "legacy" applications. This means that we have to provide at least:

  • binaries at /usr/local/bin and /usr/local/sbin
  • libraries at /usr/local/lib
  • includes at /usr/local/include

A generic solution to that would be to make a package list its own links, relative to prefix (let's stay with /usr/local?).

So I thought up this packet.json format:

{
  "links": {
    "bin/me": "bin/me",
    "sbin/me-admin": "bin/me-admin",
    "lib/libme.so": "libme.so",
    "include/me.h": "include/me.h"
  }
}

This would create links at specified locations, pointing to the installed version.
User would be able to change them with <p-m> select <packet>@<version> (this'd relink) or drop into the right subshell with <p-m> use <packet>@<version>.

Dependencies

To ensure that dependencies are satisfied during the compilation, we'll simply be able to execute the compilation in a subshell started with <p-m> use <dep>@<version>.

I think this frees us from handling recursive dependency trees. Imagine this kind of dependency tree:

So, we'd compile b after dropping to a subshell with [email protected] and then c, after dropping it to a subshell with [email protected]. Disclaimer: I have no idea if this won't cause some weird linking conflicts.

Database

The database could live anywhere. Format could be similar to:

me
| - 1.0.0
             | - packet.json
             | - bin/me
             | - ...
| - 1.0.1
             | - packet.json
             | - bin/me
             | - ...

What do you think?

Related efforts

I think it would be good to casually list other projects that are in a similar vein, describe their relation and how this is different / more awesome.

sandboxed command and module loading

We need something like nvm/nave for EVERY command and library. Some prior art:
http://modules.sourceforge.net/

With the modules package you do module load NAME@VERSION and it creates a subshell with the module or library NAME at the requested VERSION and the LD_LIBRARY_PATH and PATH are updated to point to the vendored lib/ and bin/ directories for NAME.

What forms can this take?

I know this is very early on in its inception, but it's important to understand how this can succeed given the current ecosystem of technology. With merits & downsides.

The main options as I see it:

  • another operating system distro (based on Linux, SmartOS etc...)
    • + run-time efficiency / potential for optimisation
    • + graphical capabilities
    • + people might want to use for reasons other than anarchy
    • - slow distribution (initially at least - of course, anything is possible with a 'killer app')
  • pure web application
    • + very fast distribution
    • - will need some form of centralisation / client-server architecture given typical browser capabilities (e.g. STUN server)
    • - browser tyranny
  • node + use-of-standard-browser (bundled or not)
    • + easily tiered distribution
    • - browser tyranny
  • node + custom-browser (bundled)
    • + potentially tiered distribution
    • - would such a custom browser really be it's own thing or would it just evolve into the custom-node-browser anyway
  • custom-node-browser
    • + overall ease-of-development
    • + potentially tiered distribution

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.