We should implement a matrix-native zodbot/meetbot alternative.
With ongoing stability issues with the Matrix <-> IRC bridge and many contributors switching over to Matrix, zodbot has become increasingly unreliable. The bridge is currently shut off completely. This initiative will provide a future proof solution and allow us to conduct meetings without wasting time troubleshooting the bridge and zodbot.
The new Matrix bot should provide the basic functionality that zodbot does. We should start a devel thread to solicit feedback from the wider community on blockers.
To start with:
.epel
.fesco
.fpc
.hi
.hello
.hello2
.fasinfo
.group
.members
.bug
.whowns
.lastseen
We should use this as an opportunity to evaluate what we want to carry over from zodbot and what we don't, but we should avoid divergences where possible to avoid disrupting contributor workflows.
This would primarily affect the Fedora community, but other communities such as Ansible may be interested.
Do this initiative have any dependencies?
No.
Skills needed?
Programming
Person who must or should be involved?
Nobody in particular
Other work that should be completed prior to this initiative?
We should solicit feedback to get an inventory of community needs.
There's no hard deadline, but the bridge may go away at some point in the future.
Thanks for filing this. It's been on our radar for a while.
I'd like to look at splitting the functionality in zodbot into (at least two) bots. One for just meetings and one for all the other commands.
I know @ryanlerch was looking into matrix bots a while back and may have some good input here.
I was also planning on starting a discussion thread about this as ansible folks have mentioned they would like to be involved too (they currently were using zodbot).
Heya, Greg from Ansible here (thanks @gotmax23 for sending me the link).
This is on my radar too. Ansible has been using the Fedora zodbot for some time, specifically for the meetbot functions. To that end, I'd love to contribute to efforts to make a Matrix-native version, especially one we can deploy on our infra and stop "borrowing" yours ;)
Since we only use the meetbot functions, that's the obvious place to start for me. We don't actually need a lot - we #chair everyone (which then ends up being the same as no-one), so that isn't needed. Having chatted with some of the teams, I think Ansible would need:
The "somewhere" in that last item is the tricky one - we don't have an obvious webhost for the logs. My thinking is that for Ansible, we'll post the logs to our new Discourse forum (we are doing event management there, including meetings), which is an easy API call.
In terms of development, I was looking over this post from Discuss yesterday, and I still think Maubot would be a good fit - it allows modular bot functionality to be added to a single Matrix ID, so you can break up the monolith in dev, but still have it all on one bot. A lot of plugins already exist which might help speed up the dev work too.
I agree with the assessment that Maubot is the right choice for this. It matches the Limnoria architecture in some ways, which would hopefully make porting plugins from one to the other easier.
This would also allow Fedora to stop worrying about IRC and continue the next stage of our real-time chat transition.
So I had a bit of time today, and took a stab at this. The result is at https://github.com/GregSutcliffe/maubot-meetings
So far we have (start/end)meeting, info, and action and the bot sends info items, action items, and full log to the room when you endmeeting (because I don't have anywhere to send them :P)
(start/end)meeting
info
action
Feel free to invite @ansibot:ansible.im to a room if you want to test it, it should autojoin. I'll be working on this more, but issues/PRs very welcome
@ryanlerch has been working on something too... hopefully you can colaborate. ;)
this is a little further than i got on it with my meetbot so PR's will be incoming!
i also have this repo: which is a POC to replace the Fedora features in zodbot (mainly quering FAS and returning results)
https://github.com/ryanlerch/maubot-fedora
it also has a vagrant setup of maubot that i use for development.
I'd also like if the new .hello command included a user's pronouns from FAS along with name and email and perhaps a new, separate .pronouns <fas> command.
.pronouns <fas>
If we do this well, I could see this being broadly adopted by a number of communities, so I'm really excited by this! :wine_glass:
@ryanlerch They'l be very welcome! Nice to see some Ansible in that repo <3
Given the plugin nature of Maubot we can keep hacking away on various modules for different bits of functionality. What we probably need to address here is the hosting structure - do we keep all these in different repos, or do we have all the plugins under a single repo? I can see arguments for both ways (pro: one place to raise issues/features, con: releases are trickier, possible scope creep), but we should decide early on, merging git histories is a pain. A Matrix room for dev discussion probably makes sense too, I can do that if no one beats me to it.
To @ngompa's point - I definitely want Ansible to be able to use it's own install of this, rather than relying on the Fedora one. While we're all good friends, it has never quite sat well with me that our meeting logs are on fedoraproject.org :stuck_out_tongue:. Other communities will need that option too, so the backend for various things will need to be configurable. With less infra available to me, my current plan is for the Ansible meeting logs to be posted to our new Discourse forum...
I would suggest having a GitHub org or GitLab subgroup to host all the Maubot modules instead of using a monorepo.
Here's a Matrix room too: https://matrix.to/#/#zodbot-devel:fedora.im
Yeah, I think I agree. The only thing to be careful with is getting the right chunks of zodbot functionality into the right module.
Happy to transfer my maubot-meetings repo (or git history) to another org / platform, for the record.
Ok just for completeness i now have maubot-fedora in it's own repo here:
https://github.com/fedora-infra/maubot-fedora
The idea being that this is the fedora-specific stuff that will query pagure-distgit, fasjson etc. Very happy to keep the meetbot stuff in a seperate plugin (and IMHO a seperate bot for Fedora).
I also put my maubot dev enviroment that im using up on github too here, but under my namespace:
https://github.com/ryanlerch/maubot-plugindevenv
Just FYI too i have secured the "zodbot" and "meetbot" Fedora Accounts usernames too -- so we can use them on Fedora.im when the time comes.
They are linked to my email, but very happy to move them whereever when the time comes.
I would love for this to live on the Fedora GitLab organization.
As discussed in https://pagure.io/Fedora-Council/tickets/issue/463 I'd like to clarify the priorities as seen by the Fedora Council:
zodbot and meetbot are important parts of the project infrastructure. Yet in the current situation we do not see zodbot and meetbot to be the urgent priority on its own.
From the Fedora Project point of view the most critical part of the bot functionality is to be able to publish the logs of all decision-making meetings, for example FESCo, in a reliable location accessible by the community. All other functions are considered useful, but not blocking.
Therefore we'd like to ask to focus the current development effort on implementation of the upload of logs to https://meetbot.fedoraproject.org/ first and than extending the set of commands or any additional features later.
Thank you @bookwar for adding the council's requirements for this request and thank you @ngompa @gwmngilfen @gotmax23 @ryanlerch @jflory7 & @kevin for the updates and discussion on the work thats needed and what is already in place! CPE will be doing some team planning next week and we are going to pull this request into our workload to put a bit more support around implementing this. I need to play a bit of catch up in the dev room to see what's been done already vs what's in this original ask so will comment back here the requirements that are outstanding to call this request Done early next week ahead of the CPE teams planning call, which is scheduled for next Thursday 31st so there is some clarity on the TODO's. We will continue to work in the zodbot dev room though as its ideal to collaborate here :)
@amoloney, here is the current status as I understand it.
New initiative: Matrix native zodbot What is this initiative about? We should implement a matrix-native zodbot/meetbot alternative. Why this initiative? With ongoing stability issues with the Matrix <-> IRC bridge and many contributors switching over to Matrix, zodbot has become increasingly unreliable. The bridge is currently shut off completely. This initiative will provide a future proof solution and allow us to conduct meetings without wasting time troubleshooting the bridge and zodbot. Definition of success The new Matrix bot should provide the basic functionality that zodbot does. We should start a devel thread to solicit feedback from the wider community on blockers. To start with: Meetbot-like functionality that allows recording minutes and logs and stores them in mote.
We have https://github.com/GregSutcliffe/maubot-meetings as a POC, but we need a bot with mote integration.
Fedora-specific commands like .epel, .fesco, and .fpc that Fedora SIGs use in their meetings
These are not yet implemented but wouldn't be too difficult.
Support for karma and integration with Fedora badges
This is not yet implemented. I'm not sure it's particularly important for a MPV. I believe the current zodbot implementation stores who has given whom karma by release in a local database, so we'd need to re-implement that.
.hi, .hello, .hello2 for use in meetings that integrates with fasjson to introduce contributors
@ryanlerch implemented this in https://github.com/fedora-infra/maubot-fedora. I updated this command to include pronouns as well.
.fasinfo, .group, .members and other commands that integrate with fasjson
maubot-fedora has fasinfo, members, sponsors, and fasinfo, but not a generic group info command.
fasinfo
members
sponsors
group
.bug to provide Bugzilla links
This is not yet implemented but wouldn't be too difficult.
Other misc. commands such as .whowns and .lastseen
whoowns is implemented. lastseen is not.
whoowns
lastseen
Deadline There's no hard deadline, but the bridge may go away at some point in the future.
It's been ~three weeks with no update from Matrix about the status of the bridge, so this is becoming more urgent, I'd say.
I'll note there's a number of existing plugins we may be able to just use:
Also we have a wiki page that lists the things zodbot does:
https://fedoraproject.org/wiki/Zodbot
I agree meeting functionality is central/most important tho.
Thank you @gotmax23 for the great review! And @kevin for the additional plugin list. Ive pulled them into this hackmd https://hackmd.io/@Ap8CkTlpSfmjb44UGV-kWA/SymfI_iTh/edit to maybe use as a way to keep track of the TODOs and any administrative stuff to help get the service deployed. Feel free to add your project management know-how to the doc, its a working copy and I dont think it needs anything too heavy as the work is already well in flight, just a little more focus and push to get it out the door and into production :)
The hackmd gives me a 403 error?
Forgot to hit publish :-/ Can you try again to access it? https://hackmd.io/@Ap8CkTlpSfmjb44UGV-kWA/SymfI_iTh/edit
Yep, I can access it now!
Huzzah!
Metadata Update from @amoloney: - Issue tagged with: Accepted
Metadata Update from @amoloney: - Issue tagged with: In Progress
Login to comment on this ticket.