Open source webrtc stack implementation in go.
The gortc project aims to implement WebRTC protocol in golang,
providing interoperability between golang clients (or servers),
browsers (or other agents, e.g. node-js implementation).
I'm Aleksandr Razumov (ernado), Senior Go Developer with commercial experience
starting from 2014 (and non-go from 2011) and currently working at unrelated highload 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
- Integration (functional, e2e) tests
- Static checks (linters)
- Test with
- 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
- Use RFC wording whenever possible but not at the expense of idiomaticity
- Manage dependencies with dep until tooling (linters, api check)
supports go modules
Thanks JetBrains for support!
The gortc project uses TeamCity as CI/CD tool
that greatly simplifies running a lot of end-to-end and cross-tests for each sub-project.
The provided OpenSource license allows project not doing compromise on reliability.
Thanks so much for contribution to the gortc project:
Project is in active development, but some of the build blocks are already implemented. Now you can:
Total: 2079 commits, 32847 lines
Last 30 days: 22
Last 7 days: 0
Last 24 hours: 0
Updated: Monday, 17-Jun-19 14:19:21 UTC
Contributions and bug reports are welcome. Source code is in gortc/web repo.