Skip to content

Commit 38ccceb

Browse files
authored
Merge pull request #7096 from cblecker/annual-report-2022
Add annual report templates for 2022
2 parents 84e98a7 + 691e8ba commit 38ccceb

File tree

37 files changed

+2772
-225
lines changed

37 files changed

+2772
-225
lines changed

generator/annual-report/github_issue.tmpl

Lines changed: 6 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,9 @@
11
{{lastYear}} Annual Report: {{.Prefix | toUpper}} {{.Name}}
22

33
Chairs: {{range .Leadership.Chairs}}@{{.GitHub}} {{end}}
4+
{{- if.Contact.Liaison.GitHub}}
45
Liaison: @{{.Contact.Liaison.GitHub}}
6+
{{- end}}
57

68
Actions for the chair/organizer of the community group:
79
- [ ] Consult your community group to complete draft of report
@@ -13,9 +15,11 @@ Actions for the chair/organizer of the community group:
1315

1416
Once all the above items are complete, this issue may be `/close`'d
1517

18+
A template has already been generated for your group, and is available [here](https://git.k8s.io/community/{{.Dir}}/annual-report-{{lastYear}}.md).
19+
1620
Key dates:
17-
- Initial PR to communtiy repo should be opened by February 14, {{now.UTC.Year}}
18-
- PR should be reviewed and merged by March 1st, {{now.UTC.Year}}
21+
- Initial PR to communtiy repo should be opened by March 24th, {{now.UTC.Year}}
22+
- PR should be reviewed and merged by April 7th, {{now.UTC.Year}}
1923

2024
More detailed information on the annual reports process is available [here](https://git.k8s.io/community/committee-steering/governance/annual-reports.md).
2125

generator/annual-report/sig_report.tmpl

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -16,9 +16,9 @@
1616

1717
{{$releases := getReleases}}
1818
{{$owingsig := .Dir}}
19-
3. KEP work in {{lastYear}} (v{{$releases.Latest}}, v{{$releases.LatestMinusOne}}, v{{$releases.LatestMinusTwo}}):
19+
3. KEP work in {{lastYear}} ({{$releases.LatestMinusTwo}}, {{$releases.LatestMinusOne}}, {{$releases.Latest}}):
2020
{{- range $stage, $keps := filterKEPs $owingsig $releases}}
21-
{{ $stage }}:
21+
- {{ $stage }}:
2222
{{- range $keps}}
2323
- [{{.Number}} - {{.Title}}](https://github.com/kubernetes/enhancements/tree/master/keps/{{.OwningSIG}}/{{.Name}}) - {{.LatestMilestone -}}
2424
{{ end}}

generator/app.go

Lines changed: 22 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -43,6 +43,8 @@ import (
4343
"github.com/go-git/go-git/v5/storage/memory"
4444

4545
yaml "gopkg.in/yaml.v3"
46+
47+
"golang.org/x/mod/semver"
4648
)
4749

4850
const (
@@ -104,9 +106,24 @@ func getLastThreeK8sReleases() (Releases, error) {
104106
return Releases{}, err
105107
}
106108
var result Releases
107-
result.Latest = strings.Split(strings.TrimPrefix(*releases[0].TagName, "v"), ".")[0] + "." + strings.Split(strings.TrimPrefix(*releases[0].TagName, "v"), ".")[1]
108-
result.LatestMinusOne = strings.Split(strings.TrimPrefix(*releases[1].TagName, "v"), ".")[0] + "." + strings.Split(strings.TrimPrefix(*releases[1].TagName, "v"), ".")[1]
109-
result.LatestMinusTwo = strings.Split(strings.TrimPrefix(*releases[2].TagName, "v"), ".")[0] + "." + strings.Split(strings.TrimPrefix(*releases[2].TagName, "v"), ".")[1]
109+
for _, release := range releases {
110+
if release.GetPrerelease() || release.GetDraft() {
111+
continue
112+
}
113+
if result.Latest == "" {
114+
result.Latest = semver.MajorMinor(release.GetTagName())
115+
continue
116+
}
117+
if result.LatestMinusOne == "" {
118+
result.LatestMinusOne = semver.MajorMinor(release.GetTagName())
119+
continue
120+
}
121+
if result.LatestMinusTwo == "" {
122+
result.LatestMinusTwo = semver.MajorMinor(release.GetTagName())
123+
break
124+
}
125+
}
126+
110127
return result, nil
111128
}
112129

@@ -712,7 +729,7 @@ func createAnnualReportIssue(groups []Group, prefix string) error {
712729

713730
outputPath := filepath.Join(outputDir, fmt.Sprintf("%s_%s.md", lastYear(), group.Dir))
714731
templatePath := filepath.Join(baseGeneratorDir, templateDir, annualReportIssueTemplate)
715-
if err := writeTemplate(templatePath, outputPath, "markdown", group); err != nil {
732+
if err := writeTemplate(templatePath, outputPath, "", group); err != nil {
716733
return err
717734
}
718735
}
@@ -756,7 +773,7 @@ func createAnnualReport(groups []Group, prefix string) error {
756773

757774
outputPath := filepath.Join(outputDir, fmt.Sprintf("annual-report-%s.md", lastYear()))
758775
templatePath := filepath.Join(baseGeneratorDir, templateDir, templateFile)
759-
if err := writeTemplate(templatePath, outputPath, "markdown", group); err != nil {
776+
if err := writeTemplate(templatePath, outputPath, "", group); err != nil {
760777
return err
761778
}
762779
}

go.mod

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -6,6 +6,7 @@ require (
66
github.com/client9/misspell v0.3.4
77
github.com/go-git/go-git/v5 v5.2.0
88
github.com/google/go-github/v32 v32.1.0
9+
golang.org/x/mod v0.4.0
910
gopkg.in/yaml.v3 v3.0.0-20200313102051-9f266ea9e77c
1011
k8s.io/enhancements v0.0.0-20230113204613-7f681415a001
1112
)

go.sum

Lines changed: 8 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -73,16 +73,21 @@ github.com/xanzy/ssh-agent v0.2.1 h1:TCbipTQL2JiiCprBWx9frJ2eJlCYT00NmctrHxVAr70
7373
github.com/xanzy/ssh-agent v0.2.1/go.mod h1:mLlQY/MoOhWBj+gOGMQkOeiEvkx+8pJSI+0Bx9h2kr4=
7474
golang.org/x/crypto v0.0.0-20190219172222-a4c6cb3142f2/go.mod h1:6SG95UA2DQfeDnfUPMdvaQW0Q7yPrPDi9nlGo2tz2b4=
7575
golang.org/x/crypto v0.0.0-20190308221718-c2843e01d9a2/go.mod h1:djNgcEr1/C05ACkg1iLfiJU5Ep61QUkGW8qpdssI0+w=
76+
golang.org/x/crypto v0.0.0-20191011191535-87dc89f01550/go.mod h1:yigFU9vqHzYiE8UmvKecakEJjdnWj3jj499lnFckfCI=
7677
golang.org/x/crypto v0.0.0-20200302210943-78000ba7a073/go.mod h1:LzIPMQfyMNhhGPhUkYOs5KpL4U8rLKemX1yGLhDgUto=
7778
golang.org/x/crypto v0.0.0-20200622213623-75b288015ac9/go.mod h1:LzIPMQfyMNhhGPhUkYOs5KpL4U8rLKemX1yGLhDgUto=
7879
golang.org/x/crypto v0.0.0-20201002170205-7f63de1d35b0 h1:hb9wdF1z5waM+dSIICn1l0DkLVDT3hqhhQsDNUmHPRE=
7980
golang.org/x/crypto v0.0.0-20201002170205-7f63de1d35b0/go.mod h1:LzIPMQfyMNhhGPhUkYOs5KpL4U8rLKemX1yGLhDgUto=
81+
golang.org/x/mod v0.4.0 h1:8pl+sMODzuvGJkmj2W4kZihvVb5mKm8pB/X44PIQHv8=
82+
golang.org/x/mod v0.4.0/go.mod h1:s0Qsj1ACt9ePp/hMypM3fl4fZqREWJwdYDEqhRiZZUA=
8083
golang.org/x/net v0.0.0-20190311183353-d8887717615a/go.mod h1:t9HGtf8HONx5eT2rtn7q6eTqICYqUVnKs3thJo3Qplg=
8184
golang.org/x/net v0.0.0-20190404232315-eb5bcb51f2a3/go.mod h1:t9HGtf8HONx5eT2rtn7q6eTqICYqUVnKs3thJo3Qplg=
85+
golang.org/x/net v0.0.0-20190620200207-3b0461eec859/go.mod h1:z5CRVTTTmAJ677TzLLGU+0bjPO0LkuOLi4/5GtJWs/s=
8286
golang.org/x/net v0.0.0-20200301022130-244492dfa37a/go.mod h1:z5CRVTTTmAJ677TzLLGU+0bjPO0LkuOLi4/5GtJWs/s=
8387
golang.org/x/net v0.0.0-20201224014010-6772e930b67b h1:iFwSg7t5GZmB/Q5TjiEAsdoLDrdJRC1RiF2WhuV29Qw=
8488
golang.org/x/net v0.0.0-20201224014010-6772e930b67b/go.mod h1:m0MpNAwzfU5UDzcl9v0D8zg8gWTRqZa9RBIspLL5mdg=
8589
golang.org/x/oauth2 v0.0.0-20180821212333-d2e6202438be/go.mod h1:N/0e6XlmueqKjAGxoOufVs8QHGRruUQn6yWY3a++T0U=
90+
golang.org/x/sync v0.0.0-20190423024810-112230192c58/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM=
8691
golang.org/x/sys v0.0.0-20190215142949-d0b11bdaac8a/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY=
8792
golang.org/x/sys v0.0.0-20190221075227-b4e8571b14e0/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY=
8893
golang.org/x/sys v0.0.0-20190412213103-97732733099d/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs=
@@ -96,6 +101,9 @@ golang.org/x/text v0.3.2/go.mod h1:bEr9sfX3Q8Zfm5fL9x+3itogRgK3+ptLWKqgva+5dAk=
96101
golang.org/x/text v0.3.3 h1:cokOdA+Jmi5PJGXLlLllQSgYigAEfHXJAERHVMaCc2k=
97102
golang.org/x/text v0.3.3/go.mod h1:5Zoc/QRtKVWzQhOtBMvqHzDpF6irO9z98xDceosuGiQ=
98103
golang.org/x/tools v0.0.0-20180917221912-90fa682c2a6e/go.mod h1:n7NCudcB/nEzxVGmLbDWY5pfWTLqBcC2KZ6jyYvM4mQ=
104+
golang.org/x/tools v0.0.0-20191119224855-298f0cb1881e/go.mod h1:b+2E5dAYhXwXZwtnZ6UAqBI28+e2cm9otk0dWdXHAEo=
105+
golang.org/x/xerrors v0.0.0-20190717185122-a985d3407aa7/go.mod h1:I/5z698sn9Ka8TeJc9MKroUUfqBBauWjQqLJ2OPfmY0=
106+
golang.org/x/xerrors v0.0.0-20191011141410-1b5146add898/go.mod h1:I/5z698sn9Ka8TeJc9MKroUUfqBBauWjQqLJ2OPfmY0=
99107
google.golang.org/appengine v1.1.0/go.mod h1:EbEs0AVv82hx2wNQdGPgUI5lhzA/G0D9YwlJXL52JkM=
100108
gopkg.in/check.v1 v0.0.0-20161208181325-20d25e280405/go.mod h1:Co6ibVJAznAaIkqp8huTwlJQCZ016jof/cbN4VW5Yz0=
101109
gopkg.in/check.v1 v1.0.0-20190902080502-41f04d3bba15/go.mod h1:Co6ibVJAznAaIkqp8huTwlJQCZ016jof/cbN4VW5Yz0=
Lines changed: 126 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,126 @@
1+
# 2022 Annual Report: SIG API Machinery
2+
3+
## Current initiatives
4+
5+
1. What work did the SIG do this year that should be highlighted?
6+
7+
-
8+
-
9+
-
10+
11+
2. What initiatives are you working on that aren't being tracked in KEPs?
12+
13+
-
14+
-
15+
-
16+
17+
18+
19+
3. KEP work in 2022 (v1.24, v1.25, v1.26):
20+
- alpha:
21+
- [3156 - HTTP3](https://github.com/kubernetes/enhancements/tree/master/keps/sig-api-machinery/3156-http3) - v1.24
22+
- beta:
23+
- [1965 - kube-apiserver identity](https://github.com/kubernetes/enhancements/tree/master/keps/sig-api-machinery/1965-kube-apiserver-identity) - v1.26
24+
- [2876 - CRD Validation Expression Language](https://github.com/kubernetes/enhancements/tree/master/keps/sig-api-machinery/2876-crd-validation-expression-language) - v1.25
25+
- stable:
26+
- [1164 - Deprecate and remove SelfLink](https://github.com/kubernetes/enhancements/tree/master/keps/sig-api-machinery/1164-remove-selflink) - v1.24
27+
- [1904 - Efficient watch resumption after kube-apiserver reboot](https://github.com/kubernetes/enhancements/tree/master/keps/sig-api-machinery/1904-efficient-watch-resumption) - v1.24
28+
29+
30+
## Project health
31+
32+
1. What areas and/or subprojects does your group need the most help with?
33+
Any areas with 2 or fewer OWNERs? (link to more details)
34+
35+
-
36+
-
37+
-
38+
39+
2. What metrics/community health stats does your group care about and/or measure?
40+
41+
-
42+
-
43+
-
44+
45+
3. Does your [CONTRIBUTING.md] help **new** contributors engage with your group specifically by pointing
46+
to activities or programs that provide useful context or allow easy participation?
47+
48+
-
49+
50+
4. If your group has special training, requirements for reviewers/approvers, or processes beyond the general [contributor guide],
51+
does your [CONTRIBUTING.md] document those to help **existing** contributors grow throughout the [contributor ladder]?
52+
53+
-
54+
55+
5. Does the group have contributors from multiple companies/affiliations?
56+
57+
-
58+
59+
6. Are there ways end users/companies can contribute that they currently are not?
60+
If one of those ways is more full time support, what would they work on and why?
61+
62+
-
63+
-
64+
65+
## Membership
66+
67+
- Primary slack channel member count:
68+
- Primary mailing list member count:
69+
- Primary meeting attendee count (estimated, if needed):
70+
- Primary meeting participant count (estimated, if needed):
71+
- Unique reviewers for SIG-owned packages: <!-- in future, this will be generated from OWNERS files referenced from subprojects, expanded with OWNERS_ALIASES files -->
72+
- Unique approvers for SIG-owned packages: <!-- in future, this will be generated from OWNERS files referenced from subprojects, expanded with OWNERS_ALIASES files -->
73+
74+
Include any other ways you measure group membership
75+
76+
## [Subprojects](https://git.k8s.io/community/sig-api-machinery#subprojects)
77+
78+
79+
80+
**Continuing:**
81+
82+
- component-base
83+
- control-plane-features
84+
- idl-schema-client-pipeline
85+
- json
86+
- kubernetes-clients
87+
- server-api-aggregation
88+
- server-binaries
89+
- server-crd
90+
- server-frameworks
91+
- server-sdk
92+
- universal-machinery
93+
- yaml
94+
95+
96+
## [Working groups](https://git.k8s.io/community/sig-api-machinery#working-groups)
97+
98+
99+
**Continuing:**
100+
101+
- API Expression
102+
- Multitenancy
103+
- Structured Logging
104+
105+
## Operational
106+
107+
Operational tasks in [sig-governance.md]:
108+
109+
- [ ] [README.md] reviewed for accuracy and updated if needed
110+
- [ ] [CONTRIBUTING.md] reviewed for accuracy and updated if needed
111+
(or created if missing and your contributor steps and experience are different or more
112+
in-depth than the documentation listed in the general [contributor guide] and [devel] folder.)
113+
- [ ] Subprojects list and linked OWNERS files in [sigs.yaml] reviewed for accuracy and updated if needed
114+
- [ ] SIG leaders (chairs, tech leads, and subproject owners) in [sigs.yaml] are accurate and active, and updated if needed
115+
- [ ] Meeting notes and recordings for 2022 are linked from [README.md] and updated/uploaded if needed
116+
- [ ] Did you have community-wide updates in 2022 (e.g. community meetings, kubecon, or kubernetes-dev@ emails)? Links to email, slides, or recordings:
117+
-
118+
-
119+
120+
[CONTRIBUTING.md]: https://git.k8s.io/community/sig-api-machinery/CONTRIBUTING.md
121+
[contributor ladder]: https://git.k8s.io/community/community-membership.md
122+
[sig-governance.md]: https://git.k8s.io/community/committee-steering/governance/sig-governance.md
123+
[README.md]: https://git.k8s.io/community/sig-api-machinery/README.md
124+
[sigs.yaml]: https://git.k8s.io/community/sigs.yaml
125+
[contributor guide]: https://git.k8s.io/community/contributors/guide/README.md
126+
[devel]: https://git.k8s.io/community/contributors/devel/README.md

sig-node/annual-report-2021.md renamed to sig-apps/annual-report-2022.md

Lines changed: 31 additions & 51 deletions
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,4 @@
1-
# 2021 Annual Report: SIG Node
1+
# 2022 Annual Report: SIG Apps
22

33
## Current initiatives
44

@@ -14,25 +14,20 @@
1414
-
1515
-
1616

17-
3. KEP work in 2021 (1.x, 1.y, 1.z):
1817

19-
<!--
20-
In future, this will be generated from kubernetes/enhancements kep.yaml files
21-
1. with SIG as owning-sig or in participating-sigs
22-
2. listing 1.x, 1.y, or 1.z in milestones or in latest-milestone
23-
-->
2418

25-
- Stable
26-
- [$kep-number - $title](https://git.k8s.io/community/$link/README.md) - $milestone.stable
27-
- [$kep-number - $title](https://git.k8s.io/community/$link/README.md) - $milestone.stable
28-
- Beta
29-
- [$kep-number - $title](https://git.k8s.io/community/$link/README.md) - $milestone.beta
30-
- [$kep-number - $title](https://git.k8s.io/community/$link/README.md) - $milestone.beta
31-
- Alpha
32-
- [$kep-number - $title](https://git.k8s.io/community/$link/README.md) - $milestone.alpha
33-
- [$kep-number - $title](https://git.k8s.io/community/$link/README.md) - $milestone.alpha
34-
- Pre-alpha
35-
- [$kep-number - $title](https://git.k8s.io/community/$link/README.md)
19+
3. KEP work in 2022 (v1.24, v1.25, v1.26):
20+
- alpha:
21+
- [2804 - Consolidate Workload controllers life cycle status](https://github.com/kubernetes/enhancements/tree/master/keps/sig-apps/2804-consolidate-workload-controllers-status) - v1.24
22+
- [961 - Implement maxUnavailable for StatefulSets](https://github.com/kubernetes/enhancements/tree/master/keps/sig-apps/961-maxunavailable-for-statefulset) - v1.24
23+
- beta:
24+
- [2307 - Job tracking without lingering Pods](https://github.com/kubernetes/enhancements/tree/master/keps/sig-apps/2307-job-tracking-without-lingering-pods) - v1.26
25+
- [2879 - Track ready Pods in Job status](https://github.com/kubernetes/enhancements/tree/master/keps/sig-apps/2879-ready-pods-job-status) - v1.24
26+
- stable:
27+
- [2214 - Indexed Job](https://github.com/kubernetes/enhancements/tree/master/keps/sig-apps/2214-indexed-job) - v1.24
28+
- [2232 - Suspend Job](https://github.com/kubernetes/enhancements/tree/master/keps/sig-apps/2232-suspend-jobs) - v1.24
29+
- [2599 - minReadySeconds for StatefulSets](https://github.com/kubernetes/enhancements/tree/master/keps/sig-apps/2599-minreadyseconds-for-statefulsets) - v1.25
30+
3631

3732
## Project health
3833

@@ -80,43 +75,29 @@ In future, this will be generated from kubernetes/enhancements kep.yaml files
8075

8176
Include any other ways you measure group membership
8277

83-
## Subprojects
78+
## [Subprojects](https://git.k8s.io/community/sig-apps#subprojects)
79+
8480

85-
<!--
86-
In future, this will be generated from delta of sigs.yaml from $YYYY-01-01 to $YYYY-12-31
87-
Manually visible via `git diff HEAD@{$YYYY-01-01} HEAD@{$YYYY-12-31} -- $sig-id/README.md`
88-
-->
8981

90-
New in $YYYY:
91-
- [$subproject-name](https://git.k8s.io/community/$sig-id#$subproject-name)
92-
-
82+
**Continuing:**
9383

94-
Retired in $YYYY:
95-
- [$subproject-name](https://git.k8s.io/community/$sig-id#$subproject-name)
96-
-
84+
- application
85+
- examples
86+
- execution-hook
87+
- kompose
88+
- workloads-api
9789

98-
Continuing:
99-
- [$subproject-name](https://git.k8s.io/community/$sig-id#$subproject-name)
100-
-
10190

102-
## Working groups
91+
## [Working groups](https://git.k8s.io/community/sig-apps#working-groups)
10392

104-
<!--
105-
In future, this will be generated from delta of sigs.yaml from $YYYY-01-01 to $YYYY-12-31
106-
Manually visible via `git diff HEAD@{$YYYY-01-01} HEAD@{$YYYY-12-31} -- $sig-id/README.md`
107-
-->
10893

109-
New in $YYYY:
110-
- [$wg-name](https://git.k8s.io/community/$wg-id/) ([$YYYY report](https://git.k8s.io/community/$wg-id/annual-report-$YYYY.md))
111-
-
94+
**New in 2022:**
11295

113-
Retired in $YYYY:
114-
- [$wg-name](https://git.k8s.io/community/$wg-id/) ([$YYYY report](https://git.k8s.io/community/$wg-id/annual-report-$YYYY.md))
115-
-
96+
- Batch
11697

117-
Continuing:
118-
- [$wg-name](https://git.k8s.io/community/$wg-id/) ([$YYYY report](https://git.k8s.io/community/$wg-id/annual-report-$YYYY.md))
119-
-
98+
**Continuing:**
99+
100+
- Data Protection
120101

121102
## Operational
122103

@@ -128,16 +109,15 @@ Operational tasks in [sig-governance.md]:
128109
in-depth than the documentation listed in the general [contributor guide] and [devel] folder.)
129110
- [ ] Subprojects list and linked OWNERS files in [sigs.yaml] reviewed for accuracy and updated if needed
130111
- [ ] SIG leaders (chairs, tech leads, and subproject owners) in [sigs.yaml] are accurate and active, and updated if needed
131-
- [ ] Meeting notes and recordings for 2021 are linked from [README.md] and updated/uploaded if needed
132-
- [ ] Did you have community-wide updates in 2021 (e.g. community meetings, kubecon, or kubernetes-dev@ emails)? Links to email, slides, or recordings:
112+
- [ ] Meeting notes and recordings for 2022 are linked from [README.md] and updated/uploaded if needed
113+
- [ ] Did you have community-wide updates in 2022 (e.g. community meetings, kubecon, or kubernetes-dev@ emails)? Links to email, slides, or recordings:
133114
-
134115
-
135116

136-
[CONTRIBUTING.md]: https://git.k8s.io/community/sig-node/CONTRIBUTING.md
117+
[CONTRIBUTING.md]: https://git.k8s.io/community/sig-apps/CONTRIBUTING.md
137118
[contributor ladder]: https://git.k8s.io/community/community-membership.md
138119
[sig-governance.md]: https://git.k8s.io/community/committee-steering/governance/sig-governance.md
139-
[README.md]: https://git.k8s.io/community/sig-node/README.md
120+
[README.md]: https://git.k8s.io/community/sig-apps/README.md
140121
[sigs.yaml]: https://git.k8s.io/community/sigs.yaml
141122
[contributor guide]: https://git.k8s.io/community/contributors/guide/README.md
142123
[devel]: https://git.k8s.io/community/contributors/devel/README.md
143-

0 commit comments

Comments
 (0)