Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Looking for new maintainers / project reboot #65

Open
zorun opened this issue Jun 14, 2020 · 7 comments
Open

Looking for new maintainers / project reboot #65

zorun opened this issue Jun 14, 2020 · 7 comments

Comments

@zorun
Copy link
Collaborator

zorun commented Jun 14, 2020

sileth has not been active on the project for several years. I have been doing some interim maintenance, but I can't commit to spend a lot of time on the project.

The situation is not really good at the moment, both on the community side:

  • there are unaddressed security issues (e.g. self xss in every page  #63)
  • code proposals take several months to be reviewed, or are not reviewed at all, discouraging new contributors

and on the technical side:

  • the code is aging and is becoming hard to maintain / debug (especially the bgpmap visualisation)
  • we need an API (see Add a public-facing API #84)
  • the communication between the backend and web UI frontend is really messy, it would really benefit from an API
  • the project is not well-adjusted for general usage: either it provides too much (dependency on memcached), too specific ("domain" concept), or too little (customization is difficult and requires to hack the code)
  • as a result, many people modify bird-lg to suit their needs, creating a lot of divergence and not contributing energy to the "main" project

This calls for a "reboot" of the project, either by investing more maintenance energy to be able to transform it, or by re-designing / rewriting (parts of) the project from scratch.

In both cases, it requires a community of motivated people! If you are interested in such a "reboot", please reply to this ticket to discuss.

@ghost
Copy link

ghost commented Jun 14, 2020

Hi there!

Consider me interested. I have been using the burble bird-lg fork for a few weeks and made several modifications, but I decided to scrap it after all and write something own with focus on usability and security. Maybe this can be reused for a new community-driven bird-lg replacement.

My bird-lg fork: https://github.com/petabyteboy/bird-lg
My new project: https://git.petabyte.dev/petabyteboy/rusty-lg

@zorun
Copy link
Collaborator Author

zorun commented Jun 28, 2020

Thanks @petabyteboy . Is your new project focused on the same needs as bird-lg, or something simpler?

@zorun
Copy link
Collaborator Author

zorun commented Jun 28, 2020

To start a discussion on frontend-backend communication: I just remembered about this project https://github.com/inex/birdseye from @inex

It serves the same purpose as lgproxy.py, but it has a nice JSON API (example here: https://www.inex.ie/rc1-cork-ipv4/ ). It's written in PHP.

@ghost
Copy link

ghost commented Jun 30, 2020

Thanks @petabyteboy . Is your new project focused on the same needs as bird-lg, or something simpler?

It is focused on the same needs with an additional requirement to properly visualise IGP routes.
Having a JSON API for the router seems like a great idea first, but I prefer not to run any more complex parsing logic on the router. My implementation keeps the simple lgproxy, and adds a similar JSON API to the looking glass server. This means the parser implementation has to be updated in one place only, and the routers don't have to execute the a lot of complicated logic.

@samip5
Copy link

samip5 commented Aug 9, 2020

I just want to mention Hyperglass here. https://github.com/checktheroads/hyperglass

It does not have the "show protocols" thing, but other than that it's good, and written in Python.

@zorun
Copy link
Collaborator Author

zorun commented May 10, 2021

I had a look at Hyperglass and it looks like a nicely organised project (code/tests/etc). It is nearing a v1.0 from what I can tell. It supports many backends (including Bird and FRR) which is impressive.

However I find its UI a bit "crude" and it lacks a BGP map. For me this is the killer feature of bird-lg.

Design-wise, Hyperglass used to have a Linux agent running on the router itself (same idea as lgproxy). But they now switched to simply connecting over SSH. I think it's a good idea because it delegates authentication to SSH and requires no software installation on the Linux router. Performance might be an issue though (SSH connection multiplexing might help). Security should be OK by forcing birdc -r as the only usable command server-side, with usage along the lines of:

echo "show protocols" | ssh linuxrouter birdc -r

@zorun
Copy link
Collaborator Author

zorun commented May 10, 2021

I intend to keep doing low-intensity maintenance on bird-lg, but nothing big (maybe python3 support at maximum).

If you are interested in investing time in the project, the "reboot" offer still stands! Here is what I think are the most needed big changes (but this can and should be discussed):

  • add an API to bird-lg (Add a public-facing API #84)
  • rewrite the web UI so that it exclusively uses the API (clean frontend / backend separation)
  • rework bird-lg <--> router communication (e.g. using the SSH idea, @petabyteboy 's argument about avoiding complexity on the router is good)

@zorun zorun changed the title Looking for new maintainers / project reboot? Looking for new maintainers / project reboot May 10, 2021
@zorun zorun pinned this issue May 10, 2021
This was referenced May 10, 2021
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Projects
None yet
Development

No branches or pull requests

2 participants