How I "Adopted" Seagull
I don't work with Seagull anymore. I don't know how to develop in C++. I have absolutely no interest in maintaining this open source project. Yet when you Google seagull linux or seagull protocol my GitHub repo for the project shows up on the first page. How did I end up in this situation?
"Seagull is a free, Open Source (GPL) multi-protocol traffic generator test tool. Primarily aimed at IMS (3GPP, TISPAN, CableLabs) protocols (and thus being the perfect complement to SIPp for IMS testing), Seagull is a powerful traffic generator for functional, load, endurance, stress and performance/benchmark tests for almost any kind of protocol." That is a quote from Seagull's website.
At one point in my career I needed to build and run Seagull for my day job. We were using really old RPMs for really old CentOS versions because it could not be built on modern Linux distros like Ubuntu 14.04 or CentOS 7. I couldn't help but improve this situation.
I took on the project in my spare time to try to manually build Seagull on Ubuntu 14.04. Remember I don't know how to program in C++. (I did learn a little C and C++ in my undergrad days but they're long gone.) I am even to this day fairly uncomfortable in the land of building software written in C++. I mean I can do it when I have to but let's just say I'm glad I don't have to that often.
It took a handful of days of repeating the seemingly infinite cycle of build, Google build error, try to "fix" the error, and build again before I had enough changes in a patch file to successfully build and (gasp!) run it. Not content with just that I went ahead and built and ran it on CentOS 7 and openSUSE 13.something.
Next step was to share my success with everyone and I threw it up on GitHub where it continues to live. I provided as much background information as I could about how I reached that point in case someone who knows better than me can help take it many steps further. I also added steps on how to build for various Linux distros.
I am no longer employed by the organization where I needed to use Seagull. I don't use it in my current day job either and there are no chances in the foreseeable future that I'll need to. Yet I am now responsible for maintaining this project. People open issues or submit pull requests (PRs). I'm glad to see there's interest and contributions but I don't have the time or interest in being the benevolent dictator anymore.
I added a contributing file to make my position absolutely clear to people who end up on my repo. Unfortunately, no one has stepped up to become a collaborator yet.
What's next? I was inspired by a PR submitted by atesgoral. He wanted to create a Docker image which would provide a ready to run Seagull install. This is a great idea and I thank him for it. My inspiration was to take this idea further and provide both Docker images and OS packages (like rpm, deb, etc.).
I have not done this work yet and if someone wants to do it instead of me that would be great as well. I plan to create an Ansible workflow to spin up a Digital Ocean droplet running say Ubuntu, build packages for various OSes in Docker containers, extract those debs & rpms, and finally build Docker images that use those debs & rpms to provide a usable Seagull install. I need to figure out a good way to host those packages for others to use. This is where Docker Hub is such a great idea because people like me don't have to think about hosting artifacts. It even might be interesting to see if I could also build Flatpak or Ubuntu's Snap packages at some point.
Although I'm not interested in being the long term maintainer of Seagull I'm taking this opportunity to use it as an excuse to learn other things. Maybe it's a good thing that kismet plopped this project in my lap.