-
Notifications
You must be signed in to change notification settings - Fork 11
Stop supporting backward compatibility until we have a technical solution to support it #65
Description
After working on remote debugging for a few months, I have started paying much more attention to backward compatibility breakage than before. We already had RFC #51 to discuss backward compatibility issues, where we decided to reduce our backward compatibility policy to supporting only N to N-1 or N to N-2 setups.
However even if this is in theory easier for us, we still break backwards compatibility very often. We have no tests for backward compatibility, so unless you actively think about everything that could break it, we usually regress it without knowing.
I think it's not reasonable to keep putting this pressure and workload on the team. I propose we stop supporting any backward compatibility until we have a real technical solution to support it. I think today, our attempt to support backward compatibility results in a lot of time loss for development, and bad user experience since despite our efforts, things break frequently.
In practice, this means about:debugging would refuse connecting to older servers, and would prompt the user to download the appropriate version of Firefox instead. We can keep a preference that would still allow users to bypass this. For Nightlies with different build dates, we can probably simply display a warning with a suggestion to use matching Nightly versions.
This also means we stop actively trying to code for backward compatibility, we don't block reviews if backwards compatibility is broken.
Some options to reintroduce it below (just adding them for context, the goal is not to discuss them right now):
- manual recurring test campaign (weekly). Pros: we can set it up quite quickly. Cons: recurring costs will be high, will only catch the bigger issues (blank panels for instance)
- automated tests. We add a new task running on continuous integration, that downloads an old firefox binary and runs remote debugging tests against it. Pros: not costly once setup, can be expanded to cover new issues as we spot them. Cons: might be hard to setup the first time, will not simplify the actual support for backward compatibility in the code
- run the client N for server N: we could either ship the client with the server and retrieve it when we connect to the server, or maybe download it from a repository. We would still run the risk that a given client is not compatible with the non-devtools code, but our client folder uses very little in terms of non-devtools APIs, so it should be ok. Pros: no longer need to code for backward compat. Cons: probably the most complicated solution to put in place.