Giter Club home page Giter Club logo

bolivar's Introduction

Open Services

A Open Service is a public infrastructure project which purpose is to act similar to a public service/utility.

This means the service should not seek to earn profit for it's owners and/or workers, but rather be self-sustainable by receiving funding from its users, similar to a public service.

Open Services are created for the public benefit of having a open source service providing some values to it's users. Users who think the service is providing enough value to be funded, will help fund the service.

One of the first Open Services is Open-Registry, a public package registry that serves software engineers with necessary infrastructure to share code between different projects and package managers.

Other Open Services are in the Evaluating phase.

Open Services are similar to "Open Startups" but without the for-profit motive that a company has. Open Startups refers to openness and sharing of statistics publicly, but Open Services goes one step further and declares that the Open Service is explicitly not about earning profit but about providing value for all it's users and open to the community to own and contribute to.

Each open service is financed individually, to ensure that each project is self-sustainable. They share a common framework but acts for their own survival in the end. Open service is just a set of guidelines the open services use and act according to.

Framework

Open Services aims to provide a framework for running public utility like infrastructure.

The framework consists of multiple parts.

Finance

  • Self-Funded
  • Automatic payment of expenses from same funds
  • Public history of current/past incomes/expenses
  • Efficiency of received funds
  • Have shutdown scenario in mind
    • What happens with existing funds?
    • How will shutdown of financial services happen?

Software Infrastructure

  • Automatic infrastructure
    • Deploys on commit
  • Public introspection
    • Deployment logs
    • Changelogs
  • Shared secrets access
    • Guidelines for security

Governance

  • Full transparency
    • Deploys
    • Metrics
    • Alerts
    • Funding
    • Expenses
  • Funded/Governed/Developed by the community
    • Clear governance setup
    • Visible membership in the different projects
  • Should be able to migrate to later version of framework

Product

  • No backwards incompatible changes (unsure?)
    • Once something been deployed, no taking it back
  • Full export functionality
  • Automatic export on shutdown if possible
  • Offline-first
  • Compatible with the alternative services if possible
  • Only focuses on one product category
  • Explicit phases
    • Evaluating
    • Starting
    • Operating
    • Closing
    • Closed
  • Clear start/continue/stop scenarios

The goal of a Open Service

Providing a infrastructure service to the public, in exchange for donations from the public to continue running the service.

Things that we currently have being run by private for-profit companies, should instead be provided by a non-profit oriented interest, otherwise the incentives are misaligned.

bolivar's People

Contributors

victorb avatar

Stargazers

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

Watchers

 avatar  avatar  avatar

Forkers

rafaelfess

bolivar's Issues

Prefetch most popular packages

It would be nice if there were a way to preemptively download, say, the latest versions of the 20% most popular packages so there is a higher chance of it being available offline when I need it and haven't installed it before.

Panic in go-libp2p-kad-dht

panic: assignment to entry in nil map

goroutine 287133 [running]:
github.com/jbenet/goprocess.(*process).AddChildNoWait(0xc0114b7320, 0x106ae20, 0xc011536540)
	/go/pkg/mod/github.com/jbenet/[email protected]/impl-mutex.go:72 +0x18d
github.com/jbenet/goprocess/context.WithProcessClosing(0x105ec40, 0xc011bf3c40, 0x106ae20, 0xc0114b7320, 0xc00e330fb8, 0xc0094a0f88)
	/go/pkg/mod/github.com/jbenet/[email protected]/context/context.go:85 +0x170
github.com/jbenet/goprocess/context.OnClosingContext(...)
	/go/pkg/mod/github.com/jbenet/[email protected]/context/derive.go:12
github.com/libp2p/go-libp2p-kad-dht.(*dhtQueryRunner).queryPeer(0xc003c373b0, 0x106ae20, 0xc0114b7320, 0xc00ac396b0, 0x22)
	/go/pkg/mod/github.com/libp2p/[email protected]/query.go:270 +0x67
github.com/libp2p/go-libp2p-kad-dht.(*dhtQueryRunner).spawnWorkers.func1(0x106ae20, 0xc0114b7320)
	/go/pkg/mod/github.com/libp2p/[email protected]/query.go:226 +0x50
github.com/jbenet/goprocess.(*process).Go.func1(0xc00c5511c0, 0xc0114b7320, 0xc0114b7380)
	/go/pkg/mod/github.com/jbenet/[email protected]/impl-mutex.go:112 +0x3c
created by github.com/jbenet/goprocess.(*process).Go
	/go/pkg/mod/github.com/jbenet/[email protected]/impl-mutex.go:111 +0x1f7

Happens when fetching packages via ipfslite.

Seems the same as libp2p/go-libp2p-kad-dht#334 but hasn't been released yet.

ipfs still kills routers

Currently, having troubles developing with bolivar as after 30 seconds (just 10 peers), the router provided by my ISP is forcing a restart.

Thought we would be able to avoid this problem by using ipfslite with low values for the connection manager, but seems that's not enough.

There is a long-standing issue to have this fixed in go-ipfs: ipfs/kubo#3320

Find Open-Registry multiaddr via dnsaddr

Currently, Bolivar uses a hardcoded multiaddr + Peer ID to find the peer for Open-Registry that has the full archive.

Instead, we should make the Open-Registry app update a DNS record so we can update it when needed, without having to update the hardcoded value.

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.