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

.Net foundation #10

Merged
merged 4 commits into from
Jun 29, 2024
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
12 changes: 12 additions & 0 deletions .github/FUNDING.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,12 @@
# These are supported funding model platforms

github: gregsdennis
patreon: gregsdennis
open_collective: # Replace with a single Open Collective username
ko_fi: gregsdennis
tidelift: # Replace with a single Tidelift platform-name/package-name e.g., npm/babel
community_bridge: # Replace with a single Community Bridge project-name e.g., cloud-foundry
liberapay: # Replace with a single Liberapay username
issuehunt: # Replace with a single IssueHunt username
otechie: # Replace with a single Otechie username
custom: # Replace with up to 4 custom sponsorship URLs e.g., ['link1', 'link2']
17 changes: 17 additions & 0 deletions .github/SECURITY.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,17 @@
## Personal Information

Please don't share any personal information you don't want _everyone_ to know. Once it's on the internet, it's there forever.

Even editing personal information out of comments doesn't remove it, as comment history is available.

## Secure/Privileged Information

Please don't share any secure details, such as passwords or other keys.

Please don't share any proprietary information or code. If posting examples, create a [minimal reproducible example](https://en.wikipedia.org/wiki/Minimal_reproducible_example).

If for some reason secure information must be shared, please arrange to DM me (gregsdennis) in Slack (link in the README). I will not share any such information, and since the workspace is free, any messages will eventually be lost to the void.

## Security Reporting

Please share any security issues you find by DM'ing me in Slack. My best effort will be made to resolve these issues.
6 changes: 6 additions & 0 deletions .github/SUPPORT.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,6 @@
If you find you need help with any of the `json-everything` libraries you can:

- Join the [Slack workspace](https://join.slack.com/t/manateeopensource/shared_invite/enQtMzU4MjgzMjgyNzU3LWZjYzAzYzY3NjY1MjY3ODI0ZGJiZjc3Nzk1MDM5NTNlMjMyOTE0MzMxYWVjMjdiOGU1NDY5OGVhMGQ5YzY4Zjg),
- Post a question on [StackOverflow](http://www.stackoverflow.com) with the `json-everything` tag\*

For feature requests, bug reports, or documentation errata reports, please create an issue.
128 changes: 128 additions & 0 deletions CODE_OF_CONDUCT.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,128 @@
# Contributor Covenant Code of Conduct

## Our Pledge

We as members, contributors, and leaders pledge to make participation in our
community a harassment-free experience for everyone, regardless of age, body
size, visible or invisible disability, ethnicity, sex characteristics, gender
identity and expression, level of experience, education, socio-economic status,
nationality, personal appearance, race, religion, or sexual identity
and orientation.

We pledge to act and interact in ways that contribute to an open, welcoming,
diverse, inclusive, and healthy community.

## Our Standards

Examples of behavior that contributes to a positive environment for our
community include:

* Demonstrating empathy and kindness toward other people
* Being respectful of differing opinions, viewpoints, and experiences
* Giving and gracefully accepting constructive feedback
* Accepting responsibility and apologizing to those affected by our mistakes,
and learning from the experience
* Focusing on what is best not just for us as individuals, but for the
overall community

Examples of unacceptable behavior include:

* The use of sexualized language or imagery, and sexual attention or
advances of any kind
* Trolling, insulting or derogatory comments, and personal or political attacks
* Public or private harassment
* Publishing others' private information, such as a physical or email
address, without their explicit permission
* Other conduct which could reasonably be considered inappropriate in a
professional setting

## Enforcement Responsibilities

Community leaders are responsible for clarifying and enforcing our standards of
acceptable behavior and will take appropriate and fair corrective action in
response to any behavior that they deem inappropriate, threatening, offensive,
or harmful.

Community leaders have the right and responsibility to remove, edit, or reject
comments, commits, code, wiki edits, issues, and other contributions that are
not aligned to this Code of Conduct, and will communicate reasons for moderation
decisions when appropriate.

## Scope

This Code of Conduct applies within all community spaces, and also applies when
an individual is officially representing the community in public spaces.
Examples of representing our community include using an official e-mail address,
posting via an official social media account, or acting as an appointed
representative at an online or offline event.

## Enforcement

Instances of abusive, harassing, or otherwise unacceptable behavior may be
reported to the community leaders responsible for enforcement
via Slack (link in the README).
All complaints will be reviewed and investigated promptly and fairly.

All community leaders are obligated to respect the privacy and security of the
reporter of any incident.

## Enforcement Guidelines

Community leaders will follow these Community Impact Guidelines in determining
the consequences for any action they deem in violation of this Code of Conduct:

### 1. Correction

**Community Impact**: Use of inappropriate language or other behavior deemed
unprofessional or unwelcome in the community.

**Consequence**: A private, written warning from community leaders, providing
clarity around the nature of the violation and an explanation of why the
behavior was inappropriate. A public apology may be requested.

### 2. Warning

**Community Impact**: A violation through a single incident or series
of actions.

**Consequence**: A warning with consequences for continued behavior. No
interaction with the people involved, including unsolicited interaction with
those enforcing the Code of Conduct, for a specified period of time. This
includes avoiding interactions in community spaces as well as external channels
like social media. Violating these terms may lead to a temporary or
permanent ban.

### 3. Temporary Ban

**Community Impact**: A serious violation of community standards, including
sustained inappropriate behavior.

**Consequence**: A temporary ban from any sort of interaction or public
communication with the community for a specified period of time. No public or
private interaction with the people involved, including unsolicited interaction
with those enforcing the Code of Conduct, is allowed during this period.
Violating these terms may lead to a permanent ban.

### 4. Permanent Ban

**Community Impact**: Demonstrating a pattern of violation of community
standards, including sustained inappropriate behavior, harassment of an
individual, or aggression toward or disparagement of classes of individuals.

**Consequence**: A permanent ban from any sort of public interaction within
the community.

## Attribution

This Code of Conduct is adapted from the [Contributor Covenant][homepage],
version 2.0, available at
https://www.contributor-covenant.org/version/2/0/code_of_conduct.html.

Community Impact Guidelines were inspired by [Mozilla's code of conduct
enforcement ladder](https://github.com/mozilla/diversity).

[homepage]: https://www.contributor-covenant.org

For answers to common questions about this code of conduct, see the FAQ at
https://www.contributor-covenant.org/faq. Translations are available at
https://www.contributor-covenant.org/translations.
37 changes: 37 additions & 0 deletions CONTRIBUTING.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,37 @@
# Community Engagement

Questions, suggestions, corrections. All are welcome.

Channels for community engagement (where I'll be looking) include:

- Issues
- Slack (link in the README)
- StackOverflow (tag with `json-everything`)

## Submitting PRs

Please be sure that an issue has been opened to allow for proper discussion before submitting a PR. If the project maintainers decide _not_ to merge your PR, you might feel you've wasted your time, and no one wants that.

# Development

## Requirements

This site is a typical [Jekyll](https://jekyllrb.com/) website. They list all of the requirements to run the site on their page.

The template is modified from the [Chirpy template](https://chirpy.cotes.page/).

Once all of the dependencies have been installed, you can run the site with one of the `run` scripts in the repository root.

## IDE

I use Visual Studio Code with the extensions it recommends at you, but you can use whatever you feel comfortable with.

## Code Style & Releases

While I do have an `.editorconfig` that most editors should respect, please feel free to add any code contributions using your own coding style. Trying to conform to someone else's style can be a headache and confusing, and I prefer working code over pretty code. I find it's easier for contributors if I make my own style adjustments after a contribution rather than forcing conformance to my preferences.

## What Needs Doing?

Anything in the [issues](https://github.com/json-everything/json-everything-docs/issues?q=is%3Aopen+is%3Aissue+label%3A%22help+wanted%22) with a `help wanted` label is something that could benefit from a volunteer or two.

Outside of this, PRs are welcome. For larger changes, it's preferred that there be some discussion in an issue before a PR is submitted. Mainly, I don't want you to feel like you've wasted your time if changes are requested or the PR is ultimately closed unmerged.
2 changes: 1 addition & 1 deletion LICENSE
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
MIT License

Copyright (c) 2021 Cotes Chung
Copyright (c) .NET Foundation and Contributors

Permission is hereby granted, free of charge, to any person obtaining a copy
of this software and associated documentation files (the "Software"), to deal
Expand Down
76 changes: 76 additions & 0 deletions _posts/2024/2024-06-20-joining-net-foundation.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,76 @@
---
title: "Joining the .Net Foundation"
date: 2024-06-10 09:00:00 +1200
tags: [.net, announcement]
toc: true
pin: false
---

That's right! The `json-everything` project is officially a .Net Foundation member!

## How it started

### Inspiration from JSON Schema

A couple years ago JSON Schema started the onboarding process to join the OpenJS Foundation. Joining a foundation means that they can lean on the experience of other members for help on things like governance, outreach, project organization, etc. It helps to have the backing of a larger organization.

However, while the specification group would be joining the Foundation, all of the tooling built around the spec remained independent.

Sadly, the OpenJS Foundation onboarding journey was interrupted, so JSON Schema is still independent. We'll likely try again, maybe with another foundation, but that's on the horizon for right now... and this post is about `json-everything` anyway!

### A push via JSON Path

As part of the JSON Path specification effort with IETF, I reached out to a lot of JSON Path implementations to let them know a specification was coming, and I kept my eyes open for other places where JSON Path was being used and/or requested. One of those places was a [.Net issue](https://github.com/dotnet/runtime/issues/31068) requesting that _System.Text.Json_ get first-party support for the query syntax. I posted about _JsonPath.Net_, and [one of the responses](https://github.com/dotnet/runtime/issues/31068#issuecomment-1992390964) intrigued me.

> That is awesome and for my personal stuff this is great, but professionally, I might be limited by corporate policy to use 1st party (Microsoft), or 2nd party (.net foundation membered), or "verified" 3rd party, (Newtonsoft), libraries. - [@frankhaugen](https://github.com/frankhaugen)

I had never considered that a professional wouldn't be able to use my libraries because of a corporate policy.

They go on to say that many of these policies are driven by "auditing agencies for things like SOC2 and ISO2700 -certifications."

As I created these libraries to help developers make great software, this barrier bothered me.

### Investigation

Looking into the three options mentioned, I first discovered that I am not Microsoft. (This was a devastating realization, and I had to re-evaluate my entire worldview.) I'm also not a .Net Foundation member, but I could look into joining. But first I wondered what it would take to have my packages verified on Nuget.

Verifying packages is pretty simple: you just need a signing certificate. There are a [_lot_ of companies](https://www.google.com/search?q=signing+certificate) that provide them... and WOW are they expensive!

So, .Net Foundation seemed to be my best option. I researched the [benefits](https://dotnetfoundation.org/membership/participation-types), the requirements, and the T&Cs. (I'm looking for links to all of the pages I found before, but the site has changed, and it looks like the application process now starts by filling out a web form. When I looked into it before, I just had to [open an issue](https://github.com/dotnet-foundation/projects/issues/new?assignees=sbwalker%2CChrisSfanos&labels=project+application%2Cproject+support&projects=&template=application.yml&title=Issue%3A+New+.NET+Foundation+Project+Application) on the .Net Foundation's Projects repo. If you'd like to join, I recommend going through the web form.)

### Application

They use a very extensive issue template that plainly lists all of their requirements. Fortunately, through wanting to make my repository the best it could be, most of the requirements had already been met.

I had some questions about the IP implications of joining, and the Projects Committee was very helpful. [Shaun Walker](https://github.com/sbwalker) answered these questions to my satisfaction, and [Chris Sfanos](https://github.com/ChrisSfanos) has been guiding the application through the rest of the process.

### Acceptance

The Projects Committee decides on projects to be inducted on what appears to be a monthly basis. The result of their decision then goes to the .Net Foundation Board, who ultimately accepts or rejects the application.

I was quite pleased when I received notification that my humble `json-everything` had been accepted.

## How it's going

I'm currently finishing up the onboarding process. There a [checklist](https://github.com/dotnet-foundation/projects/issues/367#issuecomment-2155296470) on my application issue that details all of the things that need to happen (or ensure have happened).

I think the biggest change is that the project will be under a [CLA](https://dotnetfoundation.org/docs/default-source/default-document-library/contribution-license-agreement.pdf). I've read through it, and it basically says the contributor allows the project and .Net Foundation to distribute and potentially patent their contribution (as part of the project). I'm not sure anything contributed to `json-everything` will or could be patented, but I suppose it's come up enough for them to add it to the CLA. Outside of that, the contributor retains all rights.

I've also moved all of the related repos into a new `json-everything` org, and I spruced up the place a bit, made all the readmes pretty. GitHub has done a good job of applying redirects, so everyone's links should still work.

Then there are some housekeeping things for the repos and their public announcement, which will come via their newsletter.

## The future

<div class="video-container">
{% video /assets/video/star-trek-exciting.mp4 798 %}
<p class="video-caption">I like this ship! You know, it's exciting! - <strong>Star Trek, 2009</strong></p>
</div>

The future is bright for the project. I expect to be working mostly on the new [learning site](/posts/learn-json-everything) by adding more lessons for _JsonSchema.Net_ and the other libraries.

I've been working hard over in JSON-Schema-Land getting the spec ready for its next release. Keep an eye out on the [JSON Schema blog](https://json-schema.org/blog) for news about that.

And hopefully this means that more people can use my work!

_If you like the work I put out, and would like to help ensure that I keep it up, please consider [becoming a sponsor](https://github.com/sponsors/gregsdennis)!_
Binary file added assets/video/star-trek-exciting.mp4
Binary file not shown.