Skip to content

Instantly share code, notes, and snippets.

@plant99
Created August 24, 2019 13:27
Show Gist options
  • Save plant99/439b5094da1b6f022c2b64ed8dc6ef7f to your computer and use it in GitHub Desktop.
Save plant99/439b5094da1b6f022c2b64ed8dc6ef7f to your computer and use it in GitHub Desktop.

Student: Shivashis Padhi

Organization: Mission Support System(under The Python Software Foundation)

Mentors: Reimar Bauer, Jens-Uwe Grooß

Project link on GSoC

Development blogs on PSF-GSoC's platform

Abstract

Mission Support System is a flight planning software which a researcher can use to analyze predicted atmospheric data, and plan a flight-path with 3D way-points. The software in the present state allows editing by a single user per flight-path. To share this work, one has to export the work as a $name.ftml file and send it to other researchers for further planning. This back and forth communication not only consumes a lot of human efforts and time, but also can be frustrating when the number of researchers involved in a project is bigger, say >=3.

I propose a solution to this problem, the development of Mscolab which stands for "Mission Support Collaboration". mscolab server would facilitate real-time, collaborated editing of flight-paths by authorized users. By design, it will also provide a chat facility for the users who are collaborating on the project. Its UI would be a part of msui, the core User Interface module of mss. It would additionally provide insights about temporal changes related to waypoints and the users who created them, for analytics purpose. mscolab-server will be a standalone server built with Python, Flask, and python-socketio.

Full proposal can be viewed here.

Documentation

User documentation can be found here.

Developer documentation, containing design of mscolab can be found here.

Both the documentation will be shifted to mss' rtfd docs when mscolab is prepared for a stable release with mss.

Development

This is a Pull Request to mscolab's develop branch containing commits I made during GSoC-19(except f3b94a5, and f5e740b, both were made by Reimar).

Apart from that, following is a list of PRs with links against the idea of the PR.

Topic Link to PR
Upto users and basics of sockets https://bitbucket.org/wxmetvis/mss/pull-requests/647
Upto sockets https://bitbucket.org/wxmetvis/mss/pull-requests/648
Chat API https://bitbucket.org/wxmetvis/mss/pull-requests/649/
Files API https://bitbucket.org/wxmetvis/mss/pull-requests/650
Change related handlers https://bitbucket.org/wxmetvis/mss/pull-requests/652
API integration tests https://bitbucket.org/wxmetvis/mss/pull-requests/655
Mscolab window, authentication https://bitbucket.org/wxmetvis/mss/pull-requests/657
Autosave mode https://bitbucket.org/wxmetvis/mss/pull-requests/661
Project Window https://bitbucket.org/wxmetvis/mss/pull-requests/674
Undo/redo feature https://bitbucket.org/wxmetvis/mss/pull-requests/675
Refactor demodata setup, improve UX https://bitbucket.org/wxmetvis/mss/pull-requests/677/
Improve UX - 2 https://bitbucket.org/wxmetvis/mss/pull-requests/678/refactoring/commits
Fix bugs, make more features of mscolab real-time https://bitbucket.org/wxmetvis/mss/pull-requests/686/

Note: Code blocks marked # ToDo has been identified as prospective places where code can be improved or refactored in future.

Result

  1. Users of msui can now collboratively work on flightpaths.
  2. Different access levels per project i.e admin, creator, collaborator, viewer.
  3. Realtime updates of change in flightpath, new project, newly assigned permission, update in permission.
  4. Exporting ftml files or creating project by importing ftml files, thus creating a smooth transition for users moving to mscolab from msui.
  5. Different modes(autosave, non-autosave) to work on project.
  6. Chat feature to discuss about waypoints to be added.
  7. Undo feature to checkout to any state the project was in the past.

Further steps and future scope

Mscolab has undergone significant portion of development for its first release. I'm really glad that the design I proposed, successfully got implemented with very minor modifications. Before its first release the module has to go through the following steps:

  1. tests for advanced features like realtime UI change with permission change, etc. are yet to be created.
  2. non-autosave model usage is yet to be developed.
  3. An UI can be made to view previous/later version of a file during a 'change'(implemented as commits)
  4. Like checkout, git revert can also be implemented to undo change by a single commit.
  5. Messages can be written in markdown.
  6. Onboarding experience can be made more authentic by email verification, password reset etc.

After first release, and some feedback by MSS' users, mscolab is planned to be developed furthermore according to need.

If mscolab is used as primary use-case of MSS, file storage can be scrapped and flightpath can be modelled as collection of waypoints. This can be used to derive and display insights of changes made by users to individual waypoints.

If mscolab is funded commercially, dedicated servers can be used to create portable on-demand instances like Google Colab/AWS.

Demonstration

A demo video covering important features of mscolab can be viewed here.

Acnowledgements

I'm thankful to my mentors Reimar, Joern, and Jens for helping me out with mss from day - 0. It's a huge codebase and to make my project work, I had to understand about 50 percent of it. If it were not for their patience and coordination, I wouldn't ever be able to make even 5 commits.

I extend my gratitude to Python Software Foundation for making awesome open source projects available each year under its umbrella, if it weren't for PSF, I could not have found mss.

Thanks Google OSPO a ton, for bringing GSoC each year for students. I'll return the favor to GSoC for selecting me, by continuing my contribution to FOSS as much as I can.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment