I tried using GoBGP to write a simple golang-based alternative to ExaBGP (which is great and missing from this article) and was discouraged because GoBGP simply did too much, which I didn't need (routing tables) and making it not do those things was extremely time-consuming, so much so that I started writing my own BGP implementation in Go, but, pretty quickly realized it was a larger project than I wanted to take on at that moment, so it got shelved. Exabgp was "good enough".
I'm happy to hear someone else will find this useful. Let me know if you have any feedback.
CoreBGP isn’t for you if you want something to do the work of evpn parsing for you. This framework gives you hooks to the very low level bgp state machine. There is a lot on top to do yourself to support the exotic address families.
The main reason I'm considering using CoreBGP directly is that in order to use the evpn project I'm building, the user has to setup a GoBGP instance which might cause problems.
Embedding GoBGP just like kube-router[0] did might be a good idea too. Thank you for the advice.