moja-global / Google.Summer.of.Code

This is the space to discuss and develop the ideas put forward under Google's Summer of Code.
Mozilla Public License 2.0
1 stars 1 forks source link

GSoC 2021 - Interface to configure and interact with FLINT Docker containers #4

Open shubhamkarande13 opened 3 years ago

shubhamkarande13 commented 3 years ago

Hello moja global family!

I would like to work on the project Interface to configure and interact with FLINT Docker containers [D1, P1] (Installation) under Google Summer of Code 2021. While producing the video tutorials for Installation of various versions of FLINT (Core, Example, Docker) I have noticed that the CLI interface for the Docker version of the FLINT would be daunting for the intended target users (which are non-coders, for eg. scientists, government officers, GIS analysts etc.). Development of a cross-platform GUI tool for non-coders would make running simulations easy as a point-and-click process. After having discussions with scientists which are experimenting with FLINT it is very evident that there is a need for such a tool, and hence I want to take up this project to make FLINT more accessible to people. As the tool is based on the Docker version of the FLINT we have two major advantages:

  1. Cross-Platform - I plan to use a cross-platform framework (eg. React Native) to build the tool. As Docker is cross-platform too, the tool + FLINT Docker make a universal combination and it can run on Windows, Mac OS as well as Linux environments. (Visual Studio version of the FLINT only works on Windows.)

  2. Minimal and Quick installation - Unlike the Visual Studio version of the FLINT, Installation of FLINT Docker is a very simple unattended process. No need to install and compile 15 GB of C++ prerequisite libraries or keep your PC running for hours as vcpkg builds and installs them. No need to install Visual Studio as well. Hence FLINT Docker can be used on low-end machines as well. i7 Processor is not needed anymore!😁

I just have a vague plan for the design of this tool right now but I hope that with my adventures with FLINT and the development of the generic module will help me to bring more fresh ideas to the table in the upcoming months. Thank you.

CC: @aornugent @gmajan @leitchy

aornugent commented 3 years ago

Hi @shubhamkarande13 - thanks for your interest! This is definitely a priority for improving the usability of FLINT.

We can help you to outline the necessary UI elements. What would be really helpful is for you to consider the appropriate technology for implementing an interface that can be re-used in many projects.

For example, React Native interfaces can be extended with the React Native Web library that allows the same interface to be used in local applications and in the browser. Another example is Electron + Vue.js.

By choosing a framework that can be used in applications and on the web, we can have a single coherent UX for across different implementations. Ideally, we could load the same interface inside a Docker container for use in our upcoming FLINTcloud deployment. It's possible that beginning with the Dockerised, web interface may be easier as it can still be used locally using Docker Compose to link the FLINT engine as you describe in point 2.

If you are able to focus on the technology selection aspects, I can help coordinate the functional specifications of a interface to configure and run FLINT analyses for your proposal. Please let me know if you have any questions.

shubhamkarande13 commented 3 years ago

Hi @aornugent! I think React is the best option as it is very popular (hence maintainable down the line) and as @abhi211199 suggested, React is pretty light on resources when compared to Electron. It is very popular and customizable, and learning it would be very fulfilling for me. I am only getting started with React now and I already have a decent knowledge of JavaScript.

I think we will need to use a server inside the Docker container to link the GUI (desktop or web) to the container and fetch the results.