Skip to content
This repository has been archived by the owner on May 27, 2021. It is now read-only.

gortc/dev

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

41 Commits
 
 
 
 

Repository files navigation

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.