github.com/pion/webrtc/v4@v4.0.1/DESIGN.md (about) 1 <h1 align="center"> 2 Design 3 </h1> 4 WebRTC is a powerful, but complicated technology you can build amazing things with, it comes with a steep learning curve though. 5 Using WebRTC in the browser is easy, but outside the browser is more of a challenge. There are multiple libraries, and they all have 6 varying levels of quality. Most are also difficult to build, and depend on libraries that aren't available in repos or portable. 7 8 Pion WebRTC aims to solve all that! Built in native Go you should be able to send and receive media and text from anywhere with minimal headache. 9 These are the design principals that drive Pion WebRTC and hopefully convince you it is worth a try. 10 11 ### Portable 12 Pion WebRTC is written in Go and extremely portable. Anywhere Golang runs, Pion WebRTC should work as well! Instead of dealing with complicated 13 cross-compiling of multiple libraries, you now can run anywhere with one `go build` 14 15 ### Flexible 16 When possible we leave all decisions to the user. When choice is possible (like what logging library is used) we defer to the developer. 17 18 ### Simple API 19 If you know how to use WebRTC in your browser, you know how to use Pion WebRTC. 20 We try our best just to duplicate the Javascript API, so your code can look the same everywhere. 21 22 If this is your first time using WebRTC, don't worry! We have multiple [examples](https://github.com/pion/webrtc/tree/master/examples) and [GoDoc](https://pkg.go.dev/github.com/pion/webrtc/v4) 23 24 ### Bring your own media 25 Pion WebRTC doesn't make any assumptions about where your audio, video or text come from. You can use FFmpeg, GStreamer, MLT or just serve a video file. 26 This library only serves to transport, not create media. 27 28 ### Safe 29 Golang provides a great foundation to build safe network services. 30 Especially when running a networked service that is highly concurrent bugs can be devastating. 31 32 ### Readable 33 If code comes from an RFC we try to make sure everything is commented with a link to the spec. 34 This makes learning and debugging easier, this WebRTC library was written to also serve as a guide for others. 35 36 ### Tested 37 Every commit is tested via travis-ci Go provides fantastic facilities for testing, and more will be added as time goes on. 38 39 ### Shared libraries 40 Every Pion project is built using shared libraries, allowing others to review and reuse our libraries. 41 42 ### Community 43 The most important part of Pion is the community. This projects only exist because of individual contributions. We aim to be radically open and do everything we can to support those that make Pion possible.