Hi, here you can find development info about gortc project, it's goals, principles, etc. Feel free to ask anything via issues.
I'm Aleksandr Razumov (ernado), full time go developer with commercial experience starting from 2014 (and non-go from 2011) and currently working at German company not related to project.
- Create tools and libraries for NAT traversal and ICE
- Make them safe, reliable, fast, stable and simple to use and extend
- Make them useful (extensible and flexible) for enterprise while staying open source
- Don't be hype and PR driven, popularity and stars count are not appropriate metrics
- High and rigorous standards for core packages:
- Minimum (none is ideal) 3-rd party deps
- Greater than 90% test coverage
- Benchmarks to track performance
- Zero-allocation in hot paths
- Tests for zero allocation
- Fuzz-testing
- Integration (functional, e2e) tests
- Static checks (linters)
- Test with
-race
flag - Run ci tests with
go tip
daily - API backward compatibility check
- Mostly bottom-up development with feedback loop
- Decoupling and abstraction layer isolation
- Conscious architecture design with clear goals
- Follow effective go and CodeReviewComments
- Follow semver with
v
prefix for tags, likev1.2.0
- Use RFC wording whenever possible but not at the expense of idiomaticity
- Manage dependencies with dep until vgo stabilizes and will allow reproducible builds without net connectivity
Thanks so much for contribution to the gortc project:
Current development status for tech stack for NAT traversal and WebRTC interoperation in golang.
rfc | name | status | build | description |
---|---|---|---|---|
RFC4566 | SDP | SDP decoding and encoding | ||
RFC5389 | STUN | STUN server and client | ||
RFC5766 | TURN | STUN + Tunnels | ||
RFC5245 | ICE | Uses STUN and TURN for TRAVERSAL | ||
RFC6347 | DTLS | Datagram Transport Layer Security Version 1.2 | ||
RFC4960 | SCTP | Stream Control Transmission Protocol | ||
WebRTC | RTC | WebRTC |
So far 35K SLOC and 230+ RFC pages implemented as go code.