The Athens Project

Hey Everyone!

@carolynvs mentioned the Athens project in her thread. Some folks have reached out to me about the project & how to get involved, so I thought I’d write something up for everyone!

We’re building a repository for Go modules that has two components:

  • Olympus - the central module repository for Go
  • Zeus - module proxies

A Little Bit About Olympus

We plan on making Olympus the central repository for Go modules. It implements the download protocol from the vgo proposal, so when someone does a go get call, they’ll have the option of pulling from Olympus. Modules are stored in a CDN and pulled from VCS’s. And here are the two things that make me happiest:

  • Modules are immutable in Olympus. That avoids what happened with go-bindata recently (the repo got deleted from Github and everyone who depended on it was out in the cold :frowning:)
  • The “central repository” will be a default hostname that round-robins to a bunch of different providers. They all replicate modules with each other. No one company or entity will own or control this thing

A few more things:

  • Anyone can of course host their own Olympus server if they want. The vgo proposal has a GOPROXY environment variable, so you can set that to point go get to your Olympus server
  • Olympus has a simple protocol for replicating modules

Get Involved!

The Athens project is young and we have a proof of concept running now. There’s still a ton of stuff to do in all corners of this project. Absolutely everyone is welcome to get involved. Here are some ways to get started:

1 Like

I love the aim of this project, I do have a couple of questions though. You guys are shooting to make a persistent decentralized repository of go getable source code, correct? This seems like a great application for a blockchain platform decentralized application on something like Ethereum or even a roll your own solution.

Has this been thought of in your development group and is there a reason for building on the platforms you all have chosen?

Hey All - just wanted to update that I wrote a brief-ish post with some more on the project:

Hi Curtis,

You guys are shooting to make a persistent decentralized repository of go getable source code, correct?

Yup, that’s right!

Regarding the blockchain, I honestly don’t have a good reason why we didn’t put any thought into blockchain. It never popped into my or anyone else’s mind :smile:

I can give a little bit of history on this design, though - I hope this helps?

We’ve gone through several iterations of the design with two guiding principles in mind:

  1. Removing moving pieces wherever possible
  2. Using established database primitives rather than inventing our own or trying new technology

With these in mind, we’ve arrived at an eventually consistent system across clouds that is designed to manage and share an event log for the global state of the system.

If you have ideas to improve on that foundation, we would definitely love to hear them - just file an issue and we’ll discuss there.

– Aaron

1 Like

This topic was automatically closed 90 days after the last reply. New replies are no longer allowed.