Skip to content
Goals, principles and development status
Branch: master
Clone or download
Fetching latest commit…
Cannot retrieve the latest commit at this time.
Permalink
Type Name Latest commit message Commit time
Failed to load latest commit information.
LICENSE
README.md

README.md

dev

Hi, here you can find development info about gortc project, it's goals, principles, etc. Feel free to ask anything via issues.

Original author

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.

Goals

  • 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

Principles

  • 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, like v1.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

Contributors

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 status Build Status SDP decoding and encoding
RFC5389 STUN status Build Status STUN server and client
RFC5766 TURN status Build Status STUN + Tunnels
RFC5245 ICE status Build Status Uses STUN and TURN for TRAVERSAL
RFC6347 DTLS status Build Status Datagram Transport Layer Security Version 1.2
RFC4960 SCTP status Build Status Stream Control Transmission Protocol
WebRTC RTC status Build Status WebRTC

So far 35K SLOC and 230+ RFC pages implemented as go code.

You can’t perform that action at this time.