Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Manifest Generator #65

Open
1 task done
fapfaff opened this issue Feb 11, 2024 · 1 comment
Open
1 task done

Manifest Generator #65

fapfaff opened this issue Feb 11, 2024 · 1 comment
Assignees
Labels
contribution-project registered A project which has been registered with the GSF submitted The project team has submitted their solution. WINNER!

Comments

@fapfaff
Copy link

fapfaff commented Feb 11, 2024

Type of project

Enhancing the Impact Framework

Overview

I plan to build an intuitive interface, either a GUI or TUI, aimed at simplifying the process of generating manifest files for software projects. This tool will lower the entry barrier, making green software practices more accessible and appealing to new users, thereby encouraging widespread adoption and contributing to a more sustainable software development ecosystem.

Questions to be answered

Is this project idea viable considering the current stability of the manifest file specifications?

Would a TUI, as an addition to the current CLI offering more integrated process support, or a GUI, capable of displaying more details such as graph, be more suitable?

How should the configuration of plugins be handled? Should it include plugin-specific questions (at least for the standard library) or simply provide an input field with a reference to the plugin documentation for configuration details?

Have you got a project team yet?

Yes and we aren't recruiting

Project team

@fapfaff

Terms of Participation


Project Submission

Summary

This addition to the Impact Framework CLI demystifies the initial complexity of creating manifest files.
By interactively querying the user about their project, the tool generates a preliminary manifest tailored to the users project. After adding the missing inputs and configuring the remaining sections, the manifest is ready to use.
This lowers the entry barrier for developers to take advantage of the Impact Framework and helps making green development more accessible to a broader audience.

Problems

The solution addresses the challenge faced by developers, including myself, who initially feel overwhelmed by the possibilities within the Impact Framework.
Understanding the framework can be daunting, from learning the manifest's structure to navigating through various plugins to ascertain necessary inputs and outputs for a project. The multiplicity of approaches to configuring the manifest adds another layer of complexity. However, the Impact Framework is designed to ease the transition into green software development.
This CLI enhancement simplifies these initial hurdles, making it more approachable for developers to contribute to sustainable software practices effectively. It ensures that the potential for significant environmental impact through software isn't lost due to complexity in the setup process.

Application

I developed an additional command (--init) for the Impact Engine to facilitate the creation of manifest files for developers unfamiliar with green software or the Impact Framework. This command initiates an interactive session, asking straightforward questions about the project, such as its type (Web/App/ML/IoT) or its deployment (OnPremise/Cloud/Hybrid).
The answers to these questions guide the automatic creation of a draft manifest file, hiding the technical details like configuring plugins, allowing users to focus on high-level project characteristics.
This approach makes the process accessible even to those with no prior knowledge of green software principles.
The users are only required to add the inputs later, a step designed to avoid the complexity of more intricate configurations

Prize Category

✨ Best Contribution

Judging Criteria

My contribution simplifies the initial steps to create a manifest file through an interactive CLI, substantially lowering the entry barrier. This means more developers can utilize IF to write environmentally conscious software, significantly amplifying its overall impact. The likelihood of reaching its full potential is high, especially if integrated directly into IF or highlighted within its documentation, ensuring visibility to all interested users.

It complements the Impact Framework's design philosophy, enhancing user experience without altering its core principles. It ensures transparency with visible outputs via manifest files and simplifies the entry for new users by providing adaptable examples, aligning with the framework's flexibility.
While being a direct contribution to the Impact Framework CLI it's also considerable to extract it as a standalone tool.

In terms of innovation and creativity, this project introduces a novel approach by abstracting away the complexities involved in configuring a manifest file, making the process easier for users without experience in green software.

From a user experience perspective, the tool is designed to be straightforward, guiding users through simple questions to generate a manifest file without knowledge of technicaldetails, enabling a smooth start. This approach ensures an almost nonexistent learning curve, making it exceptionally user-friendly.

Video

https://youtu.be/mv5lKIeleYk

Artifacts

The impact framework respository: fapfaff/if-tui#1
The documentation repository: fapfaff/if-docs#1

Usage

The updated section in the Docs

Process

Developing the solution involved detailed planning to accommodate the diverse application types.
I meticulously reviewed all available plugins to identify their potential applications across different project components. Faced with the complexity of designing an intuitive yet comprehensive question flow, I opted to structure the development around a State Machine model. This approach allowed for a logical, maintainable architecture. Abstraction from the Inquirer UI ensures flexibility, allowing the tool to evolve with the Impact Framework.
This architecture ensures the tool's adaptability to modifications to the Impact Framework and makes it able to incorporate new plugins in the future.

Inspiration

My inspiration stemmed from my own initial confusion about creating manifest files and understanding the functionalities of various plugins within the Impact Framework. I sought to create a tool analogous to create-react-app, which brilliantly simplifies the setup process for new React applications by abstracting away the complexities. This parallel approach aimed to eliminate the steep learning curve for developers new to green software, providing an intuitive gateway to sustainable software development.

Challenges

Despite writing this submission while confined to bed with a fever, the development journey introduced several challenges, notably deciding which components to include or exclude, such as training, inference, and data collection, particularly in areas outside my expertise. Selecting the most appropriate plugins was complex due to the current scarcity of options and a reliance on unofficial plugins, which added an element of uncertainty. This necessitated a thoughtful approach to ensure the tool remained versatile and reliable for various types of software projects.

Accomplishments

Taking part in my first hackathon, especially on a topic I'm passionate about - combining development with sustainability - has been fulfilling. Through this journey, I aimed to make green software more accessible and straightforward for others, contributing to environmental sustainability. This project not only aligned with my passion but also offered a chance to contribute positively to the greater good. I'm proud of the opportunity to merge my interests in a way that could potentially bring about meaningful change.

Learnings

Diving into this project, I ventured into the realm of Green Software, uncovering the nuances and potential of the Impact Framework. This exploration not only broadened my understanding of sustainable software development but also sparked curiosity about the framework's future. Additionally, the process of developing an interactive CLI tool provided practical experience and insights into user-friendly design principles, enhancing my skills in creating tools that are both impactful and accessible.

What's next?

My solution aims to be a long-term asset to the Impact Framework ecosystem. By either donating the project or continuing its maintenance myself.
I plan to keep it evolving in line with the Framework's growth.
I'm particularly keen on integrating new plugins developed during the hackathon, making it possible to configure even more components through questions.
This approach aims to make green software more accessible, encouraging new developers to engage with sustainability in technology.

@fapfaff fapfaff added the draft This project is in draft mode and has not been submitted label Feb 11, 2024
@fapfaff
Copy link
Author

fapfaff commented Feb 16, 2024

Thanks for your feedback in the stream. create-react-app was exactly what I was thinking of as well.

I think I would start with some general questions regarding the kind of software and the deployment to create a basic graph template.

Given that the component is deployed on the cloud or a known processor is used, I should be able to set up a basic pipeline, right?

@russelltrow russelltrow added registered A project which has been registered with the GSF contribution-project and removed draft This project is in draft mode and has not been submitted labels Feb 19, 2024
@russelltrow russelltrow added draft This project is in draft mode and has not been submitted and removed draft This project is in draft mode and has not been submitted labels Mar 5, 2024
@russelltrow russelltrow added the submitted The project team has submitted their solution. label Apr 8, 2024
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
contribution-project registered A project which has been registered with the GSF submitted The project team has submitted their solution. WINNER!
Projects
None yet
Development

No branches or pull requests

2 participants