Coder Social home page Coder Social logo

project-admin-logisitics's Introduction

PyLadies

This website is managed by the PyLadies Tech and Infra team. If you would like to join as an official member, read more here! You can also join us in Slack, #project-tech-infra channel.

This website welcomes pull requests from anyone in the community.

Overview

Netlify Status

This is the source code for the http://pyladies.com/ website. It uses mynt, a static site generator, and is powered by 🐍 Python 3.10 🐍!

Contents

Understanding the repo's directory layout

Before adding a new location or contributing to the pyladies website, it's helpful to understand a bit about the repo and its contents.

This is a general overview of the repo's root directory structure. requirements.txt specifies the dependencies. .github/workflows contains the configuration for CI testing and deployment. The repo's root directory also contains the www folder. Most of the time, contributors will edit or add files in the www folder.

requirements.txt   # file with dependencies used by pip
netlify.toml       # file setting up netlify build commands
www                # directory which contains the content of the website
β”œβ”€β”€ CodeOfConduct
β”œβ”€β”€ _assets        # javascript, CSS stuff, and images go here
β”œβ”€β”€ _posts         # contains blog posts written in markdown
β”œβ”€β”€ _templates     # contains the base templates (html and Jinja2) used by the site
β”œβ”€β”€ about
β”œβ”€β”€ archives
β”œβ”€β”€ blog
β”œβ”€β”€ locations      # Use the config.yml file to add new locations or update location info
β”œβ”€β”€ resources
└── sponsor

Setting Up a Development System

If you wish to add a location, new chapter, or make code changes, please review the next few sections. There are a few tasks to set up a development system:

Set up Python and a project directory

Linux, macOS

  1. Check that Python 3.10 is installed with python --version. If it is not installed, it can be downloaded at https://python.org:

    $ python --version
    Python 3.10
  2. (Optional) Learn the directory which this Python version is installed which python:

    $ which python
    /usr/local/bin/python

    You may see a different directory name which is fine.

  3. Create a directory for development mkdir pyladies-dev:

    $ mkdir pyladies-dev
  4. Change into the directory cd pyladies-dev:

    $ cd pyladies-dev
    
    # To check your current directory (`<YOUR_PATH>` will be different on
    # your system.)
    $ pwd
    YOUR_PATH/pyladies-dev

Great!

Windows

The process will be similar though the commands will vary slightly. Reference: Table of basic Powershell commands.

Create and activate a virtual environment

  1. From the pyladies-dev directory, install the virtualenv package:

    $ pip install virtualenv
  2. Create a virtual environment named pyladyenv:

    $ virtualenv pyladyenv
  3. Activate the virtual environment:

    $ source pyladyenv/bin/activate
    
    (pyladyenv)
    $

    After activation, you should see (pyladyenv) above your command prompt.

Troubleshooting note (AttributeError: 'module' object has no attribute 'X509_up_ref'): The error comes from PyOpenSSL. Either your OpenSSL is too old or too new. Try upgrading or downgrading OpenSSL and PyOpenSSL.

Fork and clone your pyladies repo

  1. On GitHub, fork http://github.com/pyladies/pyladies to your own GitHub account <YOUR_GITHUB_USER_NAME> by pressing the green Fork button on the upper right of the screen.
  2. From the pyladies-dev directory, clone your fork to your machine using git clone:
(pyladyenv)
$ git clone https://github.com/<YOUR_GITHUB_USER_NAME>/pyladies.git
Cloning into 'pyladies'...
remote: Enumerating objects: 47, done.
remote: Counting objects: 100% (47/47), done.
remote: Compressing objects: 100% (29/29), done.
remote: Total 5877 (delta 22), reused 38 (delta 16), pack-reused 5830
Receiving objects: 100% (5877/5877), 39.73 MiB | 3.62 MiB/s, done.
Resolving deltas: 100% (2922/2922), done.

You have successfully cloned your pyladies fork. πŸ˜„

Run the site locally

Troubleshooting note for some operating systems: Make sure you have headers for Python and libevent installed (e.g., on Ubuntu, python-dev and libevent-dev). Packages in requirements.txt are required for the website to build successfully with mynt.

  1. Change to the root of the pyladies repo (your virual environment should still be activated):

    (pyladyenv)
    $ cd pyladies
  2. Install dependencies using pip:

    (pyladyenv)
    $ pip install -r requirements.txt
    
    # You will see files being installed and this message at completion
    # It's okay if the versions differ slightly
    Successfully built hoep MarkupSafe mynt pathtools pycparser PyYAML watchdog
    Installing collected packages: argh, asn1crypto, six, pycparser, cffi, bcrypt, idna, enum34, ipaddress, cryptography, docutils, pyasn1, PyNaCl, paramiko, Fabric, hoep, MarkupSafe, Jinja2, Pygments, PyYAML, pathtools, watchdog, mynt
    Successfully installed Fabric-1.13.1 Jinja2-2.9.6 MarkupSafe-1.0 PyNaCl-1.1.2 PyYAML-3.12 Pygments-2.2.0 argh-0.26.2 asn1crypto-0.22.0 bcrypt-3.1.3 cffi-1.10.0 cryptography-2.0.3 docutils-0.14 enum34-1.1.6 hoep-1.0.2 idna-2.6 ipaddress-1.0.18 mynt-0.3.1 paramiko-2.2.1 pathtools-0.1.2 pyasn1-0.3.2 pycparser-2.18 six-1.10.0 watchdog-0.8.3
  3. Navigate into the pyladies/www directory.

    (pyladyenv)
    $ cd www
  4. Use mynt to generate and serve the website locally with mynt gen -f _site && mynt serve _site:

    (pyladyenv)
    $ mynt gen -f _site && mynt serve _site
    >> Parsing
    >> Rendering
    >> Generating
    Completed in 1.114s
    >> Serving at 127.0.0.1:8080
    Press ctrl+c to stop.
  5. Copy the IP address provided once mynt has completed building the site. It will say something like >> Serving at 127.0.0.1:8080. Then paste the IP address into the URL bar of a browser window and load it to view the site.

Congrats on running the site on your machine πŸŽ‰ 🐍

  1. (Optional: After making changes to the source code) To view any changes you make to the site code, type ctrl+c in the terminal to stop the local webserver. Then run the command from Step 5 again and refresh the browser window.

Note: It is important that when you create your virtualenv, do not create it in the same folder as the code you downloaded. The reason is that mynt will search the current directory for files to build and it looks for all folders that don't start with an underscore (which means it will find your virtualenv folder and error out).

To add a new PyLadies location to the PyLadies Website

Follow the instructions for setting up a development environment.

To add or edit a location, you will make changes to the config.yaml file found in the pyladies\www\locations directory.

YAML files are often used for configuration information. They can be fussy about spacing, indentations, and punctuation. It can be helpful when troubleshooting to use an online YAML validator to see if the file is correctly formatted. An example is YAML Lint though there are many others and some editors provide similar functionality.

An example of a location:

- email: [email protected]
  external_website: true
  image: pyladies_berlin.png
  location:
    latitude: 52.52
    longitude: 13.38
  meetup: PyLadies-Berlin
  meetup_id: 4663512976
  meetup_image: https://secure.meetupstatic.com/photos/event/6/b/8/6/highres_454587526.jpeg
  name: Berlin, Germany
  organizer: Anett G.
  pro_network: Python Software Foundation Meetup Pro Network
  twitter: PyLadiesBer
  website: http://berlin.pyladies.com

Please note: if you wish to use the website field, you need to create an official website through the PyLadies Chapter Website repository. Otherwise you can skip that field.

For Unicode accents in some languages To use a Unicode accent in a YAML file, it's important to use the HTML entity character for the accent. The HTML entity can found be found in a table of characters.

For example, MΓ©xico will have the HTML entity M&eacute;xico.

To write a blog post

See CONTRIBUTING.md for instructions and guidelines.

To contribute to the repository

See CONTRIBUTING.md for instructions and guidelines.

To write a resource (more "sticky" than a blog post)

Collection of outside resources

If you want to add a bullet item to an existing subject matter, find the relevant post in www/_posts (file titled by its general category) and add to the .md file. Please also update the date in the .md file. For instance, if you want to add another suggestion to text editors, the original file is: www/_posts/2013-04-19-tools-resources.md, and once you're done editing, it would be renamed to www/_post/todays-date-tools-resources.md.

If there is a collection of resources that do not fit into our loosely-named categories, like "tools" or "tutorials", etc, then start your own in www/_posts/ and name the Markdown file with today's date, general category, plus the word "resources", like: 2013-04-21-developer-tips-resources.md. You will also need to have the following at the top:

---
layout: post.html
title: "Your title here"
tags: [list, of relevant, tags]
category: resources
---

Your own resource

If you want to write your own resources, like Barbara's beginner workshop notes or Juliana's Mac setup, in addition to CONTRIBUTING.md, you will need to add more items in the header portion, like so:

---
layout: post.html
title: "Your title here"
tags: [list, of relevant, tags]
author: Name, or blank/none
author_link: Twitter/Blog/etc or blank/none
category: resources, pyladies
---

Notice that pyladies and resources are required in for category.

Once done, save it in www/_posts/ with the date and title in the name of the file, like so: 2013-04-21-lynns-awesome-resource.md.

To find this resource online, you would navigate to http://pyladies.com/blog/[your_post_name]

For Organizers

Registering your PyLadies Chapter and onbtaining a website

Once you have obtained an official PyLadies Google account you should:

  1. Register your PyLadies Chapter to the Chapter Directory as active, we use this to populate the chapter options for members when registering as well as populate the PyLadies chapter map.
  2. Get started on building your PyLadies website, read the directions on the PyLadies Chapter Website repo.

Questions? Make sure to join us in Slack at slackin.pyladies.com and ask to join the #organizers channel!

LICENSE

License: MIT License

project-admin-logisitics's People

Contributors

alphacentauri82 avatar georgically avatar lorenanicole avatar mariatta avatar terezaif avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

project-admin-logisitics's Issues

Offboarding: Newark Chapter

On Nov 18, 2019, we received the request to deactivate Newark chapter from the current chapter leader.
Reason:

There's just been hardly any activity the past few months. I reached out to the current members to see if anyone wanted to step up as the new organizer (maybe give it new direction) and there was no response.

Offboarding checklist:

  • find out the reason
  • offer help/support from global PyLadies
  • ask them to delete related meetup accounts, social media accounts
  • let PSF accounting know, so they don't continue being in the PSF Meetup Pro network
  • delete the user in google admin
  • update chapter directory

On Nov 20, 2019, Mariatta asked the chapter leader to delete their related accounts like meetup, facebook, twitter.

Potentially inactive chapter: Monrovia PyLadies

On November 1, 2019, we received a new chapter request for Monrovia, Liberia. However, a monrovia chapter already exists and has just been created in July 2019.

Since the chapter is quite new, it is possible that the organizer need more time to get started.

On November 2, 2019, Mariatta wrote to Monrovia chapter as well as to the original chapter leader, asking for status. Have not heard back.

Task: Write policy surrounding inactive chapter

TL;DR

The policy should answer the following questions:

  1. Why is this policy necessary?
  2. What are criteria when we would consider a chapter inactive?
  3. How do we want to enforce it?
  4. For accountability, how do we (administrators) document the deactivation?

Details

1. Why is this policy necessary?

  • We need to have accurate information of our chapter directory, where are pyladies, where are our chapters.
  • There are indeed 100s of chapters who has not logged in to their chapter email address
  • Each PyLadies chapter uses resources in many forms: they might have Pro meetup account from The PSF, they may have website hosted, they might require funding from The PSF.
  • PyLadies admins received numerous inquiries from community members regarding local chapters that turned out to be inactive, taking up additional resource/volunteer time from Global leadership and administrator team to address these inquiries

2. What are criteria when we would consider a chapter inactive?

Some determining factors:

  • has not logged in to their chapter email after 2 years
  • no meetup after 2 years
  • organizers non responsive after 2 months.

3. How do we want to enforce it?

  • we write to chapters once a year to request status update

  • from GSuite admin we can review email login activity once a year.

  • a community member can notify us if they noticed a chapter has become inactive. (e.g. they
    want to find a meetup, but was unable to reach anyone).

    In any of the above situations, we will then contact organizers of the inactive chapter, through
    chapter email, and to their personal email address we have on file.

4. For accountability, how do we (administrators) document the deactivation?

We can record all activities, including attempt to contact organizer (and the result) as an .md file
in this repo.

Things to document:

  1. how do we find out about inactive chapter? was it through GSuite, or through an email from community member?

  2. what were our attempts to contact the organizer, before deactivating?
    Which email address we tried? How many times we tried to reach them?

  3. any response from organizers?

  4. date we deactivate the chapter.

Proposed Email template

To: {chapter}@pyladies.com, {personal organizer email address}, ...
cc: [email protected]

Subject: Is {chapter} PyLadies inactive?

Dear {Organizer name} and {chapter} PyLadies ,

This is {admin} from PyLadies. You are listed as the original organizers of {chapter} PyLadies.
Thanks your work with PyLadies!

We noticed there has been no login to {chapter} pyladies email account since {last login date}.

Per our current policy, such chapter is considered inactive.

Please reply to the following.

  1. What's the status of {chapter} PyLadies? Is the chapter still active?

  2. Would you like to continue running the chapter? Or would you like to hand it over to new organizers?

  3. Is there anything we can help from global PyLadies leadership team to better support {chapter} community?

We understand personal situations can change. If you're no longer able to lead the {chapter} PyLadies, that is totally fine. We thank you for your work so far.

Looking forward to hearing back from you.

If we don't hear back after 2 months, we will consider the chapter inactive, and will deactivate the account or hand it over to new organizers. However, I would prefer to hear back from you first. Please reply as soon as you have a chance, and let us know how we can further help.

Thank you.

{admin} on behalf of PyLadies

Task: Write policy/process for "unofficial" PyLadies and make them official

TL;DR

The policy should answer the following questions:

  1. Why is this policy necessary?
  2. What are "unofficial" PyLadies
  3. How do we make them official?
  4. For accountability, how do we (administrators) document this process?

Details

1. Why is this policy necessary?

We noticed there are a number of PyLadies communities without their own pyladies.com email address, or not listed in "Initial PyLadies interest form"

PyLadies is trademarked and we need to protect our brand.

A PyLadies chapter uses some kind of resource in various forms: for example subscription to Meetup Pro account, they may qualify for grants from The PSF, etc. We may not be able to provide support and resource if a chapter is not official PyLadies chapter.

If they do not have @pyladies.com email address, and we don't have the organizers contact info in "initial PyLadies interest form", we have no way to get in touch with them.

2. What are "unofficial" PyLadies?

If they call themselves PyLadies, but they don't have a @pyladies.com email address.
Our expectation is all social media and meetup accounts are associated with @pyladies.com email address instead of a personal email address.

3. How do we make them official?

We'll happily create their own @pyladies.com email address, however we would ask for the following:

  • their current organizers name and email addresses
  • after they received their own @pyladies.com email address, they need to start using it, (e.g. change their meetup/twitter/etc from personal email address to @pyladies.com email address)

They should also adhere to other general guidelines for a PyLadies community (e.g. agree to our code of conduct, etc)

We may want to set a deadline, like 3 months for them to complete the transition. (to change email address etc).

Question: what if they refuse/non-responsive? Do we take actions?

4. For accountability, how do we (administrators) document this process?

Tbd

Automation Tools for PyLadies Organizers

Automation Tools for PyLadies Organizers

Suggestions

Chatops bot in Slack to:

  • Look up PyLadies chapters
  • Add events to PyLadies calendar
  • Reset PyLadies chapter email passwor

Potentially inactive chapter: Lisboa

On November 26, 2019, we received email asking for status about Lisboa PyLadies. A community member is interested to help out and co-organize.

Through GSuite Admin, the Lisboa account was last logged in 2 years ago.

On December 5, 2019, Mariatta wrote to Lisboa chapter as well as to the original chapter leader, asking for status.

Todo: write checklist for offboarding/deactivating a chapter

It would be great to write down the process and checklist for deactivating a PyLadies chapter.

From PyLadies admin side, these are the things we should do (in order):

  • find out the reason
  • offer help/support from global PyLadies
  • ask them to delete related meetup accounts, social media accounts
  • let PSF accounting know, so they don't continue being in the PSF Meetup Pro network
  • delete the user in google admin
  • update chapter directory

We probably need to create a form that can be filled in by chapter leaders who want to deactivate their chapter.

This form should be linked in kit.pyladies.com.

Should this be a hard delete (actually deleting accounts), or soft-delete (just add note somewhere that this chapter inactive and there is no organizer?)

Open for ideas and pull requests.

Task: Write policy for starting a new PyLadies chapter

TL;DR:

The policy should answer the following questions

  1. Why is the policy necessary
  2. What is the purpose of a PyLadies chapter? What does it mean to start a PyLadies chapter?
  3. What are minimum responsibilities and expectation when someone requested a PyLadies chapter?
  4. What kind of support can new chapter leaders expect from Global PyLadies leadership team?
  5. What questions do we ask in our form? (@terezaif is working on the form)
  6. How do we review new chapter requests?
  7. For accountability, how do we document new chapter creations?

Timeline: I'd ilke to have this new process in place by end of January 2020.

Details

1. Why is this policy necessary?

  • We had many inactive chapters, that never took off since they were created
  • We find chapters with more than one organizers to be more successful, and therefore it should be part of a minimum requirement.
  • We don't have clear definition of what or why one would want to start a chapter. Generally, there is expectation for ongoing and regular community event, instead of a one time workshop.

2. What does it mean to start a PyLadies chapter?

Define the purpose of local PyLadies:

  • help build and grow local Python community, through meetups, or sharing info through mailing lists, twitter, etc?

What are the roles of a PyLadies chapter leader?

  • share news from global PyLadies leadership to their members
  • organize at least one meetup per year?
  • not necessarily be the one creating content/giving talk/workshop.
  • provide report once a year to global PyLadies leadership

3. What are minimum responsibilities and expectation when someone requested a PyLadies chapter?

  • at least 2 co-organizers
  • preferably run by women ?
  • must be local (city-based). e..g Vancouver instead of BC or Canada
  • namespace must be descriptive (kuala-lumpur instead of kl)?

4. What kind of support can new chapter leaders expect from Global PyLadies leadership team?

  • as a chapter they can use PyLadies logo and name
  • they will have @pyladies.com email address
  • they can have pyladies subdomain
  • access to organizers channel in slack
  • access to organizers resources

Other privilege:

  • a chapter gets one vote in PyLadies board elections

5. What questions do we ask in our form?

  • name and email address of at least 2 organizers
  • desired namespace
  • intent/ability to keep the community active. e.g. if they have thought of plan idea for a meetup within the next 1 year?
  • their slack.pyladies.com (confirm that the username exists. if not, they should first create an account in slack) so we can automate adding them to organizers channel.

Note: @terezaif is working on the form questions

6. How do we review new chapter requests?

once a month?

7. For accountability, how do we document new chapter creations?

Things to document:

  1. who requested the new chapter
  2. who reviewed/approved the new chapter request
  3. did we have additional questions to organizers?
  4. date we activate the chapter

Potentially inactive chapter: Lima, Peru

On Nov 19, 2019 morning, we received an email to [email protected]. A community member in Lima was wondering about the status of Lima, Peru PyLadies. There doesn't seem to be any activities since 2016, and the meetup page has been deactivated. She's interested to reboot the chapter and continue organizing events, however she was not able to get in touch with existing chapter organizers.

On Nov 19, 2019 evening, Mariatta wrote to lima chapter, and to the two co-organizers listed in the initial PyLadies chapter request form, asked about the status, if they're open to continue organizing with new co-organizers, or if they'd like to step down and hand over the chapter. We also let them know that if we don't hear back after 2 months, we will consider them inactive and will go ahead with re-assigning the chapter to the new organizer(s).

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    πŸ–– Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. πŸ“ŠπŸ“ˆπŸŽ‰

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❀️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.