dotnet-foundation / dotnet-foundation/projects
IDisposableGenerator
@clairernovotny is already working on this.
Since Dec 5, 2021.
- Dominant language
- No language data
- Stars
- 157
- Forks
- 37
- PR merge metrics
- No merged PRs in 30d
Description
1. General Information
Project Name: IDisposableGenerator
License: MIT
Contributor (Company, Organization or individual name(s)): Organization name is Elskom (I made it) and I am the only active person writing code for it (other than outsider PRs).
Existing OSS Project? (Yes/No): Yes
Source Code URL: https://github.com/Elskom/IDisposableGenerator
Project Homepage URL (if different): The organization website is not for the source generator itself, it's more or so about the organization's own "runtime" that is separate from the generator.
Project Transfer Signatories:
Full legal name and email address required of the individual(s) with the authority to transfer or contribute the project to the .NET Foundation. Note that if you'd prefer not to include this in the public application, it can be submitted via e-mail to contact@dotnetfoundation.org (referencing this issue number).
Sean Dustin Hunt, seandhunt_7@yahoo.com
2. Description
Please provide a brief statement about your project in terms that are understandable to the target consumer of the library or project, i.e. an elevator pitch for the project:
It is a source generator designed to help people to properly implement the dispose pattern on their disposable types for them by using attributes on the members (and the type itself) to tell the generator what to do (gives it work items).
Please provide a 1 sentence (<140 character) summary of your project to help users when searching the .NET Foundation projects
A Source Generator that generates the Dispose functions in disposable types.
3. Project Governance
Please complete this section about who will be maintaining the open source project and how it will run.
Project Lead: Anyone who has great experience with source generators.
(Who is the primary contact point for the community and the .NET Foundation when discussing governance of the project.)
Name: Sean D. Hunt
Email: seandhunt_7@yahoo.com
GitHub Profile URL: https://github.com/AraHaan/
Committers:
Which individuals have commit / write access to the repository, what is their GitHub ID and who is their employer (if contributions are on behalf of an employer)
Only owners of the organization has write access (me, and a bot account I made for CI submodule updates I had to do).
AraHaan, Not employed.
Elskom-gitsync, Not employed (is the bot account I made for CI)
Governance Model:
Please describe how new code changes are proposed to the project, how those changes are reviewed and how a decision is made to accept proposed changes. Also describe the process for identifying and appointing new committers.
As a new issue or discussion. Some minor changes (like readme changes, or CI configuration changes) can be made to the default branch or a separate branch and PR'd without issues. Releases get tagged when they are tested to fully work (only when actual code changes). New contributors get identified by how frequently they contribute useful changes or when they ask to become a contributor to make some changes.
If a maintainers opens a PR, I like to have it to where other maintainers must review it before merging, but because I am currently the only one maintaining it I cant set that up just yet.
CLA
If already an OSS project, was a Contribution License Agreement in place for contributions accepted? How does the project check who has signed one? No.
CLA Notification Alias
Provide an email address that will receive CLA related notifications from the .NET Foundation CLA automation
My email, or if it gets moved to https://github.com/dotnet the one they use (so I do not get spammed too much with CLA emails).
Assignment Model. Under the .NET Foundation assignment model, project ownership and other intellectual property is assigned to the .NET Foundation and the .NET Foundation agrees to grantback a license to the contributor(s).
Contribution Model. Under the .NET Foundation contribution model, a project retains ownership of the copyright, but grants the .NET Foundation a broad license to the project’s code and other intellectual property. The project also confirms that the project’s submissions to .NET Foundation are its own original work (there are also instructions for any third party materials that might be included).
I think for this project either model can be chosen, however I am alright with the assignment one being used so that way I do not have to worry what happens to the project in case there is a time where I cant focus on the project much that the foundation can help bring it forwards without much work (and possible burnouts from maintaining it myself) which is a common problem I face which can often result in me forgetting parts of the codebase and the inadvertently reduce the quality of the code.
4. Repository Layout
The .NET Foundation host guidance for new projects and details on recommended structure here:
https://github.com/dotnet/home/tree/master/guidance
Note that the open source repository should be the master where changes are made by the core development team using the same PR process that is used for non-committer contributions.
Please define below any changes you would want to make to your repositories as part of the process of joining the .NET Foundation
- my contributing file would need to be changed and moved to the root: https://github.com/Elskom/IDisposableGenerator/blob/main/.github/CONTRIBUTING.md.
- the COC would most likely need to be changed to the .NET Foundation's COC: https://github.com/Elskom/IDisposableGenerator/blob/main/CODE_OF_CONDUCT.md
- the security policy might also need a few changes to match that which the .NET Foundation uses for most of the projects in the .NET infrastructure: https://github.com/Elskom/IDisposableGenerator/blob/main/SECURITY.md
- the issue templates would need to be converted to issue forms and/or pick up common ones from the ones the .NET Foundation uses for most of it's current projects (aka what dotnet/runtime, dotnet/sdk, etc uses).
- The pull request template for sure might need to be replaced as well too.
- a docs folder would need to be added to document the attributes that control the source generator.
- build scripts would need to be made so that way any CI can call into it (other than just github actions, like azure pipelines that the normal .NET infrastructure uses).
- use the arcade sdk that sets all nuget packages to
artifacts/packages/$(Configuration)/(Non)Shipping. - if possible include an strong name key used by the .NET Foundation for the generator.
5. Eligibility Criteria
Please complete the following for your project
- The project is built on the .NET platform and/or creates value within the .NET ecosystem.
- Yes
- No
- The project produces source code for distribution to the public at no charge.
- Yes
- No
- The project's code is easily discoverable and publicly accessible (preferably on GitHub).
- Yes
- No
- The project contains a build script that can produce deployable artifacts that are identical to the official deployable artifacts, with the exception of code signing (Exception may be granted for strong name keys, though strongly encouraged to be committed. Exception relies on OSS signing being in the build script for public builds).
- Yes
- No (Project currently does not use dotnet/arcade however I have a project that does use parts of it, project does use github actions currently for building)
- When applicable, project must use reproducible build settings in its toolchain.
- Yes (I try to use sourcelink for everything and set deterministic on CI builds as well as always embed pdbs)
- No
- The project uses Source Link.
- Yes
- No
- The project uses either embedded PDBs or publish symbol packages to NuGet (if applicable).
- Yes
- No
- The project code signs their artifacts as appropriate.
- Yes
- No (I normally use strong name signing but for some reason I must have forgot it for this one.)
- The project organization has 2FA enabled. Requiring 2FA must be done as part of onboarding if not already enabled.
- Yes
- No (However I would like to move the project to https://github.com/dotnet/ if approved since I have members without 2FA on their accounts currently).
- Libraries that are mandatory dependencies of the project are offered under a standard, permissive open source license which has been approved by the .NET Foundation (exceptions include a dependency that is required by the target platform where no alternative open source dependency is available such as the .NET Framework or a hardware specific library).
- Yes (The project depends on Roslyn which is part of the .NET Foundation)
- No
- Committers are bound by a Contributor License Agreement (CLA) and/or are willing to embrace the .NET Foundation's CLA when the project becomes a Member.
- Yes (We currently lack an CLA but are willing to use the .NET Foundation's CLA on the project by moving it to their organization).
- No
- The copyright ownership of everything that the project produces is clearly defined and documented.
- Yes (it's located in the project readme on the project's repository)
- No
- The project has a public issue tracker where the status of any defect can be easily obtained.
- Yes (The issue tracker is located in the project's repository itself)
- No
- The project has a published Security Policy.
- Yes
- No
- The project has a home page which provides high level information about its status and purpose.
- Yes
- No (It lacks it's own homepage, but shows it on the readme of the project's source instead).
- The project has a public communication channel where community members can engage with maintainers.
- Yes (The project uses github discussions.)
- No
- The project has a publicly available location where members can review and contribute to documentation.
- Yes (The project currently does not contain docs in it's own source tree, but it is planned to get some written.)
- No
6. PR Plan
Please summarize the public relations plan for the announcement when joining the foundation (and releasing as open source if appropriate). What is the main story we wish to promote, through what channels, what issues should we be aware of? For significant news events then please also work with your .NET Foundation contact to ensure a full PR plan is developed.
Currently I plan to have a rerelease of the package on nuget.org as an .NET Foundation one (probably under a slightly different package name like Microsoft.NET.DisposableGenerator or something along those lines), or build it into the .NET SDK as opt-in <UseDisposableGenerator>true</UseDisposableGenerator> (in the sdk's copy of msbuild), or both as a package and opt-in. I also plan to notify my users to migrate to the .NET Foundation released version then as well.
We can promote it as a source generator that allows to implement the disposable interface for their disposable types for them using only attributes on what it needs to clean up, as well as set up which types it should generate for. (or however is the best way to word it)
7. Infrastructure Requirements
Please describe any infrastructure requirements for the project. For example, how will build servers be operated? Any web hosting or service hosting requirements? Do we need to set up SSL certificates or provide Authenticode Code Signing arrangement for releases?
Currently for the packages they would need to be published to related nuget feeds, they can be pushed to the same feeds as used those the normal .NET infrastructure uses today. Also if possible it would be nice to have it use the arcade to simplify the package settings currently being set in the codebase (perhaps an Microsoft.DotNet.SourceGenerators.Sdk can be made that implicitly references the roslyn package(s) commonly used by source generators used in the .NET infrastructure today as well as any common data between all of them).
8. Additional Notes
Please provide any additional information required or use this area for notes during the onboarding process. If this open source project has similarities with any other projects in this space then please detail them and why this project is different. If there are any potential issues that you feel the project might need help with early on then also state them here and discuss with your .NET Foundation Contact.
I created this project from my usage of IDisposableAnalyzers for years. With many projects using it and making disposable types I felt like I needed a way to source generate my code to the dispose functions in my types so that way I do not have to write them all by hand (and possibly get them wrong) as such I made this generator to do all of that with great success currently.
Also if the generator gets added, I think dotnet/runtime could benefit from it as well (and the other projects that creates disposable types) so I think it should be good for general usage.
Also if possible I also accept PR's to help me migrate the project source layout items that I listed above if one wants to help out on those. I do however know that the most difficult parts might be changing the issue/PR templates, the COC, polishing the security policy, moving and changing the contributing file, and adding the build scripts and the arcade sdk. I think the docs should be easy to write however.
Contributor guide
No contributing guide indexed for this repository
First steps
- Read the whole issue, then the project's contributing guide.
- Comment on the issue to say you are picking it up — it saves two people doing the same work.
- Fork the repository and make your change on a branch.
- Open a pull request that references the issue number.
Assessment
This issue has not been assessed yet.