x
Organisation: Fortran-lang
Project: Build an online playground for fortran-lang.org
Contributor : Ashirwad Mishra
Mentors: Milan Curcic, Brad Richardson
The project aimed to build a playground for Modern Fortran which enables users to run their code online. It will be offered as an extension to the official fortran-lang website where users can experiment with their code and play around with supported libraries. The playground also offers an interactive tutorial for Fortran newcomers, giving them an overview of the language syntax and features.
You can check it out on my Github pages until it's deployed officially on play.fortran-lang.org. Check out the repository at Fortran-lang Github.
The playground consists of a frontend built using React which communicates with a Flask App responsible for executing user codes in a sandboxed environment using a Docker Container.
- #5 Initializing fortran playground
- Created Sandbox Image for container
- Initialized Flask API
- #12 Reduced docker image size using Alpine
- Optimised the sandbox image
- #16 Code runs on a single container, added input capability
- Optimised code to run on a single container
- Added Input Capability for code
- Captured Compiler Error to display to user
- #17 Security Constraints
- Added security constraints for sandbox
- #20 Tutorial
- Added tutorial fixes
- Fixed major bug where empty outputs were not rendered
- #21 Added support for stdlib and fpm
- Modified Sandbox to use fpm
- Added stdlib to supported packages list
- #31 Upgraded UI, Fixed minor bugs, Added Instructions for Production
- UI Overhaul
- Tutorial Restructuring
- Production Instructions
- #37 Contribution Guide
- Added Contribution guide for future contributors, documented the frontend and backend code for easy understanding.
- Configuring Docker Desktop seemed to be a challenge on windows as the docker engine kept breaking on my system even after multiple reinstalls, which happened due to bad configuration I later fixed.
- I had never used FPM and understanding how to integrate it with the playground seemed like a major challenge. Thankfully, Brad Richardson's video about FPM Anatomy, helped me understand it's structure and I incorporated it to support libraries on the playground.
- Figuring out aesthetics versus functionality in UI Design for the playground is an ongoing challenge and will be improved with further user feedback.
I would like to thank my mentors Brad Richardson and Milan Curcic for assiting me throughout the process and teaching me better development practices. I'd also like to thank Arjen Markus for his constant feedback on the project and teaching me the nuances of Fortran, also the rich community at Discourse for their feedback and their plethora of Fortran resources.
Following are some features that can enhance the user experience on the playground
- Better curriculum - The current tutorial is derived from the quickstart guide which while being robust can be altered to cater to extreme beginners.
- More libraries - Adding libraries has been simplified by FPM integration, with community feedback more libraries should be added for experimentation maybe even options for custom libraries.
- Editor configuration - Ace editor offers various configuration options that can cater to every Fortran enthusiast out there. Features can be implemented for this.
I plan on contributing further after the GSoC period to Fortran-lang to work on above stated issues and various other projects such as FPM, the new fortran-lang.org website and many more.
Great work @ashirrwad . It was great working with you and I hope you continue working with us on this in the future.