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

add code of conduct and community guidelines #32

Merged
merged 19 commits into from
Feb 10, 2017
Merged

add code of conduct and community guidelines #32

merged 19 commits into from
Feb 10, 2017

Conversation

anarcat
Copy link
Contributor

@anarcat anarcat commented Feb 9, 2017

Okay, here it goes... The objective here is to set clear guidelines on how to participate and contribute to this project. This is to ensure that what happened to linkchecker (the project was abandoned) doesn't happen again. It also ensures that we have a great project that is fun to participate in, without any problematic behavior that could ruin the work of our volunteers. It also tries to set examples on how to contribute on various levels - bug triage, patches and so on. It formalizes the review process we have experimented with.

More importantly, at this stage, it sets guidelines on how to share responsibility on the project. Right now, I have made a few people "members" here in a ad-hoc decision, but I have tried to formalize this process here as well.

Following the process defined here, at least one other member would need to approve this pull request before it is merged, at which point it would become policy. :)

This partly resolves #1. You'll notice there's a bunch of stuff missing, but there's only so much time and I want to get the ball rolling for the ownership, which seems to still be a critical SPOF with me in the middle. :)

@anarcat anarcat requested review from mgedmin and a user February 9, 2017 23:33
@anarcat anarcat mentioned this pull request Feb 9, 2017
6 tasks
@anarcat
Copy link
Contributor Author

anarcat commented Feb 9, 2017

to see a rendered version, go at https://github.com/linkcheck/linkchecker/blob/a5dc2d861c73ade8412c8ad59033d60db73a99f0/doc/contributing.mdwn

maybe we'd need a table of contents?

what we really need is some online rendering of all this documentation, which should be merged with the website... so much to do!

@ghost
Copy link

ghost commented Feb 10, 2017

I think this is generally a good idea though it doesn't get round the dependence problem - need more active people! Also, I think fundamental decisions about 'the constitution' should be an exception to the rule about just needing one person to approve; it's important that everyone agrees.

Copy link
Contributor

@mgedmin mgedmin left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

👍 💯 except I think the two copies of the covenant in two files were an accident you'll want to fix before merging

[pull requests]: https://github.com/linkcheck/linkchecker/pulls
[Github project]: https://github.com/linkcheck/linkchecker

Some guidelines for patches:
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

This sentence repeats the last sentence of the previous paragraph. Seems redundant.

Copy link
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

fixed

* A patch should be a minimal and accurate answer to exactly one
identified and agreed problem.
* A patch must compile cleanly and pass project self-tests on at least
the principle target platform.
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

s/principle/principal/, I think

Copy link
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

actually, all supported platforms must pass (regardless of what those are) so i just changed that...


Maintainers should not merge their own patches unless there is no
response from other maintainers within a reasonable time frame (1-2
days).
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

I suggest rephrasing to "Maintainers should not merge their own patches if they haven't been approved by other maintainers, unless ...".

I believe usually (for values of "usually" that apply to a project set up a week ago ;) we do this:

  • maintainer A submits a pull request
  • maintainer B reviews
  • maintainer A hits the merge button on their own pull request

Also 1-2 days seems short -- I for one don't plan to be reviewing pull requests on weekends. "About a week" seems more reasonable, unless the patch is urgent.

Copy link
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

agreed, I tried to rephrase.

# Patches

Patches can be submitted through [pull requests][] on the
[Github project][]. Some guidelines for patches:
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

I think the correct capitalization is GitHub.

Copy link
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

fixed everywhere in that document...

should be refused for other reasons, use the `wontfix` label and
close the issue
- mark feature requests with the `enhancement` label, bugs with
`bug`, duplicates with `duplicate` and so on...
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

It may be worth mentioning that only project members are allowed to label or close issues.

Copy link
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

tried to clarify.

Copy link

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

A patch commit message must consist of a single short (less than 50 characters) line stating the a summary of the change, followed by a blank line and then a description of the problem being solved and its solution, or a reason for the change. Write more information, not less, in the commit log.

  1. 'the a' -> a
  2. The 'commit log' is /doc/changelog.txt, in linkchecker. Maybe worth mentioning explicitly as it's not immediately obvious there is one. There isn't one in linkchecker-gui, needs creating.

Copy link
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

fixed the typo. i think we should keep changelog.txt to broader changes than just every commit log entry - those are separate things... changelog.txt is part of the release process, IMHO, which we need to improve, in doc/development.mdwn...

There are three levels of membership in Github organizations, Owner,
Member, or regular user. Anyone is welcome to contribute to the
project within the guidelines outlined in this document, regardless of
their status, and that includes regular users.
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

It is unclear to me if "regular users" are everyone with a GitHub account, or only those that have been invited into the linkcheck organization.

Copy link
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

tried to clarify.

On Mac OS X systems, using MacPorts, Fink or homebrew for software
installation is recommended.

- Install Python >= 2.7.2 from http://www.python.org/
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Seems a rather low version. I think you need at least 2.7.6 for proper TLS support (e.g. SNI)?

Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Also, can we make all the download URLs https://, provided they work?

Copy link
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

i did not actually change this - just renamed the file...

or for Windows from http://www.sosdg.org/clamav-win32/

- *Optional, for displaying country codes:*
Pygeoip from http://code.google.com/p/pygeoip/
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

The url says "This project has been moved over to github and will be deleted soon: https://github.com/appliedsec/pygeoip"

But anyway https://pypi.python.org/pypi/pygeoip exists, so maybe we should just add it to our install_requires and/or requirements.txt and drop the mention here?

Copy link
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

it seems you are reviewing the whole development.txt file - which i just renamed, i didn't actually change it that much... maybe we can split off those suggestions in a different PR? :)

Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Hey, free review for text I wouldn't have othervise reviewed ;)


2. bump AppVersion in setup.py and commit changes

3. build wheel file (setup.py bdist_wheel) and upload to PyPI
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

sdist too!

Copy link
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

in other projects, i keep source files on github because sdist files are not reproducible from the git tree directly, so they are different from github. so i keep only binary files on PyPI... but i'm fine with changing that - anyways, we don't have access to the PyPI archive (yet?) so this is mostly theoritical ... (#4)

fixed, anyways.


6. write release notes on github

# Contributor Covenant Code of Conduct
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Do we want this repeated twice in two files?

Copy link
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

definitely not, fixed. :)

tough call, but i think it actually matters... In the code of conduct,
a "community member" is not necessarily an official status. by
conflating the "maintainer" and "member" status, we would have
diminished the role of non-official members... People are a member of
the community when they participate, regardless of their official
status, and deserve the same respect as anyone else.

also use "administrator" instead of "owner". i do not "own" this
project, i administer it. we do not have to comply with GitHub's
proprietary vocabulary
@ghost
Copy link

ghost commented Feb 10, 2017

A patch must compile cleanly and pass project self-tests on all target platforms.

Do we refuse pull requests from Unix users who haven't tested on Windows and vice versa? Or does this mean that our target platforms have to be limited to what Travis supports? I don't think a 'must' here is practical.

@anarcat
Copy link
Contributor Author

anarcat commented Feb 10, 2017

okay, pushed a bunch more changes. @seamang i added an explicit rule about changing the constitution, that it requires all "adminstrators" (which i use instead of "owners" now, see 74487ae for the rationale) to have consensus.

i have also tried to address @mgedmin's excellent review. sorry for the mess about the duplicate stuff. also note that i didn't really change the development.txt file, i just renamed it to .mdwn which is why it looks like a new file, but it's just copy-paste, really. although it's true the release process is my own stuff, which is why i agree to change it here, it was changed in a previous (unreviewed!) push...

i agree we need more active people, but i think this will come with time... hopefully this document will help rather than be a nuisance. ;)

@seamang please do review the PR as well. ;)

@anarcat
Copy link
Contributor Author

anarcat commented Feb 10, 2017

Do we refuse pull requests from Unix users who haven't tested on Windows and vice versa? Or does this mean that our target platforms have to be limited to what Travis supports? I don't think a 'must' here is practical.

Well, we just need to clarify somewhere what our target platforms are. I don't think the statement should be interpreted as "we refuse code that wasn't tested on all platforms", but more as "we refuse code that fails to pass tests on all platforms", which is quite different. that we don't have a Windows test platform doesn't force (IMHO) UNIX users to install Windows 95 to test their shit. ;)

@mgedmin
Copy link
Contributor

mgedmin commented Feb 10, 2017

Requiring every contributer to test on all supported platforms is not practical; that's why services like Travis CI (for Linux and Mac OS) and Appveyor exist.

We don't currently have Appveyor (or Mac OS targets for Travis CI) set up, but we should have, if we intend to support those platforms. I can help with appveyor.yml, but I've never touched a Mac, so I hope somebody else steps up!

Copy link
Contributor

@mgedmin mgedmin left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Eh, LGTM.


There are three levels of membership in the project, Administrator
(also known as "Owner" in GitHub), Maintainer (also known as "Member")
, or regular users (everyone with or without a GitHub account). Anyone
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

The newline in front of a comma seems weird to me.

I'm still tempted to nitpick about "membership in the project". I think there are two levels of membership, but an important point is that you don't have to be a member to contribute.

Copy link
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

fixed the comma.

i welcome modifications on the wording of course. ;)

@anarcat
Copy link
Contributor Author

anarcat commented Feb 10, 2017

Requiring every contributer to test on all supported platforms is not practical; that's why services like Travis CI (for Linux and Mac OS) and Appveyor exist.

that's right.

We don't currently have Appveyor (or Mac OS targets for Travis CI) set up, but we should have, if we intend to support those platforms. I can help with appveyor.yml, but I've never touched a Mac, so I hope somebody else steps up!

I thought travis had mac support? https://docs.travis-ci.com/user/multi-os/

the problem is really windows, and that's why we need Appveyor, AFAIK. i'm open to all of those. :)

@anarcat
Copy link
Contributor Author

anarcat commented Feb 10, 2017

@seamang i think we only need your final approval before we go forward here.

Copy link

@ghost ghost left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Good to go - we can tinker with this in the future if needed.

@anarcat anarcat merged commit bf66006 into master Feb 10, 2017
@anarcat
Copy link
Contributor Author

anarcat commented Feb 10, 2017

awesome, thanks everyone for your reviews and feedback!

@anarcat anarcat deleted the coc-refactor branch February 10, 2017 17:06
@anarcat
Copy link
Contributor Author

anarcat commented Feb 10, 2017

oh, and i forgot to ask for another person to be added to the CoC contact list - see #33 for followup.

@mgedmin
Copy link
Contributor

mgedmin commented Feb 13, 2017

I thought travis had mac support? https://docs.travis-ci.com/user/multi-os/

Yes, but we don't have it set up in our .travis.yml at the moment. If you want an example of how other projects use Travis CI to build Mac OS X wheels for various Python versions, you can take a look at https://github.com/zopefoundation/zope.interface/blob/master/.travis.yml#L19-L33

@anarcat
Copy link
Contributor Author

anarcat commented Feb 13, 2017

sounds like another PR waiting to be born. ;)

@mgedmin
Copy link
Contributor

mgedmin commented Feb 13, 2017

We could use a volunteer Mac maintainer.

I might be convinced to step up, if somebody wants to ship me a Macbook.

@mgedmin
Copy link
Contributor

mgedmin commented Feb 14, 2017

I might be convinced to step up, if somebody wants to ship me a Macbook.

This sounds as if I'm serious. To clarify: I'm not. ;)

@anarcat
Copy link
Contributor Author

anarcat commented Feb 14, 2017

maybe that could just be a differnt issue? :)

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

Successfully merging this pull request may close these issues.

contribution guidelines and FAQ
2 participants