dotnet-foundation / projects

This repository is used for onboarding new projects
111 stars 30 forks source link

IDisposableGenerator #194

Open AraHaan opened 2 years ago

AraHaan commented 2 years ago

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

5. Eligibility Criteria

Please complete the following for your project

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.

AraHaan commented 2 years ago

I have noticed recently that I thought SourceLink was used (and corrected it). However I have some tasks I will need to be completed as well:

These are on top of the ones listed above. If anyone would like to file an PR to do any of these to help out on them, it would be appreciated as well.