pypi / warehouse

The Python Package Index
https://pypi.org
Apache License 2.0
3.6k stars 963 forks source link

Create a credits page #890

Open nlhkabu opened 8 years ago

nlhkabu commented 8 years ago

It would be great to create a page where we can list our major contributors, with a small profile for each person. This should be linked to from the footer.

dstufft commented 8 years ago

One concern is that it has a pretty high chance of getting stale data for the small profiles depending on what exactly is in the profiles. I'm +1 on giving credit of some kind though. Another option would be http://humanstxt.org/

Perhaps give credit to the libraries we're using too?

dstufft commented 8 years ago

Going to drop this from Become PyPI, we don't have it on PyPI already and it seems like an enhancement that can happen any time.

nlhkabu commented 8 years ago

Sounds reasonable to me :P

nlhkabu commented 8 years ago

It would be great to also credit OSS dependencies on this page. See https://github.com/pypa/warehouse/issues/1099 for further info.

Thanks to @stevepiercy for this suggestion.

mbacchi commented 6 years ago

I'm working on the solution to this issue, and wanted to describe what I'm planning for discussion and to ask a couple questions. (FYI @di)

Contributor credits

This doesn't fully address the initial request to have a 'developer profile' on the warehouse page. But I thought the easiest way to do this was to simply query Github and list the names of the people with links to their Github profile.

  1. I initially tried to do this with a live query to Github at page load time, but it took over 20 seconds thus making the page load way too long. So I mentioned my plan to use a celery task on #pypa-dev and dstufft agreed it would be the right way to go.

  2. The major parts of this solution will be: a. new table in the database (warehouse_contributors) (work complete)

    b. celery task to query the Github api (this will require a Github API access token owned by the PyPA and set via an environment variable) (work mostly complete, still need to make it to run)

    c. credits.html template which will display the people who have contributed (planning to sort alphabetically by name, but could sort by commit count, open for discussion) (work mostly complete)

    d. Updated views.py. (work partially complete)

OSS libraries/dependencies used

  1. I think this could be addressed by listing the requirements.txt dependencies and linking to their PyPi project pages. We could start with a simple list collected from requirements.txt, but then how would they be updated when requirements are added or removed? Should we do a database table with this list and a celery task to update these on a regular basis too? I don't think this will enable displaying project icons such as Pyramid or SQLAlchemy, but that could be a version 2.0 issue if enough people think its important.

My biggest question so far is about where to put this code. I'm currently putting the celery task, view and model in warehouse/utils but only because it didn't logically fit somewhere else in my mind. That was why I got a circular import problem which I asked about on #pypa-dev, I had put the task in warehouse/utils/init.py (repeating a pattern I saw in warehouse/packaging) so I now have placed the task in warehouse/utils/tasks.py. Below is my layout:

Updates to existing files to support this work: warehouse/config.py warehouse/routes.py warehouse/templates/base.html

New files: warehouse/migrations/versions/497a94c766fd_add_contributor_table_for_issue_890.py - DB migration warehouse/templates/pages/credits.html - new template warehouse/utils/contributors.py - DB model warehouse/utils/tasks.py - Celery task warehouse/utils/views.py - new credits view

Is this agreeable or should I create a new directory, or put these in another location entirely?

Thanks in advance. -Matt

brainwane commented 6 years ago

@mbacchi I'm sorry for the delay in response on this! I'm going to give my opinions.

Contributor credits

As I see it, there are a few reasons for Credits pages/files/announcements. One is to thank and praise people (so it's important to be maximally inclusive, and to regularly refresh the data), and another is to identify key people who are currently responsible for the site and codebase (so it's important to have a curated list and give contact info and areas of focus for each person).

In the past Warehouse has not been able to count on regular maintenance to garden stale data, and even though I anticipate it'll have more frequent maintenance in the future than it's had during its slowest periods in the past, I do want to respect the possibility that there'll be lulls.

So I think we should have something in the FAQ, within the "who maintains PyPI?" answer, mentioning the names of the people who are or have been key maintainers. And I think one of those people should set a quarterly calendar reminder to send out an email to pypa-dev along the lines of this Dreamwidth post or the end of this Zulip announcement ("What follows is a summary of the code contributors to this release, sorted by number of commits.... $ git log --pretty="%an" 1.6.0..upstream/master | sort | uniq -c | sort -nr").

simply query Github and list the names of the people with links to their Github profile.

If it's possible to also include the GitHub usernames of people who submitted or commented on issues and PRs, that would be great. Testing and reviewing are contributions, too.

OSS libraries/dependencies used

I think this could be addressed by listing the requirements.txt dependencies and linking to their PyPi project pages. We could start with a simple list collected from requirements.txt...

For a 1.0 solution, I think we should do that, again, as an FAQ entry. And then we should do a 2.0 that has a celery task to get updated every time there's a merge to master.

brainwane commented 6 years ago

@mbacchi how's this going? Are you working on a branch you could link to?

brainwane commented 6 years ago

I spoke with mbacchi in IRC today and learned that he'll be returning to this issue soon:

sumanah: I spoke with EWDurbin a couple weeks ago about a problem with the celery worker running scheduled tasks, and he gave me a couple pointers on where to try to track the problem down. It might just be the dev environment but not sure. sumanah: I'll clean up the code and do some beautification before I commit a branch, but I probably should do a WIP branch sooner rather than later.

brainwane commented 6 years ago

In today's core Warehouse developers' meeting we decided to pare down our near-future milestones on our development roadmap so they really only contain the essential bugfixes and features we need to launch, replace legacy PyPI, and shut down the old site.

So I'm moving this issue into a milestone further in the future; but @mbacchi please feel free to keep working on this! I just moved it into the post-legacy shutdown milestone to indicate that the rollout won't block on waiting for the credits page.

brainwane commented 6 years ago

@mbacchi how is this going? Can we see the WIP branch?