I get it’s written in go, but I have no idea what BGP is. Big green pages, binary grepping pipes, boisterous gambling pachyderms?
Jokes aside, y’all might want to give a brief about what this is for us uninitiated.
I get it’s written in go, but I have no idea what BGP is. Big green pages, binary grepping pipes, boisterous gambling pachyderms?
Jokes aside, y’all might want to give a brief about what this is for us uninitiated.
Also, if you don’t know what BGP is, you aren’t going to be interested in a project implementing BGP.
Take one of your repositories as an example: https://github.com/timraymond/pricegrabber
> A gem for interacting with the Pricegrabber API
Should you have to add "Application Programming Interface (API)" the first time you use "API" anywhere? Realistically no, because the audience can be assumed to understand what it means. If they don't, it's only a search away.
Same goes for networking and DNS/BGP/CNAME and more. If you're using a library/server for BGP, you either know what those terms are, or know how to find out more.
But not all resources are meant for beginning who don't know the basic terms in a field, and that's OK, because otherwise everything would be extremely verbose when it doesn't have to.
[1] An example: http://boston.conman.org/2022/02/16.1
If something isn’t clear on HN, try searching for it. If you don’t find it immediately, then you can ask without losing face.
It’s also, I assume by the authors, submitted to hackernews which is a pretty diverse place. “Basics” is relative.
I am not saying there should be a dissertation about how the thing works, but it’s generally bad form to use abbreviations without using the long form at least once - for people who would indeed like to search for more information.
Like the Internet... way to understate it.
Many enterprises use it for their connectivity. If you are multihomed it's basically essential.
Even if you are not multihomed BGP is the most robust way to handle failover between two uplinks to the same ISP. If you are not using full routes and just taking default from each ISP the requirements/load on your router(s) are almost nothing.
Another popular use case is inside private networks, especially over GRE tunnel meshes where the filtering features of BGP allow better/easier control over topology than OSPF.
I've even seen individual servers use BGP for anycasting (usually DNS servers) or http load balancing (with DSR and L4 hashing on the upstream router).
I have been a professional software developer for 22 years with a 4 year CS degree from a good school, and I only ever heard of BGP for the first time last year. Most developers never need to know about BGP. People learn new stuff every day.
The point stands. Define your acronyms unless they're really really basic, like HTTP or JSON.
"GoBGP is an open source Border Gateway Protocol (BGP) implementation..."
Writers should never assume that knowledge of an acronym is universal.
That is my point. If I have a repo for a BGP implementation, the only people who are going to use my code are going to know what BGP is. No one is going to stumble upon the repo, read about what BGP is, and then decide to use the code. Really, they wouldn’t even be ABLE to use the code… they aren’t going to have access to a router that supports BGP… if you have access to a router with BGP, you already know what BGP is.
Use DDG if the HN thread doesn’t immediately give you a hint.
Cloudflare has already a good explanation on how it works, so I'll just point everyone out to this article: https://www.cloudflare.com/learning/security/glossary/what-i...
Also, about that undefined BGP. I'm not sure if this will help explain why BGP wasn't explained, but this is from NTT OSRG (Open-source Research Group), so probably they thought that everyone knew what BGP is (since that you probably won't encounter this otherwise).
Also, they have a Rust version: https://github.com/osrg/rustybgp
In theory BGP can be used within a single network, though it is not well-suited to such an application except in very large networks. Facebook is known to use BGP internally [2]. Usually an "interior gateway protocol" like OSPF or IS-IS is better for internal routes, with BGP then distributing those routes to the external networks from the gateway routers (i.e. those routers that interconnect the networks). BGP can also be used for other, more niche applications within a single network, like setting up VPNs (VPLS, VPNv4, etc.).
[1] https://blog.benjojo.co.uk/post/bgp-stuck-routes-tcp-zero-wi...
[2] https://research.facebook.com/publications/running-bgp-in-da...
I opened a PR to fix that. https://github.com/osrg/gobgp/pull/2535
If you DDG, the top ten hits explain it without even clicking. Try that.