Codebase list golang-github-go-kit-kit / c91a482
README: API stability policy + misc updates Peter Bourgon 9 years ago
1 changed file(s) with 45 addition(s) and 28 deletion(s). Raw diff Collapse all Expand all
11
22 **gokit** is a working name for a **distributed programming toolkit** to serve the needs of the modern service-oriented enterprise.
33
4 - [GitHub repository](https://github.com/peterbourgon/gokit) -- RFCs, issues, PRs, etc.
5 - [go-kit mailing list](https://groups.google.com/forum/#!forum/go-kit)
6 - [Freenode](https://freenode.net) #gokit
4 - Mailing list: [go-kit](https://groups.google.com/forum/#!forum/go-kit)
5 - IRC: [Freenode](https://freenode.net) `#gokit`
76
87 ## Motivation
98
1110
1211 ## Goals
1312
14 - Operate in a heterogeneous SOA -- expect to interact with mostly non-gokit services
13 - Operate in a heterogeneous SOA — expect to interact with mostly non-gokit services
1514 - RPC as the messaging pattern
16 - Pluggable serialization and transport -- not just JSON over HTTP
15 - Pluggable serialization and transport — not just JSON over HTTP
1716 - Zipkin-compatible request tracing
18 - _more TODO_
1917
2018 ## Non-goals
2119
22 - Having opinions on deployment, orchestration, process supervision
23 - Having opinions on configuration passing -- flags vs. env vars vs. files vs. ...
24 - _more TODO_
20 - Supporting messaging patterns other than RPC — pub/sub, CQRS, etc.
21 - Having opinions on deployment, orchestration, process supervision, etc.
22 - Having opinions on configuration passing, i.e. flags, env vars, files, etc.
23
24 ## Component status
25
26 - API stability — [RFC complete](https://github.com/peterbourgon/gokit/blob/master/rfc/rfc007-api-stability.md), [adopted](API_stability_policy)
27 - `package metrics` — [RFC complete](https://github.com/peterbourgon/gokit/blob/master/rfc/rfc003-package-metrics.md), [first draft complete](https://github.com/peterbourgon/gokit/tree/master/metrics)
28 - `package server` — [RFC complete](https://github.com/peterbourgon/gokit/blob/master/rfc/rfc000-package-server.md), [prototyping](https://github.com/peterbourgon/gokit/pull/14)
29 - `package transport` — [RFC pending](https://github.com/peterbourgon/gokit/blob/master/rfc/rfc002-package-transport.md), [prototyping](https://github.com/peterbourgon/gokit/pull/14)
30 - `package log` — [RFC complete](https://github.com/peterbourgon/gokit/blob/master/rfc/rfc004-package-log.md), [prototyping](https://github.com/peterbourgon/gokit/pull/16)
31 - `package client` — [RFC pending](https://github.com/peterbourgon/gokit/blob/master/rfc/rfc001-package-client.md)
32 - Service discovery — [RFC pending](https://github.com/peterbourgon/gokit/blob/master/rfc/rfc005-service-discovery.md)
33 - Request tracing — [RFC pending](https://github.com/peterbourgon/gokit/blob/master/rfc/rfc006-request-tracing.md)
2534
2635 ## Contributing
2736
28 At this stage, we're still developing the initial drafts of all of the
29 packages, using an
37 At this stage, we're still developing the initial drafts of all of the packages, using an
3038 [RFC workflow](https://github.com/peterbourgon/gokit/tree/master/rfc).
3139 Before submitting major changes, please write to
3240 [the mailing list](https://groups.google.com/forum/#!forum/go-kit)
4553 We will use a variety of continuous integration providers to find and fix
4654 compatibility problems as soon as they occur.
4755
56 ### API stability policy
57
58 The gokit project depends on code maintained by others. This includes the Go
59 standard library and sub-repositories and other external libraries.
60 The Go language and standard library provide stability guarantees, but the other external libraries typically do not.
61 [The API Stability RFC](https://github.com/peterbourgon/gokit/tree/master/rfc/rfc007-api-stability.md)
62 proposes a standard policy for package authors to advertise API stability.
63 The gokit project prefers to depend on code that abides the API stability policy.
64
4865 ## Related projects
4966
5067 Projects with a ★ have had particular influence on gokit's design.
5168
5269 ### Service frameworks
5370
54 - [Kite](https://github.com/koding/kite), a micro-service framework
5571 - [go-micro](https://github.com/asim/go-micro), a microservices client/server library ★
5672 - [gocircuit](https://github.com/gocircuit/circuit), dynamic cloud orchestration
5773 - [gotalk](https://github.com/rsms/gotalk), async peer communication protocol & library
74 - [Kite](https://github.com/koding/kite), a micro-service framework
5875
5976 ### Individual components
6077
61 - [grpc/grpc-go](https://github.com/grpc/grpc-go), HTTP/2 based RPC
6278 - [afex/hystrix-go](https://github.com/afex/hystrix-go), client-side latency and fault tolerance library
63 - [streadway/handy](https://github.com/streadway/handy), net/http handler filters
64 - [rubyist/circuitbreaker](https://github.com/rubyist/circuitbreaker), circuit breaker library
65 - [spacemonkeygo/monitor](https://github.com/spacemonkeygo/monitor), data collection, monitoring, instrumentation, and Zipkin client library
66 - [mattheath/phosphor](https://github.com/mattheath/phosphor), distributed system tracing
6779 - [codahale/lunk](https://github.com/codahale/lunk), structured logging in the style of Google's Dapper or Twitter's Zipkin
68 - [sourcegraph/appdash](https://github.com/sourcegraph/appdash), application tracing system based on Google's Dapper
6980 - [eapache/go-resiliency](https://github.com/eapache/go-resiliency), resiliency patterns
7081 - [FogCreek/logging](https://github.com/FogCreek/logging), a tagged style of logging
82 - [grpc/grpc-go](https://github.com/grpc/grpc-go), HTTP/2 based RPC
83 - [inconshreveable/log15](https://github.com/inconshreveable/log15), simple, powerful logging for Go
84 - [mailgun/vulcand](https://github.com/mailgun/vulcand), prorammatic load balancer backed by etcd
85 - [mattheath/phosphor](https://github.com/mattheath/phosphor), distributed system tracing
86 - [pivotal-golang/lager](https://github.com/pivotal-golang/lager), an opinionated logging library
87 - [rubyist/circuitbreaker](https://github.com/rubyist/circuitbreaker), circuit breaker library
7188 - [Sirupsen/logrus](https://github.com/Sirupsen/logrus), structured, pluggable logging for Go ★
72 - [mailgun/vulcand](https://github.com/mailgun/vulcand), prorammatic load balancer backed by etcd
89 - [sourcegraph/appdash](https://github.com/sourcegraph/appdash), application tracing system based on Google's Dapper
90 - [spacemonkeygo/monitor](https://github.com/spacemonkeygo/monitor), data collection, monitoring, instrumentation, and Zipkin client library
91 - [streadway/handy](https://github.com/streadway/handy), net/http handler filters
7392 - [vitess/rpcplus](https://godoc.org/code.google.com/p/vitess/go/rpcplus), package rpc + context.Context
74 - [pivotal-golang/lager](https://github.com/pivotal-golang/lager), an opinionated logging library
75 - [inconshreveable/log15](https://github.com/inconshreveable/log15), simple, powerful logging for Go
7693
7794 ### Web frameworks
7895
96 - [Beego](http://beego.me/)
97 - [Gin](https://gin-gonic.github.io/gin/)
98 - [Goji](https://github.com/zenazn/goji)
7999 - [Gorilla](http://www.gorillatoolkit.org)
80 - [Revel](https://revel.github.io/)
81 - [Gin](https://gin-gonic.github.io/gin/)
82100 - [Martini](https://github.com/go-martini/martini)
83101 - [Negroni](https://github.com/codegangsta/negroni)
84 - [Goji](https://github.com/zenazn/goji)
85 - [Beego](http://beego.me/)
102 - [Revel](https://revel.github.io/)
86103
87104 ## Additional reading
88105
89 - [Dapper, a Large-Scale Distributed Systems Tracing Infrastructure](http://research.google.com/pubs/pub36356.html) -- Google
90 - [Your Server as a Function](http://monkey.org/~marius/funsrv.pdf) (PDF) -- Twitter
91 - [Architecting for the Cloud](http://fr.slideshare.net/stonse/architecting-for-the-cloud-using-netflixoss-codemash-workshop-29852233) -- Netflix
106 - [Architecting for the Cloud](http://fr.slideshare.net/stonse/architecting-for-the-cloud-using-netflixoss-codemash-workshop-29852233) — Netflix
107 - [Dapper, a Large-Scale Distributed Systems Tracing Infrastructure](http://research.google.com/pubs/pub36356.html) — Google
108 - [Your Server as a Function](http://monkey.org/~marius/funsrv.pdf) (PDF) — Twitter