Annapurna Gupta: Mission support system : View Layout and Storing : GSOC2025 - Open-MSS/MSS GitHub Wiki

GSoC 2025

Google Summer of Code' 25 Final Report.


Project Goals

The primary goal of this project was to enable persistent opened views across sessions, both locally and on the server, as well as to support sharing views within an operation.


Features Implemented

Feature 1: To enable restoring flight track views across sessions.

This implementation introduces persistence for flighttrack views. Whenever you load a flighttrack, its last opened views will be restored automatically, making it easier to continue where you left off. To control this behavior, a configuration option restore_views has been added to MSUI.

Behavior

The behavior depends on whether the restore_views option is enabled or disabled:

  • If restore_views is disabled:
    • The application will behave as before, and no views will be restored.
  • If restore_views is enabled:
    • Loading a saved flighttrack will automatically restore its previously opened views.
    • The feature supports multiple flighttracks with multiple views, ensuring that each flighttrack can recall its own setup.

Notes

It is important to understand the limitations when using this feature:

  • If you make changes to views while restore_views is enabled, those changes will not be saved automatically.
  • Only saved flighttrack views are restored. Unsaved flighttracks will not retain any view configuration.
  • To ensure your updated view settings are stored you need to close the application or switch to an operation.

Pull Request:


Feature 2: Operation Views Persistence and Restore Feature.

This implementation focuses on making operation views persistent across application restarts. This means that when you enable the restore_views option in the configuration, the application will remember the last opened views of an operation and automatically reload them the next time you activate that operation. If restore_views is disabled, no restoration will happen and the application will behave as before.

With this feature, multiple operations are supported, and each operation can maintain its own view configuration. This allows users to seamlessly switch between operations without losing their preferred setup.

Additional Behavior

When restore_views is enabled, the functionality goes beyond simply restoring the last state:

  • If you make changes to the views of an operation (for example, add or remove views) and then switch to another operation, those changes will be saved automatically.
  • When you return to the original operation, the updated view settings will be restored.
  • Even when switching to a flighttrack with stored views, those views will be loaded, and the current operation’s settings will be stored. This ensures that when you return, the operation reloads with the most recent changes.

Pull Request:


Feature 3: Sharing Views in an Operation.

This implementation introduces the ability to share views within an operation with members of the operation. This feature allows users to collaborate by making their custom views available to other participants in the same operation. To support this, a Share Views section has been added to MSUI, along with a Manage Views option in the operation dropdown menu.

When you click Manage Views, a widget opens that shows two sections: one for Shared views in the operation, and another for your currently opened views. From here, user can select and apply views that have already been shared.

How Sharing Works

The process of sharing views is simple but requires a few steps:

  • The Share button is only enabled when there are views available to share.
  • To share:
    • First, activate an operation and create one or more views.
    • These views will appear in the Open Views section of MSUI.
    • Select the views you want to share by double-clicking them (multiple selections are allowed).
    • Double-click on the name of the open view to rename it before sharing (the placeholder is initially the name of the open view).
    • Click the Share button to publish all the views present.
    • A confirmation message will pop up to indicate that your views have been successfully shared with the operation.

Naming Rules

Each view being shared must have a unique name. If you attempt to share a view with a name that already exists in the operation, the system will display a message saying the name is already taken, and you will need to rename the view before sharing.

Applying Shared Views

Once views are shared in an operation, any user can open the Manage Views widget to make use of them.

  • In the widget, select a view from the shared view collections (All Users) list.
  • Click Apply Selected View to load that view into your session.
  • The name of the applied view will then be displayed, making it clear which shared view is currently active.

This implementation makes collaboration easier by ensuring that all users in an operation can access and apply shared view configurations without having to recreate them manually.

Pull Request:


Future Works

  • There are some bugs that need to be fixed, and further modifications are required in manage views widget.
  • Tests need to be written for the third implementation

This will be done in future iterations.


Community Consultation

  • Features were regularly discussed with mentors during weekly syncs.
  • A demonstration session was held with Joern Ungermann, where the implemented functionality was presented and feedback was collected.
  • Suggestions from these discussions were integrated where possible.

Acknowledgments

I am deeply grateful to my mentors Reimar Bauer, Matthias Riße and Sreelakshmi Jayarajan for their constant support, guidance, and willingness to help whenever I was stuck. Without their reviews, feedback, and guidance, this project would not have been a success.

Over the past three months, I have learned that persistence is key — there will be times when things feel difficult, but consistent effort and determination make all the difference. I also realized the importance of communication, while it is good to ask for help when facing challenges, it is equally important to first give your best attempt.

I am especially thankful to my mentors for their patience and kindness in answering my questions, no matter how simple they were. Their guidance has not only helped me grow technically but also taught me valuable lessons that I will carry forward.

I’d also like to thank the Python Software Foundation and the Mission Support System for providing this amazing opportunity, and Google Summer of Code for organizing such a fantastic program.