Closed xmnlab closed 9 months ago
Makim is a versatile and extensible automation tool designed to simplify complex workflows and tasks in software development. While it excels at managing individual targets, it currently lacks native support for defining and executing pipelines, a critical feature for orchestrating sequences of tasks efficiently. This proposal aims to extend Makim's capabilities by introducing support for defining, running, and visualizing pipelines within Makim configuration files.
The core objectives of this project are as follows:
Change from dependencies to hooks: Instead of dependencies that just define pre-run targets, hooks would allow pre-run (setup) and post-run (teardown).
Pipeline Definition: Extend Makim configuration file (YAML format) to include a dedicated section for defining pipelines. Pipelines will consist of a sequence of steps, where each step can be associated with any existing Makim target.
Pipeline Execution: Implement a pipeline execution mechanism within Makim, allowing users to run defined pipelines using a simple command-line interface. Pipelines should support both linear and branching flows, enabling complex task orchestration.
Pipeline Visualization: Integrate a graph visualization tool, such as asciinet
, to allow users to view the structure and dependencies of defined pipelines. This feature will enhance transparency and aid in debugging complex workflows.
Documentation: Update Makim's documentation to include comprehensive guidance on defining and executing pipelines. Provide examples and best practices for creating efficient and maintainable pipeline configurations.
BSD 3 Clause: https://github.com/osl-incubator/makim/blob/main/LICENSE
https://github.com/osl-incubator/makim/blob/main/CODE_OF_CONDUCT.md
Makim is very well structured in order to allow the inclusion of the pipelines support.
@xmnlab Dear Sir, I am writing to express my keen interest in the Documentation and Coding project for OSL, as advertised on OSL internship 2024. With my solid foundation in Python, and frontend, and a willingness to delve into other necessary, I am confident that I can make significant contributions to expanding the available documentation and enhancing user experience. As a passionate software developer with a demonstrated track record in designing, developing, and implementing technical solutions, I am adept at grasping new technologies and applying them effectively. I am pursuing a Bachelor of Technology in Computer Science and Engineering, which has equipped me with a comprehensive understanding of programming principles and best practices. My recent open source internship (LFX Mentorship) at Cloudforet, LFX, has been instrumental in honing my skills in coding, integration, troubleshooting, and deployment. I actively contributed to various open-source repositories, showcasing my ability to collaborate effectively in a team environment. Additionally, my experience at DesinQna involved designing responsive web pages, implementing robust user authentication, and integrating security measures—highlighting my versatility in web development. I am particularly intrigued by this project's potential to make Makim's resources more accessible to a wider audience. I am eager to learn the intricacies of Yaml and Makim and engage in the conversion process, ensuring the quality and accuracy of the documentation. My experience with Python, scripting, and frontend will facilitate my understanding of conversion scripts and enable me to contribute meaningfully to their development. I am confident in my ability to meet the project's expectations and deliver the following:
Project Idea 1: Adding Windows Support for Makim
Abstract
Makim is a powerful and versatile automation tool used widely in software development for task orchestration and workflow management. However, one significant limitation has been its lack of native support for Windows, a platform frequently used by developers. This project proposal aims to bridge this gap by enhancing Makim's compatibility with Windows environments.
Currently, Makim relies on the
sh
library, which is not fully compatible with Windows. The proposed project seeks to abstract the usage ofsh
within Makim and introduce an alternative approach that seamlessly integrates with Windows systems. Two promising alternatives,subprocess
andplumbum
, will be explored for this purpose.The primary objectives of this project are as follows:
Windows Compatibility: Implement a platform detection mechanism within Makim to identify when it's running on Windows. When running on Windows, the tool should automatically switch to using the Windows-compatible alternative (e.g.,
subprocess
orplumbum
) for executing commands.Testing and Evaluation: Thoroughly test the compatibility and performance of the chosen alternative(s) on both Windows and Unix-like systems. Benchmarking will be conducted to determine if the alternative(s) offer advantages over the current
sh
implementation.Documentation: Update Makim's documentation to reflect the new Windows compatibility features and provide clear guidelines for users on how to utilize the tool effectively on Windows platforms.
Community Engagement: Encourage community involvement by seeking feedback and contributions from users and developers, especially those working in Windows-centric environments. Create blog posts.
This project presents an exciting opportunity to make Makim more accessible to a broader audience of developers, including those working in Windows-based environments. By addressing this limitation, we aim to enhance the usability and adoption of Makim, further solidifying its position as a valuable automation tool in the software development ecosystem.
License
BSD 3 Clause: https://github.com/osl-incubator/makim/blob/main/LICENSE
Code of Conduct
https://github.com/osl-incubator/makim/blob/main/CODE_OF_CONDUCT.md
Current State
Current, Makim doesn't support windows, because it relays on the library
sh
that doesn't work on windows.Tasks
Expected Outcomes
Details
References