Hi all, The build infra for AsterixDB has been relatively unchanged since before incubation. I would say at the time, it was pretty state of the art. Code review wasn't de rigueur in software. Google code still existed, and GitHub hadn't introduced PRs. There was no ASF infrastructure during incubation that we could use to support the practice. So it made sense to keep Gerrit as it was, and Jenkins along with it to support CI. I think the project can look back and be proud that we were basically ahead of the curve.
However now, the infrastructure does exist within the ASF- because now there is a more tight integration with GitHub. I think most projects just start there today by default. With that, you get PRs and Actions for "free" basically. Nobody has to take care of the infra side of it, like I have to with Gerrit and Jenkins. ASF Infra takes care of that. I'm also just one person, and having a fundamental piece of the daily operations of the project reliant on me and UCI in general is not a particularly sustainable practice, although it's worked out OK so far. We also have the agreement we came to with our Mentors at the time regarding pushing code from Gerrit to ASF repositories. I think this has worked about as well as it could have, but it's been shown over time to be both something that is easy to forget and also something that is confusing to new Committers. I don't think there is an easy way to make it automatic. It would require us to somehow come to an agreement with Infra about a bot account, and I am not sure how they would feel about that. As annoying as it is today the human in the loop does serve a few validation functions. With these things considered, I would like to discuss an idea that has come up informally more than once with other PMC members, of simply migrating all CR and CI/CD to Github. I will list out the pros, cons, and work involved as I understand it: Pros: - Lower maintenance overhead (uptime and security) - More familiar interface for new committers - Workflows are easier for everyone to contribute to than Jenkins jobs - Direct integration with ASF release infrastructure (particularly for containers) - Organizationally cleaner (direct control by ASF, rather than time/resources donated by other org) Cons: - GitHub is a MSFT product, not an open source project- so it could be rugpulled at any time. - Some people (like me) actually enjoy Gerrit's interface - Jenkins is extremely flexible, to a fault - All Jenkins jobs need to be migrated to actions. We have over 12 jobs that run with every commit. - GitHub's reliability has been noticeably terrible lately, and particularly bad in the past year. There are certain days where it's almost entirely unusable in some way for large parts of the working day. - The pool of GitHub Actions Runners is shared among the whole ASF. Once it's depleted, that's it- no projects can run more actions until the quota resets. - AFAIK self-hosted runners for ASF is kind of a new/untested thing. We might be able to sidestep the issue above somehow by doing that, but it's not a sure thing. What does everyone think? - Ian
