3 ms·
When I say that not being complicated to implement is an advantage, I mean I can have much more confidence that whatever implementation I’m using is bug-free an
by minitech 5y ago
When I say that not being complicated to implement is an advantage, I mean I can have much more confidence that whatever implementation I’m using is bug-free and secure (e.g. by auditing the entire thing and its dependencies, something not even remotely feasible with a web browser), not that it should be constantly reimplemented. Contributing to a Gemini client or even just building it is a lot easier than doing the same for a web browser component.
Plus, being able to implement something from the ground up in not much time means it’s possible to explore foundational advances, like building the entire client/server in a memory-safe language.
- danShumway 5y agoGreat answer, I buy all of those reasons as strong justifications to prioritize simplicity. I think it seems a little bit extreme in some ways, because when we talk about Gemini's implementation being simple, the FAQ isn't just talking about structure/readability, it's saying 100-200 lines for a basic client. To me that crosses from 'should be auditable' into something else entirely -- I'm not sure why having a 1000 line client would make this significantly harder to audit, or build, or re-implement in Rust. I'm not sure Rust is that complicated of a language. But :shrug:, I guess if you shoot for an extreme metric, then you know you'll end up with something that meets all of your other goals as well, so those requirements do make some sense to me when phrased as part an overall architectural stability/reliability goal.
- minitech 5y agoYeah, I would have liked to see different trade-offs made too (especially giving the same treatment to TLS), but I’m satisfied that it’s at least a good direction to start exploring and putting some level of support behind.