(This is particularly relevant to the Angular and X.Org changes.)

We have a ton of changes in flight of all sizes, both from Guacamole committers and from contributors. The larger changes tend to get stuck because ... they're large. The smaller changes tend to get stuck because of basic issues with style which, while important, also serve as a roadblock that makes things difficult for contributors and reviewers alike (there's lots of back-and-forth, and lack of time leads to PRs eventually getting ignored/forgotten).

I think we should adopt some changes to our branching and code review methods to allow things to move forward more efficiently and without risking breaking mainline.

To be clear, I'm not proposing that we alter the scope of review. Instead, I think we should make it significantly easier for contributors to abide by the style guidelines by providing some sort of script within the guacamole-client and guacamole-server source that allows contributors to automatically check/correct their own changes. Review on our side can then be streamlined to just:

1) Verifying that script reports everything is clean.
2) Verifying the pure technical merit of the proposed changes.

With respect to avoiding changes getting stuck due to sheer size, I propose we adopt a different branching strategy that builds off the patch release procedures we recently adopted. Instead of a single "master" branch, I suggest a set of 3 primary development branches:

(1) "patch" - Receives any changes that are bugfixes or minor improvements that do not affect documentation. This is essentially equivalent to what we've been doing with the staging branches for patch releases, except that there would no longer be any need to create those staging branches until the release process is actually underway. The base branch for any changes that qualify would always consistently and simply be "patch".

(2) "main" - Replaces current "master", receives all changes that are not huge changes that would warrant a full major version bump. Changes merged to "patch" get manually merged back to "main".

(3) "next" - Receives any changes that are so huge that they would warrant a full major version bump. Changes merged to "main" get manually merged to "next". In some cases, changes made against "main" may need to be reimplemented against "next".

Now on to the...

----- PROPOSED ROADMAP -----

1.5.5:

* Remaining items already listed in JIRA
* Any bugfixes that have already been merged to master but are missing from previous patch releases

1.5.6+:

* Any issues identified in 1.5.5
* Any changes related to automated style checks
* Duo v4 (if possible)
* Basic improvements/fixes for known issues with the terminal emulator

1.6.0:

* Remaining items already listed in JIRA
* The (experimental) X.org driver
* Finalize the migration to guacamole-common-js' improved event system
* Add remaining events for guacamole-ext's improved event system
* Generalize the Docker image to no longer require manually mapping variables to properties (to avoid any future issues with unmapped or incorrectly mapped properties)
* Support FreeRDP 3.0
* Improvements to the speed and efficiency guac_common_surface (and moving the surface to libguac) <- I have an automatic scroll detection algorithm that seems to work pretty well

1.7.0+:

* Support for WebAuthn
* Ability to automatically apply/update the database schema.

2.0.0:

* The AngularJS -> Angular migration.
* Migrate from javax.* to jakarta.*, thus supporting Tomcat 10 while dropping support for Tomcat 9 and older. * Backward-compatible, binary variation of Guacamole protocol (assuming browsers are now capable of handling this efficiently, I have a rough sketch of how this might look and how it might improve on the processing required)

2.1.0+:

* Improve admin UX regarding management of objects (relegate some parameters to an "advanced" tab/view, add tooltips and links to help).
* Load balancing / HA support for the webapp itself

Thoughts?

- Mike

Reply via email to