bytecodealliance / governance

Apache License 2.0
11 stars 37 forks source link

Proposal to Create componentize-py #41

Closed dicej closed 1 year ago

dicej commented 1 year ago

Proposal to Create componentize-py

This document is a proposal to create componentize-py as a formal (Hosted) Project under the auspices of the TSC of the Bytecode Alliance, as specified in the TSC Charter.

Project Summary

componentize-py is a project to create components using the Python programming language, analogous to how jco componentize creates components using JavaScript. It currently resides at https://github.com/dicej/componentize-py/ and is published to PyPI at https://pypi.org/project/componentize-py/. In addition to supporting guest code written in pure Python, it supports native extensions written in C, C++, and other native languages via emulated dlopen/dlsym functions. We aim to make this tool the easiest, most efficient way to build components using Python.

This project has been developed with the advice and assistance of the members of the Python subgroup of the Guest Languages SIG, including @brettcannon, who currently maintains the CPython WASI port on which componentize-py is based.

Governance Summary

This project will begin with @dicej (Joel Dice, Fermyon) as the primary maintainer, with informal assistance from the Guest Languages SIG Python subgroup. By making this a hosted Bytecode Alliance project, we hope to attract additional contributors going forward.

Software Development Process

The project will meet the passing criteria for the OpenSSF best practices badge. Pull requests, issues, CI, and release management will be performed via GitHub.

Alignment with Bytecode Alliance Mission and Goals

Bytecode Alliance projects represent the mission and goals of the Bytecode Alliance itself. We understand that as a Bytecode Alliance project, our project must adhere to the TSC Charter and other governing documents (such as the Security Policies and IP Policy). As a Bytecode Alliance project, our project's source code and other pieces of intellectual property will be assigned to the Bytecode Alliance.

We understand and agree that:

Supporting Members

The following individuals support the creation of componentize-py:

ricochet commented 1 year ago

I reviewed componentize-py and found it to be in excellent alignment with the Bytecode Alliance Mission and principles. I only had a few notes:

dicej commented 1 year ago

Thanks for taking a look, @ricochet. I would also note that I'm planning to add doc and implementation comments to the code (which is sorely lacking in that respect), along with a high-level architecture overview. That will hopefully make the code more approachable to new contributors.

dicej commented 1 year ago

One other thing to mention: componentize-py depends on component-init which used to be a subcrate of the project, but I split it out into its own repo at @guybedford's request so it could be reused by other projects more easily. It's sort of a "Wizer, but for components", but also designed to be runtime agnostic (i.e. explicitly avoiding a Wasmtime dependency) so it can be more readily reused in e.g. jco. Should I create a separate proposal to make that a BA-hosted project as well?

fitzgen commented 1 year ago

The TSC has reviewed this proposal, and I am happy to say that it was approved.

The one thing we would like to see is a CONTRIBUTING.md, as noted above. (This can happen before or immediately after transfering to the BA org, either way works). Note that we aren't asking for a ton of new content, just that the relevant bits from README.md are split out to CONTRIBUTING.md. More details can always be added in follow up PRs.

I will leave it to @tschneidereit to handle the transfer from here.

fitzgen commented 1 year ago

Oh and regarding component-init, we can leave it where it is for the time being: I will separately review it and see whether I think it makes sense to fold into Wizer or whether we should encourage it to be its own project in the BA.

dicej commented 1 year ago

I've added a CONTRIBUTING.md file, as requested. I also tried transferring it to the BA org, but got You don’t have the permission to create public repositories on bytecodealliance from GitHub. @tschneidereit is going to do some research on what the correct process is.

tschneidereit commented 1 year ago

We've sorted out the repository transfer, so this is all ready to go. Thank you again for all the effort you put into getting componentize-py to this point, and for donating it to the BA, @dicej!