>having to agree to a code of conduct is a gate, but I don't think we want to remove that one
depends on who you ask.
but in general I think that the goal of gatekeeping should be to filter out bad candidates without filtering out good candidates. You could imagine that for a medical degree, if students were graded on exams based on their handwriting and spelling that many otherwise good candidates would be eliminated, which is bad. So we want to avoid arbitrary gates and uphold meaningful gates.
If we are talking about gatekeeping new technology, we might want almost everyone who uses it to grasp it well, so it does not become a system of organized control. It may be reasonable to allow the technology to filter those who struggle with its inherent problems, but it would be good to avoid filtering out people due to the tech's unnecessary complexity (complexity based on its implementation, for example). So it is good to cull this unnecessary complexity of the system.
For example, a good gate for technology is making sure users understand the modular aspects of it (for example on linux this would be commands and unix pipes) and how to repurpose those modules for their own needs. A bad gate in this case might be bash syntax.