Attrs: Governance

Created on 18 Feb 2017  Â·  24Comments  Â·  Source: python-attrs/attrs

While IMHO still under-appreciated :), attrs has grown impressively after a certain article has been released.

I feel like the governance of the project doesn’t reflect it anymore. Effectively lots of code has been written by @Tinche and a lot of design has been influenced by @glyph (attrs’s birth was me being frustrated by characteristic and glyph being awake at 4am on a Saturday morning).

At this point in time there are corners of attrs better understood by Tin than by me (omg the hypothesis parts) and I wouldn’t make certain decisions without consulting glyph first.

And these are just two examples. I would be thrilled if @njsmith or @cournape would get more involved.

Many PRs I review, I kind of glance over and rely on LGTMs of others. I can’t formally request reviews from others either. I just do it in the comments. It’s a weird place to be.

Additional to that: Berlin has amazing public transit. Saying: we have a lot of busses. :)


All that to say that attrs isn’t just my little pet project anymore. It has become a community project to a certain degree. Which I think is a very good thing. I wish it were more of that. Especially since I’m starting to have problems to keep up. My other projects like structlog or sigh pyOpenSSL are suffering from it. Currently I have 3 important logging-related PRs open on structlog but since they require me to re-learn logging-details I was glad I forgot about, I didn’t get around to work on them. This is as frustrating as it gets. I’m certainly also frustrating contributors that opened PRs months ago. I digress.

I don’t intend to give attrs free for grabs tho; I still want to be able to reject ideas that contradict my vision of the project. And I want that certain standards are held even if they seem stilly (docstring style, changelog entries, …). I also want to able to push minor doc or stylistic changes without waiting for reviews.

More importantly: I also don’t intend to scale back my involvement. I use attrs every day. But I feel the project deserves more.


So I wonder what to do since I’ve never done anything similar.

I can give push/merge rights to at least glyph and Tin right away but I figure it’s not enough.

Presciently, GitHub released a bunch guides on these topics. I’ll just throw out a few things that stand out to me, in no particular order:

Give your community a place to congregate

I have completely failed to create a community on #structlog. It’s mostly just people plopping in and me answering their questions. Would #attrs fare better? I’m not too enthusiastic about another channel of obligation… Slack/gitter are out.

move your project from your personal account to an Organization and add at least one backup admin. Organizations make it easier to work on projects with external collaborators.

There is sadly an organization https://github.com/attrs already. :'( But we should do it anyway? https://github.com/python-attrs looks ugly. :( But I guess moving into one is inevitable.

https://github.com/danger/danger

This could help with the problem that I'm pickier than most. Honestly it’s exhausting and embarrassing to point out the same minutiae the 100th time. PyLint could help too. But I’m balking at the work involved. :(


Well, opinions? Ideas? Volunteers? :)

Question

Most helpful comment

It occurred to me we might call the org 'sans-s' (since attrs/attr etc) but then you'd have to rename structlog to tructlog.

(j/k)

All 24 comments

I'm in the middle of furiously prototyping something for our game jam next week so I'll be brief.

I'd be honored to be a formal maintainer, even though I would still feel a little scary to commit directly without another maintainer giving their opinion.

Yes to other maintainers, appointed at Hynek's discretion. Yes to Hynek being attrs BDFL. Once there are more maintainers, I think it'd be very nice to figure out a system for maintainers to seek reviews from other maintainers somehow.

Yes to creating an organization. I would like to get cattrs into this organization when it's made :)

To be clear: I intend a 4 eyes principle for non-trivial code changes. Just not as strict as in PyCA/Twisted. I just don’t want to be always the other two eyes. :)

Happy to help. I've already got my hands full with plenty of open source so I don't know how much time I can allocate - but attrs is probably my most _general purpose_ contribution, so I'll more likely use it in more places than other things :)

As far as the org name - perhaps the Python Structured Data Authority? Structlog could come along ;).

It occurred to me we might call the org 'sans-s' (since attrs/attr etc) but then you'd have to rename structlog to tructlog.

(j/k)

github.com/pysda is available ;)

So two things: I’m not starting an arbitrary authority for my own projects! :D

If other projects would consider to join too, we we could form some kind of Follower-Of-The-Talk-Cabal or something. Otherwise it’s gonna be pyattrs I’m afraid. :'(


I don’t expect anyone to do more or me to do less. I just want to reflect and codify the current state of affairs. People should have the feeling to contribute to a community; not working for me.

Devil's advocate's 3 eurocents.

Aren't you over-thinking it? Kenneth's requests live on his account to this day and nobody seems to complain. pysda is dangerously close to a slur in Polish.

If you really feel this should go to some org, would PyCQA not fit the bill? Do we need another self-proclaimed authority?

If you really feel this should go to some org, would PyCQA not fit the bill?

PyCQA is for code-analysis tooling and so it doesn't seem even tangentially related; I'm not sure why it came to mind for you?

Do we need another self-proclaimed authority?

As @hynek already said, he's not going with an "authority" on this one, so, no need to worry. Avoiding the slur is a nice bonus, though.

PyCQA is for code-analysis tooling and so it doesn't seem even tangentially related; I'm not sure why it came to mind for you?

Even if today that authority groups exclusively static analysis tools, the name doesn't seem to mind broadening the scope. After all, there's no "analysis" in the name, there's "quality".

There really isn't any need to try and shoehorn projects into existing groups; there's no shortage of github org accounts. Except that it's annoying to come up with a name. But python-attrs would get the job done even if it's not the most elegant. There's some precedent.

Again: there will be no authority. For the reason alone that I don't want to dilute the...authority...of PyCA and PyPA. PyZDA would be hilarious tho.

python-attrs seems like a name that will get the job done.

One note from my experience taking over as acting maintainer of urllib3: leaving repositories on user accounts makes it very hard to grant full admin privileges to other maintainers. This can be an organisational downside: maintainers end up blocking on the OG maintainer to do things like configure CI services. That problem is avoided with an org.

FWIW, hyper's One Of The Team policy is working pretty well. In general, empowering people who seem interested in helping seems like a good way to keep people engaged. Of course, protect the master branch and automate a bunch of checking to prevent someone wrecking everything either on purpose or by accident, but otherwise I'd say be as open as possible.

As a first step, I’ve move attrs into a python-attrs team. So far I’ve only added glyph and Tin but I’d love to add more contributors. I just didn’t want to be too forward… So if you have contributed in the past and want to be part of the team: let me know somehow. :)

I’ll have to figure out writing some policies too I guess.

Most important question ever: how does one get a simple but nice logo for a FOSS project/team? :|

@hynek I have never known the answer to that question, hence the python-hyper logo. =P I wondered about Logojoy once though, but never followed through with trying it out.

This suggestion just cost me money but attrs has a logo now (I figure a substandard is better than spending hours there :)):

color_logo_transparent_background

(the gear wheels stand for object composition which is very dear to my heart)

Hah, 10/10 good idea. I hope it didn't cost too much.

Out of interest, do you recommend the approach?

It gave me a logo I don’t hate within 15 minutes for $65. That’s a good deal for an art class failure with some disposable income like me. Does that answer your question? :) (you can have a low-res logo for $20 too)

nit: I would put one of the cogs between the second t and s. In general, nice ROI though :)

Fortunately I have no control over that! :D

Oh and make space on your notebooks y'all, there will be stickers at PyCon. :)

I guess the transition is more or less complete. 🎉

Was this page helpful?
0 / 5 - 0 ratings

Related issues

Tinche picture Tinche  Â·  15Comments

madig picture madig  Â·  3Comments

kissgyorgy picture kissgyorgy  Â·  6Comments

RonnyPfannschmidt picture RonnyPfannschmidt  Â·  7Comments

peteroconnor-bc picture peteroconnor-bc  Â·  9Comments