Questions for Python Developer Survey

For this year’s Python Developer Survey, we have decided to include packaging specific questions to gauge use cases and help understand user persona. We would like to invite packaging maintainers and users to review the current list of questions and share their feedback. Please let us know if you would like us to include any new question or improve answer choices. Thanks for your help.

Please share your feedback by Friday, Sept. 24, 2021.

The questions have been edited to include all the feedback. The revised questions are listed below-

  1. Which of the following tools do you use to isolate Python environments between projects? (Rank)
    a. virtualenv
    b. venv
    c. virtualenvwrapper
    d. hatch
    e. poetry
    f. pipenv
    g. I do not use any tool to isolate Python environments

  2. Do you use a virtual environment (eg: virtualenv) in containers (eg: Docker)? (Single choice)
    a. Yes, I use virtual environment in containers
    b. No, I do not use virtual environment in containers
    c. No, I do not use containers

  3. Do you use the standard library (Python 3.3+) module venv? (Select all that apply)
    a. I use venv directly
    b. Via poetry
    c. Via pipenv
    d. Via virtualenv
    e. Via tox
    f. I don’t know
    g. No, I do not use venv
    h. Other-specify

  4. Which tools related to Python packaging do you use directly? (Select all that apply)
    a. pip
    b. conda
    c. pipenv
    d. poetry
    e. venv (standard library)
    f. virtualenv
    g. flit
    h. tox
    i. PDM
    j. twine
    k. Containers (eg: via Docker)
    l. Virtual Machines
    m. Workplace specific proprietary solution
    n. Other-specify

  5. Do you use a tool(s) to manage precise/exact versions (version pinning) of application dependencies? (Single choice)
    a. Yes
    b. No

  6. If yes, what format(s) are your application dependency information stored in? (Rank)
    a. requirements.txt
    b. pyproject.toml
    c. pipfile.lock
    d. poetry.lock
    e. conda environment.yml
    f. pip constraints.txt
    g. Other-specify

  7. If yes, which of the following tools do you use for application dependency management? (Rank)
    a. pipenv
    b. poetry
    c. pip-tools
    d. Other- specify

  8. Do you use any of the following automated services to update the versions of application dependencies? (Single choice)
    a. dependabot
    b. pyup
    c. No, application dependency is updated manually
    d. Other-specify

  9. Which of the following tools do you use for installing packages? (Rank)
    a. pip
    b. easy_install
    c. conda
    d. poetry
    e. pip-sync
    f. pipx
    g. Other- specify

  10. Where do you install packages from? (Rank)
    a. PyPI
    b. Local source
    c. Internal mirror of PyPI
    d. Private Python Package Index
    e. Anaconda
    f. default conda channel
    g. conda-forge conda channel
    h. Other conda channel
    i. GitHub
    j. Artifactory
    k. GitLab
    l. From Linux distribution
    m. Other-specify

  11. Do you develop applications? (Single choice)
    a. Yes
    b. No

  12. If yes, which tool(s) do you use to develop Python applications? (Rank)
    a. setuptools
    b. build
    c. wheel
    d. enscons
    e. pex
    f. flit
    g. poetry
    h. conda-build
    i. maturin
    j. pdm-pep517
    k. Other- specify

  13. Have you packaged and published a Python application that you developed to a package repository? (Single choice)
    a. Yes
    b. No

  14. If yes, where have you published your Python application packages? (Rank)
    a. PyPI
    b. Private Python Package Index
    c. Internal mirror of PyPI
    d. conda-forge
    e. Other-specify

  15. Do you develop and package Python libraries? (Single choice)
    a. Yes
    b. No

  16. If yes, which tool(s) do you use to create packages of your Python libraries? (Rank)
    a. setuptools
    b. build
    c. wheel
    d. enscons
    e. pex
    f. flit
    g. poetry
    h. conda-build
    i. maturin
    j. pdm-pep517
    k. Other- specify

  17. Have you packaged and published a Python library to a package repository? (Single choice)
    a. Yes
    b. No

  18. If yes, where have you published your packaged Python libraries? (Rank)
    a. PyPI
    b. Private Python Package Index
    c. Internal mirror of PyPI
    d. conda-forge
    e. Other-specify

7 Likes

Probably should include flit in #8 and #13.

5 Likes

#2 is missing pip constraints files (the -c option to pip install),
which are separate from requirements files (the -r option), but can
be used together. For example, many of the projects I work on list
dependency names in a requirements.txt file but then pin their
versions with a separate cross-project constraints.txt file to
ensure coinstallability of transitive dependency sets between
different projects within the same ecosystem.

#4 assumes the respondent either uses SaaS dependency management or
no automated dep management at all. It’s also possible that the
project has implemented its own dependency management automation
on which its maintainers rely (many of the projects in which I’m
involved fall into this category, and I doubt we’re the only ones
who have done it).

#12 misses that the virtualenv library can act as a wrapper around
the venv module these days (setting its “creator” to venv, e.g. with
the VIRTUALENV_CREATOR envvar). Also tox is a popular front-end to
creating and interacting with virtual environments via virtualenv
(so ultimately calling the venv module if so configured).

2 Likes

No comments (yet), but wanted to say thank you for doing this openly and collaboratively! Building surveys is hard, especially when it comes to predicting how answers will interact and whether the data will be useful at all in the end. Getting more eyes on it ahead of time is only a good thing :+1:

8 Likes

For 11 and 12, I wouldn’t know how to answer, as I don’t use docker nor venv.

In particular for 11, No can be interpreted as “no I don’t use docker”, or “no I don’t use venv when I’m in docker”.

And fro 12, I’m not sure I can not rank or leave question empty.

  1. Do you use virtualenv in Docker containers? (Single choice)
    a. Yes
    b. No
  2. How do you use the standard library (Python 3.3+) module venv? (Rank?)
    a. I use venv directly
    b. Via poetry
    c. Via pipenv

Also +1 for flit in 8 and 13.

I guess that’s because this survey seem to be mostly for application dev, and not library devs.

1 Like

Another useful option to include here might be conda’s environment.yml

Similarly, it might be worth including conda-specific options here. This is a bit harder to pin down, since conda has a notion of “channels”, which are separately-hosted sets of packages, and it wouldn’t make sense to list all of them. Some reasonable options to consider asking about might be:

  • “default” conda channel.
  • “conda-forge” conda channel.
  • Other conda channel.
3 Likes

In #6, does “Local source” refer to Linux distros and friends? If it does, could we make this a bit clearer? If it does not, could we add it?

I think we should also add a question about which Python distribution the users use.

  • From https://www.python.org (only Windows and MacOS)
  • From the 3rd party distributors (Linux distros, Anaconda, etc.)
  • Local build
1 Like

e. Anaconda
f. conda-forge

g. flit (unless this question was meant to be only for extension modules)

d. conda-forge

“Do you use virtual environment in Docker containers?”, otherwise this is a tools-specific question.

d. Via virtualenv

2 Likes

These questions will be added in another part of the survey!

2 Likes

For 13 perhaps add tox?

2 Likes

It could make sense to include questions about licensing. Some rough ideas:

If you publish packages:

  1. How do you license these? (Multiple choice / Rank)
    a. Open Source
    b. Closed Source
    c. I haven’t added a license (yet)

  2. Which open source licenses do you use most frequently? (Rank)
    a. MIT
    b. BSD
    c. Apache License 2
    d. GPL 2
    e. GPL 3
    f. LGPL
    g. Other - specify

For inclusiveness, I’d suggest Free/Libre and Open Source for (a). In addition, technically (b) is a superset of (c) and Proprietary might be a less confusing term for non-legal people (given the number of social media posts confusing source-available as open source I’ve seen).

This should be sorted alphabetically to avoid presumed bias.

flit will be included.

Thank you for the feedback. We will include it when finalizing the survey.

Thank you for these kind words. I look forward to more collaborative discussions.

Feedback noted. We will see how to better frame the answers.

You’re right. conda channels should be included.

All valid suggestions. This will be included when finalizing the questions.

1 Like

Noted. This is the second vote for tox.

A bunch of these questions could use a “Other-specify” option: #2, #4, #6, #12, #13. Maybe this thread is about gathering other common answers, but I’m sure people use other things as well…

What about other kinds of containers than Docker?

Note that e.g. RPMbuild (with pyproject macros) is a PEP 517 build frontend. It might be too niche to include as a separate answer, but technically, the difference between Linux distros and conda is quite blurry.

1 Like