#summary Executive summary of the list of major Gerrit topics under review and temporarily blocked

=Overview=

Following a   [https://groups.google.com/forum/#!topic/repo-discuss/qKz7AtZDlC4 discussion on the mailing list] we decided to create a summary page containing the list of outstanding topics that are currently under review and deserve a particular attention because of their nature.

The purpose of this page is to keep track of them and prevent the risk of them being forgotten in the Gerrit changes backlog. The topics listed here are either related to the Gerrit architecture or to some fixes to severe bugs that need particular attention and time for being reviewed and merged.

Currently outstanding topics are:
  # [OutstandingTopics#Pluggable_authentication_backend auth-backends-HttpAuthProtocol]
  # [OutstandingTopics#Secure_Store secure-store]
  # [OutstandingTopics#Angular_Gerrit angular-gerrit-integration]

-----

=External ID for identity federation=

Allows to federate Gerrit identity with a 3rd party authentication system and store the authenticated code into user's external identities.

This change allows to effectively enable SSO with 3rd party systems (e.g. GitHub OAuth) and propagate Gerrit's authenticated session to the 3rd party backend API by using an additional external ID code stored into the account_external_ids table.

  * Gerrit changes: [https://gerrit-review.googlesource.com/#/q/status:open+project:gerrit+branch:master+topic:external-ids changes]
  * Owner: [https://gerrit-review.googlesource.com/#/q/owner:%22Luca+Milanesio%22+status:open Luca]
  * Status: review started (+1)
  * Issues: Need extra reviewers with +2 permissions to finalise the change.

=Top-menu loading=

Refactor the top-menu loading mechanism in order to enrich the current REST-API to fetch its entire content from the backend. Currently it is a "mixed" GWT + REST-API driven, with part of the logic in GWT and other in the REST-API. 

The inability to control the top-menu from a REST-API forbids plugins (or other alternative Gerrit GUIs) to render Gerrit header. With this change it will be potentially possible to box the Gerrit top-menu into a different L&F.

  * Gerrit changes: [https://gerrit-review.googlesource.com/#/q/status:open+project:gerrit+branch:master+topic:top-menus changes]
  * Owner: [https://gerrit-review.googlesource.com/#/q/owner:%22Luca+Milanesio%22+status:open Luca]
  * Status: review started (+1)
  * Issues: Need extra reviewers with +2 permissions to finalise the change.

=Pluggable authentication backend=

Replace the current Gerrit authentication infrastructure, mainly based on mega-switch/case with the list of protocols/methods supported, with a new plugin-based authentication back-end. 

These changes would allow Gerrit to be more extensible, avoiding further growth of the mega-switch/case all over the code and support the ability to load user plugins to support other authentication systems in the same way that Gerrit groups have been refactored years ago.

  * Gerrit changes: [https://gerrit-review.googlesource.com/#/q/status:open+project:gerrit+branch:master+topic:auth-backends-HttpAuthProtocol changes]
  * Owner: [https://gerrit-review.googlesource.com/#/q/owner:%22Dariusz+%25C5%2581uksza%22+status:open Dariusz]
  * Status: review started, partially merged
  * Issues: after having merged part of it, the review is now stuck. Needs Shawn attention as the first attempt to merge it broke the Gerrit authentication.

=Angular Gerrit=

Dariusz presented at the Gerrit User a prototype for leveraging the REST-API through an AngularJS UX. It has been published to GitHub at https://github.com/dluksza/angular-gerrit.

In order to use the Gerrit-Angular integration a set of changes in the Plugin infrastructure are needed and have been uploaded for review.

  * Gerrit changes: [https://gerrit-review.googlesource.com/#/q/status:open+topic:angular-gerrit-integration changes]
  * Owner: [https://gerrit-review.googlesource.com/#/q/owner:%22Dariusz+%25C5%2581uksza%22+status:open Dariusz]
  * Status: changes submitted, topic created.
  * Issues: None at the moment.