Skip to content

Commit 256416a

Browse files
Add draft, unapproved package maintainers working group charter (#19)
Co-authored-by: Matthias Kestenholz <mk@feinheit.ch>
1 parent 757c948 commit 256416a

File tree

1 file changed

+126
-0
lines changed

1 file changed

+126
-0
lines changed

draft/package-maintainers.md

Lines changed: 126 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,126 @@
1+
# Package Maintainers Working Group
2+
3+
🚧 Draft charter: this working group isn’t currently approved. The proposal requires further work, and an initial membership team.
4+
5+
## Scope of responsibilities
6+
7+
This group supports package maintainers in the Django ecosystem.
8+
Packages are an important part of the experience of using Django, and their maintainers can benefit from different forms of support than Django contributors and users.
9+
10+
The goals of the group are:
11+
12+
- To facilitate discussions and share knowledge about common issues or tasks in package maintenance.
13+
- To coordinate efforts to improve the health and quality of packages in the Django ecosystem.
14+
- To advocate for the needs of package maintainers in the Django community.
15+
16+
This is a broad definition of the group’s remit.
17+
Current members select specific activities to undertake based on their interests and availability.
18+
See [Group activities](#group-activities) for examples of what the group may choose to do.
19+
20+
### Delegated responsibilities
21+
22+
With regards to Django Software Foundation responsibilities and resources, the group operates with:
23+
24+
- No special powers delegated by the board to the group.
25+
- No specific "Django Software Foundation" actions the group can take directly.
26+
27+
Any request for funding or resources are made via existing processes outside of this group.
28+
This can be revised in the future as and when the group identifies specific recurring needs.
29+
30+
## Membership
31+
32+
- Chair: You?
33+
- Co-Chair: You?
34+
- Board Liaison (must be an active Board member; may be the same as Chair/Co-Chair): You?
35+
- Other members:
36+
- You?
37+
38+
The Chair, Co-Chair and Board Liaison manage the membership of the group. The Chair and Co-Chair animate the group’s activities. The Board Liaison relays information between the group and the Django Software Foundation Board.
39+
40+
### Eligibility
41+
42+
Membership is open to all Individual Members of the Django Software Foundation.
43+
44+
### How to join
45+
46+
To join, members must apply via the group’s [membership application form](https://www.example.com/) (to be set up once the group is up and running), sharing their motivation for joining, and expected contributions.
47+
48+
Membership applications are reviewed asynchronously and during meetings, after which they will be voted in by current group members (50%+1). Members will be selected for the group based on their interest in the group’s goals and ability to contribute to them.
49+
50+
### Membership terms
51+
52+
Members join the group for a 12-month term. At the end of this term, they need to opt into staying involved to keep being a member of the group.
53+
54+
If any member wishes to leave the group before the end of their term, they can do so without a vote.
55+
56+
Members can propose a vote on removing a member from the working group. This needs 50%+1 agreement.
57+
58+
## Budget
59+
60+
No allocated budget, the group makes ad-hoc requests for funding or resources as needed.
61+
62+
## Group communications
63+
64+
The group communicates asynchronously via:
65+
66+
- The public `#packages` channel on the Django Discord server.
67+
- Appropriate public sections of the [Django Forum](https://forum.djangoproject.com/).
68+
- GitHub issues and pull requests in a new `django/package-maintainers-wg` repository.
69+
- Collaborative documents set up in the Django Software Foundation’s Google Workspace.
70+
- A new private #package-maintainers-wg` channel on the Django Discord server for internal discussions.
71+
72+
The group will also offer office hours for package maintainers every month via a video call.
73+
74+
## Reporting
75+
76+
The group will share highlights from current activities on a monthly basis via a forum post.
77+
78+
## Appendix
79+
80+
### Group activities
81+
82+
As an illustration of the group’s remit, here are possible activities members could take part in.
83+
84+
#### Support Django version compatibility efforts
85+
86+
As Django regularly releases new versions, it’s an ongoing effort to ensure packages are compatible with new releases.
87+
88+
Group members can support maintainers in this effort by:
89+
90+
- Creating a shared calendar with Django release dates and deadlines.
91+
- Creating communication channels for package maintainers to coordinate compatibility changes for a specific release.
92+
- Recommending appropriate automation, such as [django-upgrade](https://github.com/adamchainz/django-upgrade) or how to set up Django pre-releases in Continuous Integration.
93+
- Proposing additions to the Django release notes with recommendations on how to handle deprecations.
94+
95+
#### Share packaging best practices
96+
97+
The group can work on create, maintain, or curate best practices for Django package maintainers. For example, the official [Advanced tutorial: How to write reusable apps](https://docs.djangoproject.com/en/5.0/intro/reusable-apps/), or packaging-focused sections on third-party resources like [awesome-django](https://github.com/wsvincent/awesome-django).
98+
99+
Those best practices can cover aspects like:
100+
101+
- Documentation approaches and tools
102+
- Use of the `django_` prefix for app names (see [Change reusable apps naming recommendation](https://forum.djangoproject.com/t/change-reusable-apps-naming-recommendation/25233)).
103+
- Recommended Python, Django, browser, operating system support policies to align with those of Django itself.
104+
- Tooling, for example how to set up Continuous Integration for Django packages.
105+
106+
#### Facilitate community-driven maintenance
107+
108+
Group members can liaise with organizations dedicated to sharing maintenance efforts, such as [Jazzband](https://jazzband.co/), [Wagtail Nest](https://github.com/wagtail-nest), or [Django Commons](https://github.com/django-commons). Or work directly with packages in need of new maintainers to find new candidates. This can involve:
109+
110+
- Sharing calls for new package maintainers.
111+
- Coordinating trusted volunteer open source “roadies” familiar with package ownership transfers.
112+
- Facilitating participation in mentoring programs such as [Google Summer of Code](https://summerofcode.withgoogle.com/) or [Djangonaut Space](https://djangonaut.space/).
113+
- Providing support for tasks requiring very specific expertise, like funding avenues or vulnerability reports handling.
114+
- Encouraging working on packages during contributor sprints.
115+
116+
### Curate training for maintainers
117+
118+
The group could help organize (and fund) training sessions or training material for package maintainers on relevant topics. For example anything relating to sustainability of long-term development, or product / project management (deprecation policies, user research, writing roadmaps, fundraising).
119+
120+
### Advance the state of the art
121+
122+
The group could also work on more ambitious projects to advance the state of the art in Django and Python package maintenance. For example:
123+
124+
- A standard to call for contributors, maintainers, or request funding via pip or a manage.py check
125+
- Distributed code review for Django packages (see for example [crev](https://github.com/crev-dev/crev/))
126+
- Participation in convenings such as [PackagingCon](https://packaging-con.org/), [Upstream](https://upstream.live/), etc.

0 commit comments

Comments
 (0)