diff options
| author | Kubernetes Prow Robot <k8s-ci-robot@users.noreply.github.com> | 2020-03-30 20:06:40 -0700 |
|---|---|---|
| committer | GitHub <noreply@github.com> | 2020-03-30 20:06:40 -0700 |
| commit | b7a5e555c1ab1b93697fde364cfcedeae083ac4f (patch) | |
| tree | acf5695c8457ca337ad0b4b509414e016a494976 | |
| parent | 34cb4aef9ad3a53ea2ef197e2c9e8e1e7e386b99 (diff) | |
| parent | b13b3b4bbddaa6febf7a5b1c459c428adf2e0fd5 (diff) | |
Merge pull request #4660 from mrbobbytables/survey
2019 Survey Analysis Results and Scripts
13 files changed, 8908 insertions, 0 deletions
diff --git a/sig-contributor-experience/surveys/contribex-survey-2018.csv b/sig-contributor-experience/surveys/2018/contribex-survey-2018.csv index a5272879..a5272879 100644 --- a/sig-contributor-experience/surveys/contribex-survey-2018.csv +++ b/sig-contributor-experience/surveys/2018/contribex-survey-2018.csv diff --git a/sig-contributor-experience/surveys/contribex-survey-2018.md b/sig-contributor-experience/surveys/2018/contribex-survey-2018.md index 21f10c37..21f10c37 100644 --- a/sig-contributor-experience/surveys/contribex-survey-2018.md +++ b/sig-contributor-experience/surveys/2018/contribex-survey-2018.md diff --git a/sig-contributor-experience/surveys/2019/README.md b/sig-contributor-experience/surveys/2019/README.md new file mode 100644 index 00000000..226aafa2 --- /dev/null +++ b/sig-contributor-experience/surveys/2019/README.md @@ -0,0 +1,2456 @@ +```python +%load_ext autoreload +%autoreload 2 +``` + + +```python +import pandas as pd +import numpy as np +import plotnine as p9 +import sys + +sys.path.append("../") +from k8s_survey_analysis import prepare_2019 + +pd.options.display.max_columns = 999 +from textwrap import wrap +from k8s_survey_analysis.plot_utils import ( + make_bar_chart, + make_likert_chart, + make_single_bar_chart, + make_single_likert_chart, +) + +# Silence warnings from PlotNine, mostly about overwriting x_scales +import warnings +from plotnine.exceptions import PlotnineWarning + +warnings.filterwarnings("ignore", category=PlotnineWarning) +``` + +## Prepare data so the format is as compatible with the 2018 data as possible + + +```python +survey_data = prepare_2019.get_df( + "2019 Kubernetes Contributor Experience Survey PUBLIC.csv" +) +``` + +## Examine response rates per day + + +```python +( + p9.ggplot(survey_data, p9.aes(x="date_taken")) + + p9.geom_bar() + + p9.theme(axis_text_x=p9.element_text(angle=45, ha="right")) + + p9.labs(x="Survey Date", y="Number of Responses", title="Responses Per Day") +) +``` + + + + +The high spike seen on 1/13/20 aligns with the time when the survey was publicized on Twitter. To consider the potential effects of this, we examine how the response rate varied by various demographic information. + +## Examine response rates by contribution length, level and interest in next level + + +```python +response_rates = ( + survey_data.groupby(["date_taken", "Contributing_Length", "Level_of_Contributor"]) + .count() + .reindex( + pd.MultiIndex.from_product( + [ + survey_data[survey_data[y].notnull()][y].unique().tolist() + for y in ["date_taken", "Contributing_Length", "Level_of_Contributor"] + ], + names=["date_taken", "Contributing_Length", "Level_of_Contributor"], + ), + fill_value=0, + ) + .reset_index() +) +``` + + +```python +response_rates = response_rates.assign( + grp=response_rates.Contributing_Length.str.cat(response_rates.Level_of_Contributor) +) +``` + + +```python +( + p9.ggplot(response_rates, + p9.aes(x='factor(date_taken)', + y='Respondent_ID', + group='grp', + linetype='Contributing_Length', + color='Level_of_Contributor')) + + p9.geom_line() + + p9.labs(x='Survey Data', + linetype = "Length of Contribution", + color='Contributor Level', + y='Number of Responses') + + p9.theme(axis_text_x = p9.element_text(angle=45, ha='right')) +) + +``` + + + + + +The survey was advertised on Twitter, and two groups had the largest number of disproportionate responses. Those responses came from either contributors working on their membership, or users that have been contributing less than a year. The largest group is users that fall into both categories. + + +```python +( + p9.ggplot(survey_data, p9.aes(x="date_taken", fill="factor(Contributing_Length)")) + + p9.geom_bar() + + p9.theme(axis_text_x=p9.element_text(angle=45, ha="right")) + + p9.labs(x="Survey Date", y="Number of Responses", title="Responses Per Day", fill='Contributing Length' ) +) +``` + + + + + + +```python +( + p9.ggplot( + survey_data[survey_data["Level_of_Contributor"].notnull()], + p9.aes(x="date_taken", fill="factor(Level_of_Contributor)"), + ) + + p9.geom_bar() + + p9.theme(axis_text_x=p9.element_text(angle=45, ha="right")) + + p9.labs(x="Survey Date", y="Number of Responses", title="Responses Per Day", fill='Level of Contributor') +) +``` + + + + + +```python +( + p9.ggplot( + survey_data[survey_data["Interested_in_next_level"].notnull()], + p9.aes(x="date_taken", fill="factor(Interested_in_next_level)"), + ) + + p9.geom_bar() + + p9.theme(axis_text_x=p9.element_text(angle=45, ha="right")) + + p9.labs(x="Survey Date", y="Number of Responses", title="Responses Per Day", fill="Interest in Next Level") +) +``` + + + + + + +## Univariate histograms + +In the following sections, we look at the rest of the demographic variables individually. This allows us to see who responded to the survey. + + +```python +( + p9.ggplot(survey_data, p9.aes(x="Contributing_Length")) + + p9.geom_bar() + + p9.theme(axis_text_x=p9.element_text(angle=45)) + + p9.scale_x_discrete( + limits=[ + "less than one year", + "one to two years", + "two to three years", + "3+ years", + ] + ) + + p9.ggtitle("Number of Contributors by Length of Contribution") + + p9.xlab("Length of Contribution") + + p9.ylab("Number of Contributors") +) +``` + + + + + +```python +( + p9.ggplot( + survey_data[survey_data["Level_of_Contributor"].notnull()], + p9.aes(x="Level_of_Contributor"), + ) + + p9.geom_bar() + + p9.theme(axis_text_x=p9.element_text(angle=45, ha="right")) + + p9.labs( + title="Number of Contributors by Contributor Level", + x="Contributor Level", + y="Number of Contributors", + ) + + p9.scale_x_discrete(labels=lambda x: ["\n".join(wrap(label, 20)) for label in x]) +) +``` + + + + + + +```python +( + p9.ggplot( + survey_data[survey_data["World_Region"].notnull()], p9.aes(x="World_Region") + ) + + p9.geom_bar() + + p9.labs( + title="Number of Contributors by World Region", + x="World Region", + y="Number of Contributors", + ) +) +``` + + + + + + + + +```python +( + p9.ggplot( + survey_data[survey_data["Interested_in_next_level"].notnull()], + p9.aes(x="Interested_in_next_level"), + ) + + p9.geom_bar() + + p9.theme(axis_text_x=p9.element_text(angle=45, ha="right")) + + p9.labs( + title="Number of Contributors by Interest in Next Level", + x="Interest in Next Level", + y="Number of Contributors", + ) + + p9.scale_x_discrete(labels=lambda x: ["\n".join(wrap(label, 20)) for label in x]) +) +``` + + + + + + + + +```python +( + p9.ggplot(survey_data, p9.aes(x="Contribute_to_other_OSS")) + + p9.geom_bar() + + p9.theme(axis_text_x=p9.element_text(angle=45, ha="right")) + + p9.scale_x_discrete( + limits=["this is my first open source project!", "1 other", "2 or more"] + ) + + p9.ggtitle("Participation in Other Open Source Projects") + + p9.xlab("Number of other OSS Projects") + + p9.ylab("Number of Contributors") +) +``` + + + + + + + + +```python +employer_support = ( + p9.ggplot(survey_data, p9.aes(x="Upstream_supported_at_employer")) + + p9.geom_bar() + + p9.theme(axis_text_x=p9.element_text(angle=45, ha="right")) + + p9.labs(title="Support by Employer", x="Support Level", y="Count") +) +employer_support +``` + + + + + + + + +## 2-Way Cross Tabulations + +Before we look at the relation between demographic data and questions of interest, we look at two-way cross tabulations in demographic data. + + +```python +pd.crosstab(survey_data.World_Region, survey_data.Level_of_Contributor) +``` + + + + +<div> +<table border="1" class="dataframe"> + <thead> + <tr style="text-align: right;"> + <th>Level_of_Contributor</th> + <th>approver</th> + <th>member</th> + <th>not yet a member but working on it</th> + <th>reviewer</th> + <th>subproject owner</th> + <th>there's a contributor ladder?</th> + </tr> + <tr> + <th>World_Region</th> + <th></th> + <th></th> + <th></th> + <th></th> + <th></th> + <th></th> + </tr> + </thead> + <tbody> + <tr> + <th>Africa</th> + <td>0</td> + <td>2</td> + <td>2</td> + <td>0</td> + <td>0</td> + <td>0</td> + </tr> + <tr> + <th>Asia</th> + <td>2</td> + <td>5</td> + <td>15</td> + <td>5</td> + <td>0</td> + <td>3</td> + </tr> + <tr> + <th>Europe</th> + <td>8</td> + <td>15</td> + <td>23</td> + <td>9</td> + <td>6</td> + <td>10</td> + </tr> + <tr> + <th>North America</th> + <td>12</td> + <td>22</td> + <td>27</td> + <td>5</td> + <td>22</td> + <td>11</td> + </tr> + <tr> + <th>Oceania</th> + <td>0</td> + <td>1</td> + <td>1</td> + <td>1</td> + <td>0</td> + <td>1</td> + </tr> + <tr> + <th>South America</th> + <td>0</td> + <td>1</td> + <td>0</td> + <td>0</td> + <td>1</td> + <td>0</td> + </tr> + </tbody> +</table> +</div> + + + + +```python +pd.crosstab(survey_data.Contributing_Length, survey_data.Level_of_Contributor).loc[ + ["less than one year", "one to two years", "two to three years", "three+ years"] +] +``` + + + + +<div> +<table border="1" class="dataframe"> + <thead> + <tr style="text-align: right;"> + <th>Level_of_Contributor</th> + <th>approver</th> + <th>member</th> + <th>not yet a member but working on it</th> + <th>reviewer</th> + <th>subproject owner</th> + <th>there's a contributor ladder?</th> + </tr> + <tr> + <th>Contributing_Length</th> + <th></th> + <th></th> + <th></th> + <th></th> + <th></th> + <th></th> + </tr> + </thead> + <tbody> + <tr> + <th>less than one year</th> + <td>3</td> + <td>15</td> + <td>42</td> + <td>4</td> + <td>0</td> + <td>18</td> + </tr> + <tr> + <th>one to two years</th> + <td>8</td> + <td>19</td> + <td>18</td> + <td>7</td> + <td>5</td> + <td>4</td> + </tr> + <tr> + <th>two to three years</th> + <td>6</td> + <td>5</td> + <td>6</td> + <td>4</td> + <td>8</td> + <td>2</td> + </tr> + <tr> + <th>three+ years</th> + <td>5</td> + <td>7</td> + <td>2</td> + <td>5</td> + <td>16</td> + <td>1</td> + </tr> + </tbody> +</table> +</div> + + + + +```python +pd.crosstab(survey_data.Contributing_Length, survey_data.Contribute_to_other_OSS).loc[ + ["less than one year", "one to two years", "two to three years", "three+ years"], + ["this is my first open source project!", "1 other", "2 or more"], +] +``` + + + + +<div> +<table border="1" class="dataframe"> + <thead> + <tr style="text-align: right;"> + <th>Contribute_to_other_OSS</th> + <th>this is my first open source project!</th> + <th>1 other</th> + <th>2 or more</th> + </tr> + <tr> + <th>Contributing_Length</th> + <th></th> + <th></th> + <th></th> + </tr> + </thead> + <tbody> + <tr> + <th>less than one year</th> + <td>27</td> + <td>16</td> + <td>39</td> + </tr> + <tr> + <th>one to two years</th> + <td>15</td> + <td>13</td> + <td>33</td> + </tr> + <tr> + <th>two to three years</th> + <td>8</td> + <td>6</td> + <td>17</td> + </tr> + <tr> + <th>three+ years</th> + <td>4</td> + <td>8</td> + <td>24</td> + </tr> + </tbody> +</table> +</div> + + + + +```python +pd.crosstab( + survey_data.Level_of_Contributor, survey_data.Upstream_supported_at_employer +) +``` + + + + +<div> +<table border="1" class="dataframe"> + <thead> + <tr style="text-align: right;"> + <th>Upstream_supported_at_employer</th> + <th>Didn't Answer</th> + <th>it's complicated.</th> + <th>no, I need to use my own time</th> + <th>yes, I can contribute on company time</th> + </tr> + <tr> + <th>Level_of_Contributor</th> + <th></th> + <th></th> + <th></th> + <th></th> + </tr> + </thead> + <tbody> + <tr> + <th>approver</th> + <td>0</td> + <td>5</td> + <td>3</td> + <td>14</td> + </tr> + <tr> + <th>member</th> + <td>0</td> + <td>11</td> + <td>13</td> + <td>22</td> + </tr> + <tr> + <th>not yet a member but working on it</th> + <td>0</td> + <td>10</td> + <td>26</td> + <td>32</td> + </tr> + <tr> + <th>reviewer</th> + <td>0</td> + <td>4</td> + <td>5</td> + <td>11</td> + </tr> + <tr> + <th>subproject owner</th> + <td>0</td> + <td>5</td> + <td>1</td> + <td>23</td> + </tr> + <tr> + <th>there's a contributor ladder?</th> + <td>1</td> + <td>0</td> + <td>10</td> + <td>14</td> + </tr> + </tbody> +</table> +</div> + + + + +```python +pd.crosstab( + survey_data.Interested_in_next_level, survey_data.Upstream_supported_at_employer +) +``` + + + + +<div> + +<table border="1" class="dataframe"> + <thead> + <tr style="text-align: right;"> + <th>Upstream_supported_at_employer</th> + <th>Didn't Answer</th> + <th>it's complicated.</th> + <th>no, I need to use my own time</th> + <th>yes, I can contribute on company time</th> + </tr> + <tr> + <th>Interested_in_next_level</th> + <th></th> + <th></th> + <th></th> + <th></th> + </tr> + </thead> + <tbody> + <tr> + <th>if I had help/mentoring/support</th> + <td>0</td> + <td>12</td> + <td>12</td> + <td>14</td> + </tr> + <tr> + <th>if I had more free time</th> + <td>0</td> + <td>8</td> + <td>11</td> + <td>23</td> + </tr> + <tr> + <th>no</th> + <td>1</td> + <td>0</td> + <td>3</td> + <td>5</td> + </tr> + <tr> + <th>no, already a subproject owner (highest level on the ladder)</th> + <td>0</td> + <td>4</td> + <td>0</td> + <td>21</td> + </tr> + <tr> + <th>yes</th> + <td>0</td> + <td>11</td> + <td>31</td> + <td>53</td> + </tr> + </tbody> +</table> +</div> + + + + +```python +pd.crosstab(survey_data.Contributing_Length, survey_data.Upstream_supported_at_employer) +``` + + + + +<div> +<table border="1" class="dataframe"> + <thead> + <tr style="text-align: right;"> + <th>Upstream_supported_at_employer</th> + <th>Didn't Answer</th> + <th>it's complicated.</th> + <th>no, I need to use my own time</th> + <th>yes, I can contribute on company time</th> + </tr> + <tr> + <th>Contributing_Length</th> + <th></th> + <th></th> + <th></th> + <th></th> + </tr> + </thead> + <tbody> + <tr> + <th>less than one year</th> + <td>2</td> + <td>10</td> + <td>37</td> + <td>34</td> + </tr> + <tr> + <th>one to two years</th> + <td>0</td> + <td>12</td> + <td>16</td> + <td>33</td> + </tr> + <tr> + <th>three+ years</th> + <td>0</td> + <td>5</td> + <td>4</td> + <td>27</td> + </tr> + <tr> + <th>two to three years</th> + <td>0</td> + <td>8</td> + <td>1</td> + <td>22</td> + </tr> + </tbody> +</table> +</div> + + + + +```python +pd.crosstab(survey_data.World_Region, + survey_data.Contribute_to_other_OSS)[['this is my first open source project!','1 other','2 or more']] + +``` + + + + +<div> +<table border="1" class="dataframe"> + <thead> + <tr style="text-align: right;"> + <th>Contribute_to_other_OSS</th> + <th>this is my first open source project!</th> + <th>1 other</th> + <th>2 or more</th> + </tr> + <tr> + <th>World_Region</th> + <th></th> + <th></th> + <th></th> + </tr> + </thead> + <tbody> + <tr> + <th>Africa</th> + <td>2</td> + <td>1</td> + <td>1</td> + </tr> + <tr> + <th>Asia</th> + <td>6</td> + <td>8</td> + <td>16</td> + </tr> + <tr> + <th>Europe</th> + <td>20</td> + <td>10</td> + <td>41</td> + </tr> + <tr> + <th>North America</th> + <td>26</td> + <td>23</td> + <td>50</td> + </tr> + <tr> + <th>Oceania</th> + <td>0</td> + <td>0</td> + <td>4</td> + </tr> + <tr> + <th>South America</th> + <td>0</td> + <td>1</td> + <td>1</td> + </tr> + </tbody> +</table> +</div> + + + +## Most Important Project + +The following plots use offset stacked bar charts, showing the overall rankings of the most important project. They also display the specific distributions of rankings, for each choice. + + +```python +( + make_likert_chart( + survey_data, + "Most_Important_Proj:", + ["1", "2", "3", "4", "5", "6", "7"], + max_value=7, + sort_x=True, + ) + + p9.labs( + x="Project", + color="Ranking", + fill="Ranking", + y="", + title="Distribution of Ranking of Most Important Projects", + ) +) +``` + + + + + + +Mentoring is the most important project, with very few respondents rating it negatively, followed by contributing to documentation. + + +```python +( + make_likert_chart( + survey_data, + "Most_Important_Proj:", + ["1", "2", "3", "4", "5", "6", "7"], + facet_by=["Level_of_Contributor", "."], + max_value=7, + sort_x=True, + ) + + p9.labs( + x="Project", + y="", + fill="Ranking", + color="Ranking", + title="Rankings of projects in order of importance (1-7) by Contributor Level", + ) + + p9.theme(strip_text_y=p9.element_text(margin={"r": 0.9, "units": "in"})) +) +``` + + + + + + +It is reasonable to expect that different roles in Kubernetes may value different projects more highly. The plot above shows that for many issues and role, this is not true. Some items of note are while most groups rate Cleaning up the OWNERS file as their least important, there is a clear trend for Subproject Owners and Reviewers to view this as more important, although a large portion of them still rate this low. Similarly Subproject Owners view mentoring as less important than other groups. + + +```python +( + make_likert_chart( + survey_data, + "Most_Important_Proj:", + ["1", "2", "3", "4", "5", "6", "7"], + facet_by=["Interested_in_next_level", "."], + max_value=7, + sort_x=True, + ) + + p9.labs( + title="Rankings of projects in order of importance (1-7) by Interest in Next Level", + y="", + x="Project", + color="Ranking", + fill="Ranking", + ) + + p9.theme(strip_text_y=p9.element_text(margin={"r": 0.9, "units": "in"})) +) +``` + + + + + + +Similarly to contributor roles, the interest in the next level does not appear to be a major factor in the ranking order. Mentoring is still very important to almost all levels of interest, with a minor exception being Subproject Owners. The group that stands out a bit are those who aren't interested in the next level, who value GitHub Management higher than some other projects. + + +```python +( + make_likert_chart( + survey_data, + "Most_Important_Proj:", + ["1", "2", "3", "4", "5", "6", "7"], + facet_by=["Contributing_Length", "."], + max_value=7, + sort_x=True, + ) + + p9.labs( + title="Rankings of projects in order of importance (1-7) by Length of Contribution", + y="", + x="Project", + color="Ranking", + fill="Ranking", + ) + + p9.theme(strip_text_y=p9.element_text(margin={"r": 0.9, "units": "in"})) +) +``` + + + + + + + +Another interesting take away is that the most important projects do not vary widely across the length of contribution. Once again, Mentoring is the most important project across all demographics. + +## Analysis of Common Blockers + +In this section, we use offset stacked bar charts again. They visualize which blockers cause the most issues for contributors. + + +```python +blocker_ratings = list( + reversed( + [ + "A frequent blocker", + "Often a problem", + "Sometimes a problem", + "Rarely a problem", + "Not a problem", + ] + ) +) + + +( + make_likert_chart(survey_data, "Blocker:", blocker_ratings) + + p9.labs( + title="Common Blockers", color="Severity", fill="Severity", x="Blocker", y="" + ) +) +``` + + + + + + + +The most frequent blocker across all contributors is debugging test failures, followed by finding issues to work on. + + +```python +( + make_likert_chart(survey_data,'Blocker:', + blocker_ratings, + ['Contributing_Length','.'], + wrap_facets=True) + + p9.labs(x='Blocker', + y='', + fill='Rating', + color='Rating', + title='Common Blockers by Length of Contribution') + + p9.theme(strip_text_y = p9.element_text(margin={'r':.9,'units':'in'})) +) + +``` + + + + + + +When we look at blockers, by the length of the contributor, we can see that contributors across all lengths have the most issues with debugging test failures. But, finding important issues varies across the groups. Below, we look closer at these two groups. + + +```python +( + make_single_likert_chart(survey_data, + 'Blocker:_Debugging_test_failures', + 'Contributing_Length', + blocker_ratings) + + p9.labs(x='Contributing Length', + y='', + fill="Rating", + color="Rating", + title='Debugging Test Failures Blocker by Contribution Length') + + p9.scale_x_discrete(limits=['less than one year', 'one to two years', 'two to three years', '3+ years']) + +) + +``` + + + + + + + +When it comes to debugging, it is less of an issue for new contributors, most likely because they are not as focused on contributing code yet. After their first year, it becomes a larger issue, but slowly improves over time. + + +```python +( + make_single_likert_chart(survey_data, + 'Blocker:_Finding_appropriate_issues_to_work_on', + 'Contributing_Length', + blocker_ratings) + + p9.labs(x='Contributing Length', + y='', + fill="Rating", + color="Rating", + title='Finding Issues to Work on Blocker by Length of Contribution') + + p9.scale_x_discrete(limits=['less than one year', + 'one to two years', + 'two to three years', + '3+ years']) +) + +``` + + + + + + + +Looking at contributors that have trouble finding issues to work on there is a clear trend that the longer you are a Kubernetes contributor, the less of an issue this becomes, suggesting a continued effort is needed to surface good first issues, and make new contributors aware of them. + + +```python +( + make_likert_chart(survey_data,'Blocker:', + blocker_ratings, + ['Level_of_Contributor','.']) + + p9.labs(x='Blocker', + y='', + fill='Rating', + color='Rating', + title='Common Blockers by Contributor Level') + + p9.theme(strip_text_y = p9.element_text(margin={'r':.9,'units':'in'})) +) + +``` + + + + + + +When we segment the contributors by level, we again see that debugging test failures is the largest blocker among all groups. Most blockers affect contributor levels in similar patterns. The one slight exception, though, is that Subproject Owners are the only cohort to not struggle with finding the right SIG. + + +```python +( + make_single_likert_chart( + survey_data, + "Blocker:_Debugging_test_failures", + "Level_of_Contributor", + blocker_ratings, + ) + + p9.labs( + x="Contributor Level", + y="", + fill="Rating", + color="Rating", + title="Debugging Test Failures Blocker by Level of Contributor", + ) +) +``` + + + + + + + +This in-depth view confirms that debugging test failures is an issue across all contributor levels, but is a larger issue for Subproject Owners and Approvers. + + +```python +( + make_likert_chart( + survey_data, "Blocker:", blocker_ratings, ["Interested_in_next_level", "."] + ) + + p9.labs( + x="Blocker", + y="", + fill="Rating", + color="Rating", + title="Common Blockers by Interest in Next Level", + ) + + p9.theme(strip_text_y=p9.element_text(margin={"r": 0.9, "units": "in"})) +) +``` + + + + + + + +When we look at the spread of blockers across interest in the next level, we see that those are interested are the most likely to struggle finding the best issues to work on. In the plot below, this is shown in more detail. + + +```python +( + make_single_likert_chart(survey_data, + 'Blocker:_Finding_appropriate_issues_to_work_on', + 'Interested_in_next_level', + blocker_ratings) + + p9.labs(x='Interest in next level', + y='Percent',fill="Rating", + color="Rating", + title='Finding Issues to Work on Blocker by Interest in the Next Level') + ) + +``` + + + + + + +When we look at the spread of blockers across interest in the next level, we see that those are interested are the most likely to struggle finding the best issues to work on. In the plot below, this is shown in more detail. + +Because it is expected that the large increase in Twitter users may have affected the results of the survey, we looked at the users who reported using Twitter as their primary source of news, and how they compared to those who didn't. + + +```python +survey_data.loc[:, "Check_for_news:_@kubernetesio_twitter"] = survey_data[ + "Check_for_news:_@kubernetesio_twitter" +].astype(str) + +( + make_single_likert_chart( + survey_data, + "Blocker:_Debugging_test_failures", + "Check_for_news:_@kubernetesio_twitter", + blocker_ratings, + ) + + p9.labs( + x="Twitter Use", + y="", + fill="Rating", + color="Rating", + title="Debugging Test Failures Blocker by Twitter Use", + ) + + p9.scale_x_discrete(labels=["Doesn't Use Twitter", "Uses Twitter"]) +) +``` + + + + + + + +Contributors who use Twitter as their primary source of news, about Kubernetes, are less likely to report struggling with debugging test failures. This is primarily because many Twitter users are newer ones. + + + +```python +( + make_single_likert_chart( + survey_data, + "Blocker:_Finding_appropriate_issues_to_work_on", + "Check_for_news:_@kubernetesio_twitter", + blocker_ratings, + ) + + p9.labs( + x="Twitter Use", + y="", + fill="Rating", + color="Rating", + title="Finding Issues Blocker by Twitter Use", + ) + + p9.scale_x_discrete(labels=["Doesn't Use Twitter", "Uses Twitter"]) +) +``` + + + + + + + +Conversely, those who use Twitter do struggle to find Issues to Work on, again because most contributors who primarily use Twitter for their news tend to be new users. + +## First Place News is Seen + + +```python +#Convert back to an int after converting to a string for categorical views above +survey_data.loc[:,'Check_for_news:_@kubernetesio_twitter'] = survey_data[ + 'Check_for_news:_@kubernetesio_twitter'].astype(int) + +( + make_bar_chart(survey_data,'Check_for_news:') + + p9.labs(title='Where Contributors See News First', + x='News Source', + y='Count') +) + +``` + + + + + + + +Most contributors are getting their news primarily from the official dev mailing list. + + +```python +( + make_bar_chart( + survey_data, "Check_for_news:", ["Level_of_Contributor", "."], proportional=True + ) + + p9.labs( + title="Where Contributors See News First by Contributor Level", + x="News Source", + y="Proportion", + fill="News Source", + ) + + p9.theme(strip_text_y=p9.element_text(margin={"r": 0.9, "units": "in"})) +) +``` + + + + + + +Looking across each level of the contributor ladder, most levels display the same patterns, with all groups primarily using the dev mailing list. The second most common source of news is the three Slack channels. + + +```python +( + make_bar_chart( + survey_data, + "Check_for_news:", + ["Interested_in_next_level", "."], + proportional=True, + ) + + p9.labs( + title="Where Contributors See News First by Interest in Next Level", + x="News Source", + y="Proportion", + fill="News Source", + ) + + p9.theme(strip_text_y=p9.element_text(margin={"r": 0.9, "units": "in"})) +) +``` + + + + + + +Looking at news sources by interest in next level, we can see that many people who aren't interested rely on the kubernetes-sig-contribex mailing list at a much higher proportion than the other groups. Those who are interested in the next level, either through mentoring or by themselves, tend to use Twitter more. But, this is likely an artifact of the survey being advertised on Twitter. + +When we look news use by the length of time, we see that compared to other groups, contributors who have been contributing for less than a year rely on the dev mailing list. They replace this with Twitter, and possibly Slack. + +### Twitter Users + +Because of the large increase in responses after the survey was advertised on Twitter, we pay special attention to what type of users list Twitter as their primary source of news. + + +```python +( + make_single_bar_chart( + survey_data[survey_data["Level_of_Contributor"].notnull()], + "Check_for_news:_@kubernetesio_twitter", + "Level_of_Contributor", + proportionally=True, + ) + + p9.labs( + title="Proportion of Contributors, by contributor level, who get news through Twitter First", + y="Proportion", + x="Contributor Level", + ) +) +``` + + + + + + + +Of users who get their news primarily through Twitter, most are members, or those working on becoming members + + +```python +( + make_single_bar_chart( + survey_data[survey_data["Level_of_Contributor"].notnull()], + "Check_for_news:_@kubernetesio_twitter", + "Contributing_Length", + proportionally=True, + ) + + p9.labs( + title="Proportion of Contributors, by contributor level, who get news through Twitter First", + y="Proportion", + x="Contributor Level", + ) +) +``` + + + + + + +Many contributors, who use Twitter as their primary news source, have been contributing for less than a year. There is also a large proportion of users who have been contributing for two to three years. It is unclear why this cohort appears to use Twitter in large numbers, compared to users who have been contributing for one to two years. It is also unclear that this cohort appears to use Twitter at a level proportionately greater to even new contributors. + +### k/community Use + + +```python +( + make_single_bar_chart(survey_data[survey_data['Level_of_Contributor'].notnull()], + 'Check_for_news:_kubernetes/community_repo_in_GitHub_(Issues_and/or_PRs)', + 'Contributing_Length',proportionally=True) + + p9.scale_x_discrete(limits=['less than one year', + 'one to two years', + 'two to three years', + '3+ years']) + + p9.labs(x='Length of Contribution', + y='Proportion', + title='Proportion of Contributors who Check k/community GitHub first') +) + +``` + + + + + + +Of the contributors that rely on the k/community GitHub page, there are relatively equal proportions from all contributor length cohorts. + + +```python +( + make_single_bar_chart( + survey_data[survey_data["Level_of_Contributor"].notnull()], + "Check_for_news:_kubernetes/community_repo_in_GitHub_(Issues_and/or_PRs)", + "Level_of_Contributor", + proportionally=True, + ) + + p9.labs( + x="Contributor Level", + y="Proportion", + title="Proportion of Contributors who Check k/community GitHub first", + ) +) +``` + + + +s + + + +The distribution of contributors by their levels is an interesting mix, showing that both the highest and lowest levels of the ladder rely on the k/community GitHub. They rely on this more than the middle levels. This may be a way to connect the two communities, especially on issues of Mentoring support. + + +```python +( + make_single_bar_chart( + survey_data[survey_data["Level_of_Contributor"].notnull()], + "Check_for_news:_kubernetes/community_repo_in_GitHub_(Issues_and/or_PRs)", + "Level_of_Contributor", + proportionally=True, + facet2="Contributing_Length", + ) + + p9.labs( + x="Contributor Level", + y="Proportion", + title="Proportion of Contributors who Check k/community GitHub first", + ) + + p9.theme(strip_text_y=p9.element_text(margin={"r": 1.15, "units": "in"})) +) +``` + + + + + + +The above plot shows the proportion of users in each bucket created by the two-way faceting, and so it can be a bit misleading. For example, 100% of users who have been contributing one to two years and do not know about the existence of the contributor ladder check k/community first. Using the cross-tabulations above, this is only four people. We can see that across all lengths of contributions, both members and those working on membership use the k/community page. + +## Analysis of Contribution Areas + + +```python +( + make_bar_chart(survey_data,'Contribute:') + + p9.labs(x='Contribution',y='Count',title="Areas Contributed To") +) + +``` + + + + + + + +As the Kubernetes community moves towards using more repositories to better organize the code, we can see that more +contributions are being made in other repositories. Most of these are still under the Kuberentes project. Documentation is the second highest area of contributions. + + +```python +( + make_bar_chart(survey_data.query("Contributing_Length != 'less than one year'"),'Contribute:') + + p9.labs(x='Contribution',y='Count',title="Areas Contributed To (Less than 1 year excluded)") +) + +``` + + + + + + + +When we exclude first year users, the pattern remains mostly the same, with Documentation being replaced as the second most commonly contributed area by code insides k8s/k8s. + + +```python +( + make_bar_chart( + survey_data, + "Contribute:", + facet_by=["Level_of_Contributor", "."], + proportional=True, + ) + + p9.labs( + x="Contribution", y="Count", title="Areas Contributed To", fill="Contribution" + ) + + p9.theme(strip_text_y=p9.element_text(margin={"r": 0.8, "units": "in"})) +) +``` + + + + + + + +The contribution areas vary by the user level on the ladder, with those working on membership. They are unaware that there is a ladder focusing more on documentation than the other levels. Unsurprisingly, a large proportion of those who do not know there is ladder, have not yet contributed. + + +```python +( + make_bar_chart( + survey_data, + "Contribute:", + facet_by=["Contributing_Length", "."], + proportional=True, + ) + + p9.labs( + x="Contribution", y="Count", title="Areas Contributed To", fill="Contribution" + ) + + p9.theme(strip_text_y=p9.element_text(margin={"r": 0.8, "units": "in"})) +) +``` + + + + + + + +Looking at contribution areas by length of time contributing, it is clear that the primary area that new contributors work with is documentation. Among no cohort is the largest area of contribution the core k8s/k8s repository, showing the ongoing organization effort is successful. + + +```python +( + make_bar_chart( + survey_data, + "Contribute:", + facet_by=["Upstream_supported_at_employer", "."], + proportional=True, + ) + + p9.labs( + title="Contributions Given Employer Support", + x="Contribution", + y="Count", + fill="Contribution", + color="Contribution", + ) + + p9.theme(strip_text_y=p9.element_text(margin={"r": 1.15, "units": "in"})) +) +``` + + + + + + + +Contributors with employer support are more likely to contribute to the main repository, but a healthy portion of those without employer support, or with a complicated support situation, also contribute. The main areas that see less contributions from those without employer support are community development and plugin work. + + +```python +( + make_bar_chart( + survey_data.query("Contributing_Length != 'less than one year'"), + "Contribute:", + facet_by=["Upstream_supported_at_employer", "."], + proportional=True, + ) + + p9.labs( + title="Contributions Given Employer Suppot (Less than 1 year excluded)", + x="", + y="Count", + fill="Contribution", + color="Contribution", + ) + + p9.theme(strip_text_y=p9.element_text(margin={"r": 1.15, "units": "in"})) +) +``` + + + + + + + +Removing the new users, and repeating the analysis done above does, not change the overall distributions much. + +## Resource Use Analysis + + +```python +use_ratings = [ + "Every Day", + "Several Times a Week", + "Several Times a Month", + "Occasionally", + "Never", +] +use_ratings.reverse() + +( + make_likert_chart(survey_data, "Use_freq:", use_ratings, max_is_high=True) + + p9.labs( + x="Resource", + y="", + color="Frequency", + fill="Frequency", + title="Resource Use Frequency", + ) +) +``` + + + + + + + +Among all contributors, Slack and GitHub are the most frequently used resources, while dicuss.kubernetes.io and unofficial channels are almost never used. + + +```python +( + make_likert_chart( + survey_data, + "Use_freq:", + use_ratings, + ["Contributing_Length", "."], + max_is_high=True, + ) + + p9.labs( + x="Resource", + y="", + color="Frequency", + fill="Frequency", + title="Resource Use Frequency", + ) + + p9.theme(strip_text_y=p9.element_text(margin={"r": 0.8, "units": "in"})) +) +``` + + + + + + +When segmenting out the resource use by contribution length, the pattern stays roughly the same across all cohorts. Google Docs, which is used in more in administrative tasks, increases the longer a contributor is involved in the project. + + +```python +( + make_likert_chart( + survey_data, + "Use_freq:", + use_ratings, + ["Interested_in_next_level", "."], + max_is_high=True, + ) + + p9.labs( + x="Resource", + y="", + color="Frequency", + fill="Frequency", + title="Resource Use Frequency", + ) + + p9.theme(strip_text_y=p9.element_text(margin={"r": 0.95, "units": "in"})) +) +``` + + + + + + +The use of resources, across interest in the next level, shows only one major difference between the groups. Contributors not interested in the next level tend to use GitHub discussions, much less than other groups. + + +```python +( + make_likert_chart( + survey_data, + "Use_freq:", + use_ratings, + ["Level_of_Contributor", "."], + max_is_high=True, + ) + + p9.labs( + x="Resource", + y="", + color="Frequency", + fill="Frequency", + title="Resource Use Frequency", + ) + + p9.theme(strip_text_y=p9.element_text(margin={"r": 0.8, "units": "in"})) +) +``` + + + + + +The level of the contributor on the ladder shows a large difference between those that use Google Groups and Mailing Lists, as well as those who use Google Docs, etc. The primary users of Zoom meetings tend to be Subproject Owners. + + +```python +( + make_single_likert_chart( + survey_data, + "Use_freq:_Google_Groups/Mailing_Lists", + "Level_of_Contributor", + use_ratings, + five_is_high=True, + ) + + p9.labs( + title="Use of Google Groups", + x="Level of Contributor", + y="Percent", + fill="Frequency", + color="Frequency", + ) +) +``` + + + + + + +The largest group not using Google Groups are those who do not know that there is a contributor ladder. This suggests that advertising the group may lead to more people knowing about the very existence of a contributor ladder. Or, that the existence of the contributor ladder is discussed more on Google Groups, as compared to other channels. + + +```python +( + make_single_likert_chart( + survey_data, + "Use_freq:_Google_Docs/Forms/Sheets,_etc_(meeting_agendas,_etc)", + "Contributing_Length", + use_ratings, + five_is_high=True, + ) + + p9.labs( + title="Use of Google Drive", + x="Length of Contributions", + y="Percent", + fill="Frequency", + color="Frequency", + ) + + p9.scale_x_discrete( + limits=[ + "less than one year", + "one to two years", + "two to three years", + "3+ years", + ] + ) +) +``` + + + + +The use of Google Drive, which is primarily used for administrative tasks, increases the longer a contributor is involved in the project, which is not a surprising outcome. + + +```python +( + make_single_likert_chart(survey_data, + 'Use_freq:_YouTube_recordings_(community_meetings,_SIG/WG_meetings,_etc.)', + 'Contributing_Length', + use_ratings, + five_is_high=True) + + p9.labs(title='Use of YouTube Recordings', + x='Length of Contributions', + y='Percent', + fill="Frequency", + color='Frequency') + + p9.scale_x_discrete(limits=['less than one year', 'one to two years', 'two to three years', '3+ years']) + + p9.ylim(-0.75,0.75) +) + +``` + + + + + + +There is a slight tendency that the longer the contributor is involved in the project, the less they use YouTube. This is a very weak association, though, and hides the fact that most contributors across all lengths do not use YouTube. + + +```python +( + make_single_likert_chart(survey_data[survey_data['Interested_in_next_level'].notnull()], + 'Use_freq:_YouTube_recordings_(community_meetings,_SIG/WG_meetings,_etc.)', + 'Level_of_Contributor', + use_ratings, + five_is_high=True) + + p9.labs(title='Use of YouTube Recordings', + x='Interest in next level', + y='Percent', + fill="Frequency", + color='Frequency') + + p9.ylim(-0.75,0.75) +) + +``` + + + + + + +The one group that does tend to use the YouTube recording, at least a few times a month, are those working on membership. This suggests that the resources available on YouTube are helpful to a subset of the community. + +## Use of Help Wanted Labels + + +```python +help_wanted = survey_data[ + survey_data[ + "Do_you_use_the\xa0Help_Wanted_and/or_Good_First_Issue_labels_on_issues_you_file_to_find_contributors" + ].isna() + == False +] +``` + + +```python +help_plot = ( + p9.ggplot( + help_wanted, + p9.aes( + x="Do_you_use_the\xa0Help_Wanted_and/or_Good_First_Issue_labels_on_issues_you_file_to_find_contributors", + fill="Do_you_use_the\xa0Help_Wanted_and/or_Good_First_Issue_labels_on_issues_you_file_to_find_contributors", + ), + ) + + p9.geom_bar(show_legend=False) + + p9.theme(axis_text_x=p9.element_text(angle=45, ha="right")) + + p9.labs( + x="Used Label", + title="Use of Help Wanted and/or Good First Issue Labels", + y="Count", + ) +) +help_plot +``` + + + + + + + +A majority of users, across all demographics, make use of the Help Wanted and Good First Issue labels on GitHub. + + +```python +( + help_plot + + p9.facet_grid(["Contributing_Length", "."]) + + p9.theme( + strip_text_y=p9.element_text( + angle=0, ha="left", margin={"r": 1.2, "units": "in"} + ) + ) +) +``` + + + + + + +The relative proportions of contributors who use the labels does not change with the length of contribution. The one exception being that very few contributors, who have been doing so for 3+ years, don't use the labels. + + +```python +( + p9.ggplot( + help_wanted[help_wanted["Interested_in_next_level"].notnull()], + p9.aes( + x="Do_you_use_the\xa0Help_Wanted_and/or_Good_First_Issue_labels_on_issues_you_file_to_find_contributors", + fill="Do_you_use_the\xa0Help_Wanted_and/or_Good_First_Issue_labels_on_issues_you_file_to_find_contributors", + ), + ) + + p9.geom_bar(show_legend=False) + + p9.theme(axis_text_x=p9.element_text(angle=45, ha="right")) + + p9.labs( + x="Used Label", + title="Use of Help Wanted and/or Good First Issue Labels", + y="Count", + ) + + p9.facet_grid( + ["Interested_in_next_level", "."], + labeller=lambda label: "\n".join(wrap(label.replace("/", "/ ").strip(), 20)), + ) + + p9.theme( + strip_text_y=p9.element_text( + angle=0, ha="left", margin={"r": 1.2, "units": "in"} + ) + ) +) +``` + + + + + + + +The plot above shows that these labels are especially helpful for those who are interested in the next level of the contributor ladder. + + +```python +( + help_plot + + p9.facet_grid( + ["Level_of_Contributor", "."], + labeller=lambda label: "\n".join(wrap(label.replace("/", "/ ").strip(), 20)), + ) + + p9.theme( + strip_text_y=p9.element_text( + angle=0, ha="left", margin={"r": 1.34, "units": "in"} + ) + ) +) +``` + + + + + + + +When analyzing the help wanted labels across levels of the contributor ladder, most groups do not have a large majority class, indicating that this is not a variable that predicts the usefulness of the labels. + +## Interest in Mentoring + + +```python +available_to_mentor = list(survey_data.columns)[-8] +mentoring_interest = survey_data[survey_data[available_to_mentor].isna() == False] +``` + + +```python +mentoring_plot = ( + p9.ggplot( + mentoring_interest, p9.aes(x=available_to_mentor, fill=available_to_mentor) + ) + + p9.geom_bar(show_legend=False) + + p9.theme(axis_text_x=p9.element_text(angle=45, ha="right")) + + p9.labs(x="Interest", title="Interest in Mentoring GSOC or Outreach", y="Count") + + p9.scale_x_discrete( + labels=lambda labels_list: [ + "\n".join(wrap(label.replace("/", "/ ").strip(), 30)) + for label in labels_list + ] + ) +) +mentoring_plot +``` + + + + + + + +Most contributors feel that they do not have enough experience to mentor others, suggesting that more outreach can be done. This can make all but the newest contributors feel confident that they have something to offer. + + +```python +( + mentoring_plot + + p9.facet_grid(["Upstream_supported_at_employer", "."], + labeller=lambda label: "\n".join(wrap(label.replace("/", "/ ").strip(), 20))) + + p9.theme(strip_text_y=p9.element_text(angle=0, ha="left")) + + p9.theme( + strip_text_y=p9.element_text( + angle=0, ha="left", margin={"r": 1.34, "units": "in"} + ) + ) +) +``` + + + + + + + +A majority of those who already mentor, as well as those who are interested in mentoring, have employers that support their work on Kubernetes. Those who have a complicated relationship with their employer are the only group to whom the most common response was not having enough time, or support. + + +```python +( + mentoring_plot + + p9.facet_grid( + ["Interested_in_next_level", "."], + labeller=lambda label: "\n".join(wrap(label.replace("/", "/ ").strip(), 20)), + ) + + p9.theme( + strip_text_y=p9.element_text( + angle=0, ha="left", margin={"r": 1.34, "units": "in"} + ) + ) +) +``` + + + + + + +There is no clear pattern between the interest to mentor and interest in the next contributor level. The only exception is that those who want to mentor feel like they don't know enough to do so. + +## Participation in Meet our Contributors (MoC) + + +```python +moc_participation_name = list(survey_data.columns)[-9] +moc_data = survey_data[survey_data[moc_participation_name].isna() == False] +``` + + +```python +moc_plot = ( + p9.ggplot(moc_data, p9.aes(x=moc_participation_name, fill=moc_participation_name)) + + p9.geom_bar(show_legend=False) + + p9.theme(axis_text_x=p9.element_text(angle=45, ha="right")) + + p9.labs(title="Watched or Participated in Meet Our Contributors", x="", y="Count") +) +moc_plot +``` + + + + + + + +Across all contributors, most do not know about the existence of Meet our Contributors. + + +```python +( + p9.ggplot( + moc_data[moc_data["Interested_in_next_level"].notnull()], + p9.aes(x=moc_participation_name, fill=moc_participation_name), + ) + + p9.geom_bar(show_legend=False) + + p9.facet_grid( + ["Interested_in_next_level", "."], + labeller=lambda label: "\n".join(wrap(label.replace("/", "/ ").strip(), 20)), + ) + + p9.theme( + strip_text_y=p9.element_text( + angle=0, ha="left", margin={"r": 1.3, "units": "in"} + ), + axis_text_x=p9.element_text(angle=45, ha="right"), + ) + + p9.labs( + x="Watched MoC", + title="Interest in next Level of the Contributor Ladder\n compared to MoC Use", + ) +) +``` + + + + + + + +Among all contributors who are interested in the next level of the ladder, most do still not know about MoC. This suggests a larger outreach would be useful, as most who do watch find it helpful. + + +```python +( + moc_plot + + p9.facet_grid( + ["Level_of_Contributor", "."], + labeller=lambda label: "\n".join(wrap(label.replace("/", "/ ").strip(), 20)), + ) + + p9.theme( + strip_text_y=p9.element_text( + angle=0, ha="left", margin={"r": 1.34, "units": "in"} + ) + ) +) +``` + + + + + + + +As before, across all cohorts of contributor levels, most do not know about MoC. But, for those who do watch it, they find it helpful. The only levels where more contributors know of it, compared to those that don't, are subproject owners and approvers. + +In the next series of plots, we analyze only those contributors who do not know about MoC. + + +```python +( + p9.ggplot( + moc_data[moc_data['Interested_in_next_level'].notnull() & + (moc_data[moc_participation_name] == "no - didn't know this was a thing")], + p9.aes(x='Interested_in_next_level', fill='Interested_in_next_level')) + + p9.geom_bar(show_legend=False) + + p9.facet_grid( + ['Level_of_Contributor','.'], + labeller=lambda label: "\n".join(wrap(label.replace("/", "/ ").strip(), 20)) + ) + + p9.theme( + strip_text_y = p9.element_text( + angle=0,ha='left',margin={"r": 1.3, "units": "in"} + ), + axis_text_x = p9.element_text(angle=45,ha='right') + ) + + p9.labs( + x = 'Interested in Next Level', + y = "Count", + title = "Contributors who don't know about MoC") +) + +``` + + + + + + + + +Across all levels of the contributor ladder, many who are interested in the next level do not know about the existence of MoC. + + +```python +( + p9.ggplot( + moc_data[ + (moc_data[moc_participation_name] == "no - didn't know this was a thing") + ], + p9.aes(x="Contributing_Length", fill="Contributing_Length"), + ) + + p9.geom_bar(show_legend=False) + + p9.facet_grid( + ["Level_of_Contributor", "."], + labeller=lambda label: "\n".join(wrap(label.replace("/", "/ ").strip(), 20)), + ) + + p9.theme( + strip_text_y=p9.element_text( + angle=0, ha="left", margin={"r": 1.34, "units": "in"} + ), + axis_text_x=p9.element_text(angle=45, ha="right"), + ) + + p9.labs( + x="Length of Contribution", + y="Count", + title="Contributors who don't know about MoC", + ) +) +``` + + + + + + + +The plot above shows that a majority of those unaware, have not been contributors for very long. This is regardless of their level on the contributor ladder. + + +```python +( + p9.ggplot( + moc_data[ + moc_data["Interested_in_next_level"].notnull() + & (moc_data[moc_participation_name] == "yes - it was helpful") + ], + p9.aes(x="Interested_in_next_level", fill="Interested_in_next_level"), + ) + + p9.geom_bar(show_legend=False) + + p9.facet_grid( + ["Level_of_Contributor", "."], + labeller=lambda label: "\n".join(wrap(label.replace("/", "/ ").strip(), 20)), + ) + + p9.theme( + strip_text_y=p9.element_text( + angle=0, ha="left", margin={"r": 1.34, "units": "in"} + ), + axis_text_x=p9.element_text(angle=45, ha="right"), + ) + + p9.labs( + x="Interested in Next Level", + y="Count", + title="Contributors who watched or participated in \n MoC and found it helpful", + ) + + p9.ylim(0, 15) # Make the same scale as those who don't find it helpful +) +``` + + + + + + + +The plot above shows that MoC is found useful by those who watch it. This is the case for those who have either attained the highest level on the ladder, or are interested in the next level. This holds true across all levels of the ladder. This suggests that MoC should not only cover information helpful to those trying to become members, but also those who wish to become approvers, reviewers, and subproject owners. + + +```python +( + p9.ggplot( + moc_data[(moc_data[moc_participation_name] == "yes - it was helpful")], + p9.aes(x="Contributing_Length", fill="Contributing_Length"), + ) + + p9.geom_bar(show_legend=False) + + p9.facet_grid( + ["Level_of_Contributor", "."], + labeller=lambda label: "\n".join(wrap(label.replace("/", "/ ").strip(), 20)), + ) + + p9.theme( + strip_text_y=p9.element_text( + angle=0, ha="left", margin={"r": 1.34, "units": "in"} + ), + axis_text_x=p9.element_text(angle=45, ha="right"), + ) + + p9.labs( + x="Length of Contribution", + y="Count", + title="Contributors who watched or participated in \n MoC and found it helpful", + ) + + p9.ylim(0, 25) # Make the same scale as those who don't find it helpful +) +``` + + + + + + + +The majority of those who found MoC useful are contributors who are working towards their membership. This is suggesting that while most of the material might be geared towards them, the previous plot shows the importance of striking a balance between the two. + +## Ways to Increase Attendance at Thursday Meetings + + +```python +( + make_bar_chart(survey_data, "Would_attend_if:") + + p9.labs(x="Change", y="Count", title="Would attend if") +) +``` + + + + + + + +The primary reason contributors don't attend Thursday meetings is that they have too many meetings in their personal lives. As this is not something the Kubernetes community can control, we suggest they focus on the second most common suggestion: distributing a full agenda prior to the meeting. + + +```python +( + make_bar_chart( + survey_data, + "Would_attend_if:", + [".", "Level_of_Contributor"], + proportional=True, + ) + + p9.labs(x="Change", y="Count", title="Would attend if", fill="Change") + + p9.theme( + strip_text_y=p9.element_text(angle=0, ha="left", margin={"r": 1, "units": "in"}) + ) +) +``` + + + + + + + + +Across contributor levels, the dominant reason for their attendance would be "fewer meetings in my personal schedule". What is interesting is that for those who are not yet members, it is less of a dominating reason than other cohorts. These contributors give almost equal weight to many different changes, some of which may be appropriate to the Thursday meeting, but some of which may indicate the need for new types of outreach programming. + + +```python +( + make_bar_chart( + survey_data, "Would_attend_if:", [".", "Contributing_Length"], proportional=True + ) + + p9.labs(x="Change", y="Count", title="Would attend if", fill='Reason') + + p9.theme( + strip_text_y=p9.element_text(angle=0, ha="left", margin={"r": 1, "units": "in"}) + ) +) +``` + + + + + + +Segmenting the contributors, by their length of contribution, does not reveal any patterns that are widely different than when looking at all the contributors as a whole. + + +```python +( + make_single_bar_chart(survey_data[survey_data['World_Region'].notnull()], + 'Would_attend_if:_Different_timeslot_for_the_meeting', + 'World_Region', + proportionally=True + ) + + p9.labs(x='Change', + y='Count', + title="Would attend if") +) +``` + + + + + + + +When looking at the distribution of contributors, who would attend the meetings if they were held at a different time, we can see a large impact that location has. While the number of contributors located in Oceania and Africa is small, it makes forming significant conclusions more difficult. There are many contributors from Asia, indicating that the timing of the meetings is a major barrier to a large portion. This is simply because of the timezones they live in. + +## Reasons for Not Attending Summits + + +```python +unattendance_str = "If_you_haven't_been_able_to_attend_a_previous_summit,_was_there_a_primary_reason_why_(if_multiple,_list_the_leading_reason)" +unattendance_data = survey_data.dropna(subset=[unattendance_str]) +``` + + +```python +reason_for_not_going = ( + p9.ggplot(unattendance_data, p9.aes(x=unattendance_str)) + + p9.geom_bar() + + p9.theme(axis_text_x=p9.element_text(angle=45, ha="right")) + + p9.labs( + title="Reasons for not attending summits", + y="Number of Contributors", + x="Reason", + ) +) +reason_for_not_going +``` + + + + + +The largest reason for not attending the summits is that contributors feel they do not have enough funding to attend. + + +```python +unattendance_contrib = ( + unattendance_data.groupby(["Contributing_Length", unattendance_str]) + .count()["Respondent_ID"] + .reset_index() + .merge( + unattendance_data.groupby(["Contributing_Length"]) + .count()["Respondent_ID"] + .reset_index(), + on="Contributing_Length", + ) +) +unattendance_contrib = unattendance_contrib.assign( + percent=unattendance_contrib.Respondent_ID_x / unattendance_contrib.Respondent_ID_y +) +``` + + +```python +( + p9.ggplot(unattendance_contrib, + p9.aes(x=unattendance_str,y='percent',fill='Contributing_Length')) + + p9.geom_bar(stat='identity',position='dodge') + + p9.theme(axis_text_x = p9.element_text(angle=45,ha='right')) + + p9.labs(title="Reasons for not attending summits", + y = "Proportion of Contributors", + x= 'Reason', + fill="Contributing Length") +) + +``` + + + + + + + +When we look at the reasons for not attending the summits dependent the length of time a contributor has been involved with the project, we see that in addition to lacking funding, the longer tenured contributors tend to help at other events co-located with KubeCon even during the summits. + + +```python +unattendance_level = unattendance_data.groupby(['Level_of_Contributor',unattendance_str]).count()['Respondent_ID'].reset_index().merge(unattendance_data.groupby(['Level_of_Contributor']).count()['Respondent_ID'].reset_index(), on = 'Level_of_Contributor') +unattendance_level = unattendance_level.assign(percent = unattendance_level.Respondent_ID_x/unattendance_level.Respondent_ID_y) + +( + p9.ggplot(unattendance_level, + p9.aes(x=unattendance_str,y='percent',fill='Level_of_Contributor')) + + p9.geom_bar(stat='identity',position=p9.position_dodge(preserve='single')) + + p9.theme(axis_text_x = p9.element_text(angle=45,ha='right')) + + p9.labs(title="Reasons for not attending summits", + y = "Number of Contributors", + x= 'Reason', + fill= 'Level of Contributor') +) + + +``` + + + + + + +As with above, the higher up the ladder one is, the more likely the are to be helping out at another event. Interestingly, while approvers are higher on the ladder than reviewers, they are less likely to be attending KubeCon, as well as the summits. + + +```python +unattendance_support = ( + unattendance_data.groupby(["Upstream_supported_at_employer", unattendance_str]) + .count()["Respondent_ID"] + .reset_index() + .merge( + unattendance_data.groupby(["Upstream_supported_at_employer"]) + .count()["Respondent_ID"] + .reset_index(), + on="Upstream_supported_at_employer", + ) +) +unattendance_support = unattendance_support.assign( + percent=unattendance_support.Respondent_ID_x / unattendance_support.Respondent_ID_y +) + +( + p9.ggplot( + unattendance_support, + p9.aes(x=unattendance_str, y="percent", fill="Upstream_supported_at_employer"), + ) + + p9.geom_bar(stat="identity", position=p9.position_dodge(preserve="single")) + + p9.theme(axis_text_x=p9.element_text(angle=45, ha="right")) + + p9.labs( + title="Reasons for not attending summits", + y="Number of Contributors", + x="Reason", + fill='Employer Support' + ) +) +``` + + + + + + + +Unsurprisingly, funding is a greater barrier to attendance to those who only work on Kubernetes on their own time, but is still a concern for about a third of those with some support from their employer. + +## Agreement with Statements + + +```python +agree_ratings = ["Strongly Disgree", "Disagree", "Neutral", "Agree", "Strongly Agree"] +( + make_likert_chart(survey_data, "Agree:", agree_ratings, max_is_high=True) + + p9.labs(x="Statement", y="Number of Responses", fill="Rating", color="Rating") +) +``` + + + + + + +Overall, the plot above displays the proportions one would hope to see. Many contributors are confident in their ability to understand continuous integration, and the related error messages enough to debug their code, while not feeling overburdened by test failures or notifications. + + +```python +( + make_likert_chart( + survey_data[survey_data["Blocker:_Debugging_test_failures"] > 3], + "Agree:", + agree_ratings, + max_is_high=True, + ) + + p9.labs(x="Statement", y="Number of Responses", fill="Rating", color="Rating") +) +``` + + + + + + + +For those contributors who reported that debugging test failures is often or frequently a blocker, we see that the numbers are lower for those who understand CI and it's error messages in a broken PR. This is suggesting that if these areas were improved, less contributors would find debugging test failures to be a major blocker. On the other hand, it may suggest that there is no need to improve these tools, just more of an effort to educate about them. This is an area that could be investigated in future surveys, to best determine how to make debugging less of a blocker. diff --git a/sig-contributor-experience/surveys/2019/analysis.ipynb b/sig-contributor-experience/surveys/2019/analysis.ipynb new file mode 100644 index 00000000..079f5404 --- /dev/null +++ b/sig-contributor-experience/surveys/2019/analysis.ipynb @@ -0,0 +1,2393 @@ +{ + "cells": [ + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "%load_ext autoreload\n", + "%autoreload 2" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "import pandas as pd\n", + "import numpy as np\n", + "import plotnine as p9\n", + "import sys\n", + "\n", + "sys.path.append(\"../\")\n", + "from k8s_survey_analysis import prepare_2019\n", + "\n", + "pd.options.display.max_columns = 999\n", + "from textwrap import wrap\n", + "from k8s_survey_analysis.plot_utils import (\n", + " make_bar_chart,\n", + " make_likert_chart,\n", + " make_single_bar_chart,\n", + " make_single_likert_chart,\n", + ")\n", + "\n", + "# Silence warnings from PlotNine, mostly about overwriting x_scales\n", + "import warnings\n", + "from plotnine.exceptions import PlotnineWarning\n", + "\n", + "warnings.filterwarnings(\"ignore\", category=PlotnineWarning)" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## Prepare data so the format is as compatible with the 2018 data as possible" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "survey_data = prepare_2019.get_df(\n", + " \"contribex-survey-2019.csv\"\n", + ")" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## Examine response rates per day" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "(\n", + " p9.ggplot(survey_data, p9.aes(x=\"date_taken\"))\n", + " + p9.geom_bar()\n", + " + p9.theme(axis_text_x=p9.element_text(angle=45, ha=\"right\"))\n", + " + p9.labs(x=\"Survey Date\", y=\"Number of Responses\", title=\"Responses Per Day\")\n", + ")" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "The high spike seen on 1/13/20 aligns with the time when the survey was publicized on Twitter. To consider the potential effects of this, we examine how the response rate varied by various demographic information. " + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## Examine response rates by contribution length, level and interest in next level" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "response_rates = (\n", + " survey_data.groupby([\"date_taken\", \"Contributing_Length\", \"Level_of_Contributor\"])\n", + " .count()\n", + " .reindex(\n", + " pd.MultiIndex.from_product(\n", + " [\n", + " survey_data[survey_data[y].notnull()][y].unique().tolist()\n", + " for y in [\"date_taken\", \"Contributing_Length\", \"Level_of_Contributor\"]\n", + " ],\n", + " names=[\"date_taken\", \"Contributing_Length\", \"Level_of_Contributor\"],\n", + " ),\n", + " fill_value=0,\n", + " )\n", + " .reset_index()\n", + ")" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "response_rates = response_rates.assign(\n", + " grp=response_rates.Contributing_Length.str.cat(response_rates.Level_of_Contributor)\n", + ")" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "(\n", + " p9.ggplot(response_rates,\n", + " p9.aes(x='factor(date_taken)',\n", + " y='Respondent_ID',\n", + " group='grp',\n", + " linetype='Contributing_Length',\n", + " color='Level_of_Contributor')) + \n", + " p9.geom_line() + \n", + " p9.labs(x='Survey Data',\n", + " linetype = \"Length of Contribution\", \n", + " color='Contributor Level', \n", + " y='Number of Responses') +\n", + " p9.theme(axis_text_x = p9.element_text(angle=45, ha='right'))\n", + ")\n" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "The survey was advertised on Twitter, and two groups had the largest number of disproportionate responses. Those responses came from either contributors working on their membership, or users that have been contributing less than a year. The largest group is users that fall into both categories." + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "(\n", + " p9.ggplot(survey_data, p9.aes(x=\"date_taken\", fill=\"factor(Contributing_Length)\"))\n", + " + p9.geom_bar()\n", + " + p9.theme(axis_text_x=p9.element_text(angle=45, ha=\"right\"))\n", + " + p9.labs(x=\"Survey Date\", y=\"Number of Responses\", title=\"Responses Per Day\", fill='Contributing Length')\n", + ")" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "(\n", + " p9.ggplot(\n", + " survey_data[survey_data[\"Level_of_Contributor\"].notnull()],\n", + " p9.aes(x=\"date_taken\", fill=\"factor(Level_of_Contributor)\"),\n", + " )\n", + " + p9.geom_bar()\n", + " + p9.theme(axis_text_x=p9.element_text(angle=45, ha=\"right\"))\n", + " + p9.labs(x=\"Survey Date\", y=\"Number of Responses\", title=\"Responses Per Day\", fill='Level of Contributor')\n", + ")" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "(\n", + " p9.ggplot(\n", + " survey_data[survey_data[\"Interested_in_next_level\"].notnull()],\n", + " p9.aes(x=\"date_taken\", fill=\"factor(Interested_in_next_level)\"),\n", + " )\n", + " + p9.geom_bar()\n", + " + p9.theme(axis_text_x=p9.element_text(angle=45, ha=\"right\"))\n", + " + p9.labs(x=\"Survey Date\", y=\"Number of Responses\", title=\"Responses Per Day\", fill=\"Interest in Next Level\")\n", + ")" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## Univariate histograms\n", + "\n", + "In the following sections, we look at the rest of the demographic variables individually. This allows us to see who responded to the survey." + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "(\n", + " p9.ggplot(survey_data, p9.aes(x=\"Contributing_Length\"))\n", + " + p9.geom_bar()\n", + " + p9.theme(axis_text_x=p9.element_text(angle=45))\n", + " + p9.scale_x_discrete(\n", + " limits=[\n", + " \"less than one year\",\n", + " \"one to two years\",\n", + " \"two to three years\",\n", + " \"3+ years\",\n", + " ]\n", + " )\n", + " + p9.ggtitle(\"Number of Contributors by Length of Contribution\")\n", + " + p9.xlab(\"Length of Contribution\")\n", + " + p9.ylab(\"Number of Contributors\")\n", + ")" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "(\n", + " p9.ggplot(\n", + " survey_data[survey_data[\"Level_of_Contributor\"].notnull()],\n", + " p9.aes(x=\"Level_of_Contributor\"),\n", + " )\n", + " + p9.geom_bar()\n", + " + p9.theme(axis_text_x=p9.element_text(angle=45, ha=\"right\"))\n", + " + p9.labs(\n", + " title=\"Number of Contributors by Contributor Level\",\n", + " x=\"Contributor Level\",\n", + " y=\"Number of Contributors\",\n", + " )\n", + " + p9.scale_x_discrete(labels=lambda x: [\"\\n\".join(wrap(label, 20)) for label in x])\n", + ")" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "(\n", + " p9.ggplot(\n", + " survey_data[survey_data[\"World_Region\"].notnull()], p9.aes(x=\"World_Region\")\n", + " )\n", + " + p9.geom_bar()\n", + " + p9.labs(\n", + " title=\"Number of Contributors by World Region\",\n", + " x=\"World Region\",\n", + " y=\"Number of Contributors\",\n", + " )\n", + ")" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "(\n", + " p9.ggplot(\n", + " survey_data[survey_data[\"Interested_in_next_level\"].notnull()],\n", + " p9.aes(x=\"Interested_in_next_level\"),\n", + " )\n", + " + p9.geom_bar()\n", + " + p9.theme(axis_text_x=p9.element_text(angle=45, ha=\"right\"))\n", + " + p9.labs(\n", + " title=\"Number of Contributors by Interest in Next Level\",\n", + " x=\"Interest in Next Level\",\n", + " y=\"Number of Contributors\",\n", + " )\n", + " + p9.scale_x_discrete(labels=lambda x: [\"\\n\".join(wrap(label, 20)) for label in x])\n", + ")" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "(\n", + " p9.ggplot(survey_data, p9.aes(x=\"Contribute_to_other_OSS\"))\n", + " + p9.geom_bar()\n", + " + p9.theme(axis_text_x=p9.element_text(angle=45, ha=\"right\"))\n", + " + p9.scale_x_discrete(\n", + " limits=[\"this is my first open source project!\", \"1 other\", \"2 or more\"]\n", + " )\n", + " + p9.ggtitle(\"Participation in Other Open Source Projects\")\n", + " + p9.xlab(\"Number of other OSS Projects\")\n", + " + p9.ylab(\"Number of Contributors\")\n", + ")" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "employer_support = (\n", + " p9.ggplot(survey_data, p9.aes(x=\"Upstream_supported_at_employer\"))\n", + " + p9.geom_bar()\n", + " + p9.theme(axis_text_x=p9.element_text(angle=45, ha=\"right\"))\n", + " + p9.labs(title=\"Support by Employer\", x=\"Support Level\", y=\"Count\")\n", + ")\n", + "employer_support" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## 2-Way Cross Tabulations\n", + "\n", + "Before we look at the relation between demographic data and questions of interest, we look at two-way cross tabulations in demographic data." + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "pd.crosstab(survey_data.World_Region, survey_data.Level_of_Contributor)" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "pd.crosstab(survey_data.Contributing_Length, survey_data.Level_of_Contributor).loc[\n", + " [\"less than one year\", \"one to two years\", \"two to three years\", \"three+ years\"]\n", + "]" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "pd.crosstab(survey_data.Contributing_Length, survey_data.Contribute_to_other_OSS).loc[\n", + " [\"less than one year\", \"one to two years\", \"two to three years\", \"three+ years\"],\n", + " [\"this is my first open source project!\", \"1 other\", \"2 or more\"],\n", + "]" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "pd.crosstab(\n", + " survey_data.Level_of_Contributor, survey_data.Upstream_supported_at_employer\n", + ")" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "pd.crosstab(\n", + " survey_data.Interested_in_next_level, survey_data.Upstream_supported_at_employer\n", + ")" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "pd.crosstab(survey_data.Contributing_Length, survey_data.Upstream_supported_at_employer)" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "pd.crosstab(survey_data.World_Region, \n", + " survey_data.Contribute_to_other_OSS)[['this is my first open source project!','1 other','2 or more']]\n" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## Most Important Project\n", + "\n", + "The following plots use offset stacked bar charts, showing the overall rankings of the most important project. They also display the specific distributions of rankings, for each choice." + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "(\n", + " make_likert_chart(\n", + " survey_data,\n", + " \"Most_Important_Proj:\",\n", + " [\"1\", \"2\", \"3\", \"4\", \"5\", \"6\", \"7\"],\n", + " max_value=7,\n", + " sort_x=True,\n", + " )\n", + " + p9.labs(\n", + " x=\"Project\",\n", + " color=\"Ranking\",\n", + " fill=\"Ranking\",\n", + " y=\"\",\n", + " title=\"Distribution of Ranking of Most Important Projects\",\n", + " )\n", + ")" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "Mentoring is the most important project, with very few respondents rating it negatively, followed by contributing to documentation. " + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "(\n", + " make_likert_chart(\n", + " survey_data,\n", + " \"Most_Important_Proj:\",\n", + " [\"1\", \"2\", \"3\", \"4\", \"5\", \"6\", \"7\"],\n", + " facet_by=[\"Level_of_Contributor\", \".\"],\n", + " max_value=7,\n", + " sort_x=True,\n", + " )\n", + " + p9.labs(\n", + " x=\"Project\",\n", + " y=\"\",\n", + " fill=\"Ranking\",\n", + " color=\"Ranking\",\n", + " title=\"Rankings of projects in order of importance (1-7) by Contributor Level\",\n", + " )\n", + " + p9.theme(strip_text_y=p9.element_text(margin={\"r\": 0.9, \"units\": \"in\"}))\n", + ")" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "It is reasonable to expect that different roles in Kubernetes may value different projects more highly. The plot above shows that for many issues and role, this is not true. Some items of note are while most groups rate Cleaning up the OWNERS file as their least important, there is a clear trend for Subproject Owners and Reviewers to view this as more important, although a large portion of them still rate this low. Similarly Subproject Owners view mentoring as less important than other groups. " + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "(\n", + " make_likert_chart(\n", + " survey_data,\n", + " \"Most_Important_Proj:\",\n", + " [\"1\", \"2\", \"3\", \"4\", \"5\", \"6\", \"7\"],\n", + " facet_by=[\"Interested_in_next_level\", \".\"],\n", + " max_value=7,\n", + " sort_x=True,\n", + " )\n", + " + p9.labs(\n", + " title=\"Rankings of projects in order of importance (1-7) by Interest in Next Level\",\n", + " y=\"\",\n", + " x=\"Project\",\n", + " color=\"Ranking\",\n", + " fill=\"Ranking\",\n", + " )\n", + " + p9.theme(strip_text_y=p9.element_text(margin={\"r\": 0.9, \"units\": \"in\"}))\n", + ")" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "Similarly to contributor roles, the interest in the next level does not appear to be a major factor in the ranking order. Mentoring is still very important to almost all levels of interest, with a minor exception being Subproject Owners. The group that stands out a bit are those who aren't interested in the next level, who value GitHub Management higher than some other projects. " + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "(\n", + " make_likert_chart(\n", + " survey_data,\n", + " \"Most_Important_Proj:\",\n", + " [\"1\", \"2\", \"3\", \"4\", \"5\", \"6\", \"7\"],\n", + " facet_by=[\"Contributing_Length\", \".\"],\n", + " max_value=7,\n", + " sort_x=True,\n", + " )\n", + " + p9.labs(\n", + " title=\"Rankings of projects in order of importance (1-7) by Length of Contribution\",\n", + " y=\"\",\n", + " x=\"Project\",\n", + " color=\"Ranking\",\n", + " fill=\"Ranking\",\n", + " )\n", + " + p9.theme(strip_text_y=p9.element_text(margin={\"r\": 0.9, \"units\": \"in\"}))\n", + ")" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "Another interesting take away is that the most important projects do not vary widely across the length of contribution. Once again, Mentoring is the most important project across all demographics." + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## Analysis of Common Blockers\n", + "\n", + "In this section, we use offset stacked bar charts again. They visualize which blockers cause the most issues for contributors." + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "blocker_ratings = list(\n", + " reversed(\n", + " [\n", + " \"A frequent blocker\",\n", + " \"Often a problem\",\n", + " \"Sometimes a problem\",\n", + " \"Rarely a problem\",\n", + " \"Not a problem\",\n", + " ]\n", + " )\n", + ")\n", + "\n", + "\n", + "(\n", + " make_likert_chart(survey_data, \"Blocker:\", blocker_ratings)\n", + " + p9.labs(\n", + " title=\"Common Blockers\", color=\"Severity\", fill=\"Severity\", x=\"Blocker\", y=\"\"\n", + " )\n", + ")" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "The most frequent blocker across all contributors is debugging test failures, followed by finding issues to work on. " + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "(\n", + " make_likert_chart(survey_data,'Blocker:',\n", + " blocker_ratings,\n", + " ['Contributing_Length','.'],\n", + " wrap_facets=True) + \n", + " p9.labs(x='Blocker',\n", + " y='',\n", + " fill='Rating',\n", + " color='Rating', \n", + " title='Common Blockers by Length of Contribution') +\n", + " p9.theme(strip_text_y = p9.element_text(margin={'r':.9,'units':'in'}))\n", + ")\n" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "When we look at blockers, by the length of the contributor, we can see that contributors across all lengths have the most issues with debugging test failures. But, finding important issues varies across the groups. Below, we look closer at these two groups." + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "(\n", + " make_single_likert_chart(survey_data,\n", + " 'Blocker:_Debugging_test_failures',\n", + " 'Contributing_Length',\n", + " blocker_ratings) + \n", + " p9.labs(x='Contributing Length',\n", + " y='',\n", + " fill=\"Rating\",\n", + " color=\"Rating\",\n", + " title='Debugging Test Failures Blocker by Contribution Length') + \n", + " p9.scale_x_discrete(limits=['less than one year', 'one to two years', 'two to three years', '3+ years']) \n", + "\n", + ")\n" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "When it comes to debugging, it is less of an issue for new contributors, most likely because they are not as focused on contributing code yet. After their first year, it becomes a larger issue, but slowly improves over time." + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "( \n", + " make_single_likert_chart(survey_data,\n", + " 'Blocker:_Finding_appropriate_issues_to_work_on',\n", + " 'Contributing_Length',\n", + " blocker_ratings) + \n", + " p9.labs(x='Contributing Length',\n", + " y='',\n", + " fill=\"Rating\",\n", + " color=\"Rating\",\n", + " title='Finding Issues to Work on Blocker by Length of Contribution') + \n", + " p9.scale_x_discrete(limits=['less than one year', \n", + " 'one to two years', \n", + " 'two to three years',\n", + " '3+ years'])\n", + ")\n" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "Looking at contributors that have trouble finding issues to work on there is a clear trend that the longer you are a Kubernetes contributor, the less of an issue this becomes, suggesting a continued effort is needed to surface good first issues, and make new contributors aware of them. " + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "(\n", + " make_likert_chart(survey_data,'Blocker:',\n", + " blocker_ratings,\n", + " ['Level_of_Contributor','.']) + \n", + " p9.labs(x='Blocker',\n", + " y='',\n", + " fill='Rating',\n", + " color='Rating',\n", + " title='Common Blockers by Contributor Level') +\n", + " p9.theme(strip_text_y = p9.element_text(margin={'r':.9,'units':'in'}))\n", + ")\n" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "When we segment the contributors by level, we again see that debugging test failures is the largest blocker among all groups. Most blockers affect contributor levels in similar patterns. The one slight exception, though, is that Subproject Owners are the only cohort to not struggle with finding the right SIG." + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "(\n", + " make_single_likert_chart(\n", + " survey_data,\n", + " \"Blocker:_Debugging_test_failures\",\n", + " \"Level_of_Contributor\",\n", + " blocker_ratings,\n", + " )\n", + " + p9.labs(\n", + " x=\"Contributor Level\",\n", + " y=\"\",\n", + " fill=\"Rating\",\n", + " color=\"Rating\",\n", + " title=\"Debugging Test Failures Blocker by Level of Contributor\",\n", + " )\n", + ")" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "This in-depth view confirms that debugging test failures is an issue across all contributor levels, but is a larger issue for Subproject Owners and Approvers." + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "(\n", + " make_likert_chart(\n", + " survey_data, \"Blocker:\", blocker_ratings, [\"Interested_in_next_level\", \".\"]\n", + " )\n", + " + p9.labs(\n", + " x=\"Blocker\",\n", + " y=\"\",\n", + " fill=\"Rating\",\n", + " color=\"Rating\",\n", + " title=\"Common Blockers by Interest in Next Level\",\n", + " )\n", + " + p9.theme(strip_text_y=p9.element_text(margin={\"r\": 0.9, \"units\": \"in\"}))\n", + ")" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "When we look at the spread of blockers across interest in the next level, we see that those are interested are the most likely to struggle finding the best issues to work on. In the plot below, this is shown in more detail." + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": { + "scrolled": false + }, + "outputs": [], + "source": [ + "(\n", + " make_single_likert_chart(survey_data,\n", + " 'Blocker:_Finding_appropriate_issues_to_work_on',\n", + " 'Interested_in_next_level',\n", + " blocker_ratings) + \n", + " p9.labs(x='Interest in next level',\n", + " y='Percent',fill=\"Rating\",\n", + " color=\"Rating\",\n", + " title='Finding Issues to Work on Blocker by Interest in the Next Level') \n", + " )\n" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "When we look at the spread of blockers across interest in the next level, we see that those are interested are the most likely to struggle finding the best issues to work on. In the plot below, this is shown in more detail." + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "Because it is expected that the large increase in Twitter users may have affected the results of the survey, we looked at the users who reported using Twitter as their primary source of news, and how they compared to those who didn't." + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "survey_data.loc[:, \"Check_for_news:_@kubernetesio_twitter\"] = survey_data[\n", + " \"Check_for_news:_@kubernetesio_twitter\"\n", + "].astype(str)\n", + "\n", + "(\n", + " make_single_likert_chart(\n", + " survey_data,\n", + " \"Blocker:_Debugging_test_failures\",\n", + " \"Check_for_news:_@kubernetesio_twitter\",\n", + " blocker_ratings,\n", + " )\n", + " + p9.labs(\n", + " x=\"Twitter Use\",\n", + " y=\"\",\n", + " fill=\"Rating\",\n", + " color=\"Rating\",\n", + " title=\"Debugging Test Failures Blocker by Twitter Use\",\n", + " )\n", + " + p9.scale_x_discrete(labels=[\"Doesn't Use Twitter\", \"Uses Twitter\"])\n", + ")" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "Contributors who use Twitter as their primary source of news, about Kubernetes, are less likely to report struggling with debugging test failures. This is primarily because many Twitter users are newer ones.\n" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "(\n", + " make_single_likert_chart(\n", + " survey_data,\n", + " \"Blocker:_Finding_appropriate_issues_to_work_on\",\n", + " \"Check_for_news:_@kubernetesio_twitter\",\n", + " blocker_ratings,\n", + " )\n", + " + p9.labs(\n", + " x=\"Twitter Use\",\n", + " y=\"\",\n", + " fill=\"Rating\",\n", + " color=\"Rating\",\n", + " title=\"Finding Issues Blocker by Twitter Use\",\n", + " )\n", + " + p9.scale_x_discrete(labels=[\"Doesn't Use Twitter\", \"Uses Twitter\"])\n", + ")" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "Conversely, those who use Twitter do struggle to find Issues to Work on, again because most contributors who primarily use Twitter for their news tend to be new users." + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## First Place News is Seen" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "#Convert back to an int after converting to a string for categorical views above\n", + "survey_data.loc[:,'Check_for_news:_@kubernetesio_twitter'] = survey_data[\n", + " 'Check_for_news:_@kubernetesio_twitter'].astype(int)\n", + "\n", + "(\n", + " make_bar_chart(survey_data,'Check_for_news:') + \n", + " p9.labs(title='Where Contributors See News First',\n", + " x='News Source',\n", + " y='Count')\n", + ")\n" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "Most contributors are getting their news primarily from the official dev mailing list." + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "(\n", + " make_bar_chart(\n", + " survey_data, \"Check_for_news:\", [\"Level_of_Contributor\", \".\"], proportional=True\n", + " )\n", + " + p9.labs(\n", + " title=\"Where Contributors See News First by Contributor Level\",\n", + " x=\"News Source\",\n", + " y=\"Proportion\",\n", + " fill=\"News Source\",\n", + " )\n", + " + p9.theme(strip_text_y=p9.element_text(margin={\"r\": 0.9, \"units\": \"in\"}))\n", + ")" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "Looking across each level of the contributor ladder, most levels display the same patterns, with all groups primarily using the dev mailing list. The second most common source of news is the three Slack channels." + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "(\n", + " make_bar_chart(\n", + " survey_data,\n", + " \"Check_for_news:\",\n", + " [\"Interested_in_next_level\", \".\"],\n", + " proportional=True,\n", + " )\n", + " + p9.labs(\n", + " title=\"Where Contributors See News First by Interest in Next Level\",\n", + " x=\"News Source\",\n", + " y=\"Proportion\",\n", + " fill=\"News Source\",\n", + " )\n", + " + p9.theme(strip_text_y=p9.element_text(margin={\"r\": 0.9, \"units\": \"in\"}))\n", + ")" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "Looking at news sources by interest in next level, we can see that many people who aren't interested rely on the kubernetes-sig-contribex mailing list at a much higher proportion than the other groups. Those who are interested in the next level, either through mentoring or by themselves, tend to use Twitter more. But, this is likely an artifact of the survey being advertised on Twitter." + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "When we look news use by the length of time, we see that compared to other groups, contributors who have been contributing for less than a year rely on the dev mailing list. They replace this with Twitter, and possibly Slack." + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "### Twitter Users\n", + "\n", + "Because of the large increase in responses after the survey was advertised on Twitter, we pay special attention to what type of users list Twitter as their primary source of news." + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "(\n", + " make_single_bar_chart(\n", + " survey_data[survey_data[\"Level_of_Contributor\"].notnull()],\n", + " \"Check_for_news:_@kubernetesio_twitter\",\n", + " \"Level_of_Contributor\",\n", + " proportionally=True,\n", + " )\n", + " + p9.labs(\n", + " title=\"Proportion of Contributors, by contributor level, who get news through Twitter First\",\n", + " y=\"Proportion\",\n", + " x=\"Contributor Level\",\n", + " )\n", + ")" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "Of users who get their news primarily through Twitter, most are members, or those working on becoming members" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "(\n", + " make_single_bar_chart(\n", + " survey_data[survey_data[\"Level_of_Contributor\"].notnull()],\n", + " \"Check_for_news:_@kubernetesio_twitter\",\n", + " \"Contributing_Length\",\n", + " proportionally=True,\n", + " )\n", + " + p9.labs(\n", + " title=\"Proportion of Contributors, by contributor level, who get news through Twitter First\",\n", + " y=\"Proportion\",\n", + " x=\"Contributor Level\",\n", + " )\n", + ")" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "Many contributors, who use Twitter as their primary news source, have been contributing for less than a year. There is also a large proportion of users who have been contributing for two to three years. It is unclear why this cohort appears to use Twitter in large numbers, compared to users who have been contributing for one to two years. It is also unclear that this cohort appears to use Twitter at a level proportionately greater to even new contributors. " + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "### k/community Use" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "(\n", + " make_single_bar_chart(survey_data[survey_data['Level_of_Contributor'].notnull()],\n", + " 'Check_for_news:_kubernetes/community_repo_in_GitHub_(Issues_and/or_PRs)',\n", + " 'Contributing_Length',proportionally=True) +\n", + " p9.scale_x_discrete(limits=['less than one year',\n", + " 'one to two years', \n", + " 'two to three years',\n", + " '3+ years']) +\n", + " p9.labs(x='Length of Contribution',\n", + " y='Proportion',\n", + " title='Proportion of Contributors who Check k/community GitHub first')\n", + ")\n" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "Of the contributors that rely on the k/community GitHub page, there are relatively equal proportions from all contributor length cohorts." + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "(\n", + " make_single_bar_chart(\n", + " survey_data[survey_data[\"Level_of_Contributor\"].notnull()],\n", + " \"Check_for_news:_kubernetes/community_repo_in_GitHub_(Issues_and/or_PRs)\",\n", + " \"Level_of_Contributor\",\n", + " proportionally=True,\n", + " )\n", + " + p9.labs(\n", + " x=\"Contributor Level\",\n", + " y=\"Proportion\",\n", + " title=\"Proportion of Contributors who Check k/community GitHub first\",\n", + " )\n", + ")" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "The distribution of contributors by their levels is an interesting mix, showing that both the highest and lowest levels of the ladder rely on the k/community GitHub. They rely on this more than the middle levels. This may be a way to connect the two communities, especially on issues of Mentoring support." + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "(\n", + " make_single_bar_chart(\n", + " survey_data[survey_data[\"Level_of_Contributor\"].notnull()],\n", + " \"Check_for_news:_kubernetes/community_repo_in_GitHub_(Issues_and/or_PRs)\",\n", + " \"Level_of_Contributor\",\n", + " proportionally=True,\n", + " facet2=\"Contributing_Length\",\n", + " )\n", + " + p9.labs(\n", + " x=\"Contributor Level\",\n", + " y=\"Proportion\",\n", + " title=\"Proportion of Contributors who Check k/community GitHub first\",\n", + " )\n", + " + p9.theme(strip_text_y=p9.element_text(margin={\"r\": 1.15, \"units\": \"in\"}))\n", + ")" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "The above plot shows the proportion of users in each bucket created by the two-way faceting, and so it can be a bit misleading. For example, 100% of users who have been contributing one to two years and do not know about the existence of the contributor ladder check k/community first. Using the cross-tabulations above, this is only four people. We can see that across all lengths of contributions, both members and those working on membership use the k/community page. " + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## Analysis of Contribution Areas" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": { + "scrolled": false + }, + "outputs": [], + "source": [ + "(\n", + " make_bar_chart(survey_data,'Contribute:') + \n", + " p9.labs(x='Contribution',y='Count',title=\"Areas Contributed To\")\n", + ")\n" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "As the Kubernetes community moves towards using more repositories to better organize the code, we can see that more\n", + "contributions are being made in other repositories. Most of these are still under the Kuberentes project. Documentation is the second highest area of contributions." + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "(\n", + " make_bar_chart(survey_data.query(\"Contributing_Length != 'less than one year'\"),'Contribute:') + \n", + " p9.labs(x='Contribution',y='Count',title=\"Areas Contributed To (Less than 1 year excluded)\")\n", + ")\n" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "When we exclude first year users, the pattern remains mostly the same, with Documentation being replaced as the second most commonly contributed area by code insides k8s/k8s." + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "(\n", + " make_bar_chart(\n", + " survey_data,\n", + " \"Contribute:\",\n", + " facet_by=[\"Level_of_Contributor\", \".\"],\n", + " proportional=True,\n", + " )\n", + " + p9.labs(\n", + " x=\"Contribution\", y=\"Count\", title=\"Areas Contributed To\", fill=\"Contribution\"\n", + " )\n", + " + p9.theme(strip_text_y=p9.element_text(margin={\"r\": 0.8, \"units\": \"in\"}))\n", + ")" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "The contribution areas vary by the user level on the ladder, with those working on membership. They are unaware that there is a ladder focusing more on documentation than the other levels. Unsurprisingly, a large proportion of those who do not know there is ladder, have not yet contributed." + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "(\n", + " make_bar_chart(\n", + " survey_data,\n", + " \"Contribute:\",\n", + " facet_by=[\"Contributing_Length\", \".\"],\n", + " proportional=True,\n", + " )\n", + " + p9.labs(\n", + " x=\"Contribution\", y=\"Count\", title=\"Areas Contributed To\", fill=\"Contribution\"\n", + " )\n", + " + p9.theme(strip_text_y=p9.element_text(margin={\"r\": 0.8, \"units\": \"in\"}))\n", + ")" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "Looking at contribution areas by length of time contributing, it is clear that the primary area that new contributors work with is documentation. Among no cohort is the largest area of contribution the core k8s/k8s repository, showing the ongoing organization effort is successful. " + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "(\n", + " make_bar_chart(\n", + " survey_data,\n", + " \"Contribute:\",\n", + " facet_by=[\"Upstream_supported_at_employer\", \".\"],\n", + " proportional=True,\n", + " )\n", + " + p9.labs(\n", + " title=\"Contributions Given Employer Support\",\n", + " x=\"Contribution\",\n", + " y=\"Count\",\n", + " fill=\"Contribution\",\n", + " color=\"Contribution\",\n", + " )\n", + " + p9.theme(strip_text_y=p9.element_text(margin={\"r\": 1.15, \"units\": \"in\"}))\n", + ")" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "Contributors with employer support are more likely to contribute to the main repository, but a healthy portion of those without employer support, or with a complicated support situation, also contribute. The main areas that see less contributions from those without employer support are community development and plugin work." + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "(\n", + " make_bar_chart(\n", + " survey_data.query(\"Contributing_Length != 'less than one year'\"),\n", + " \"Contribute:\",\n", + " facet_by=[\"Upstream_supported_at_employer\", \".\"],\n", + " proportional=True,\n", + " )\n", + " + p9.labs(\n", + " title=\"Contributions Given Employer Suppot (Less than 1 year excluded)\",\n", + " x=\"\",\n", + " y=\"Count\",\n", + " fill=\"Contribution\",\n", + " color=\"Contribution\",\n", + " )\n", + " + p9.theme(strip_text_y=p9.element_text(margin={\"r\": 1.15, \"units\": \"in\"}))\n", + ")" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "Removing the new users, and repeating the analysis done above does, not change the overall distributions much." + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## Resource Use Analysis" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "use_ratings = [\n", + " \"Every Day\",\n", + " \"Several Times a Week\",\n", + " \"Several Times a Month\",\n", + " \"Occasionally\",\n", + " \"Never\",\n", + "]\n", + "use_ratings.reverse()\n", + "\n", + "(\n", + " make_likert_chart(survey_data, \"Use_freq:\", use_ratings, max_is_high=True)\n", + " + p9.labs(\n", + " x=\"Resource\",\n", + " y=\"\",\n", + " color=\"Frequency\",\n", + " fill=\"Frequency\",\n", + " title=\"Resource Use Frequency\",\n", + " )\n", + ")" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "Among all contributors, Slack and GitHub are the most frequently used resources, while dicuss.kubernetes.io and unofficial channels are almost never used. " + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "(\n", + " make_likert_chart(\n", + " survey_data,\n", + " \"Use_freq:\",\n", + " use_ratings,\n", + " [\"Contributing_Length\", \".\"],\n", + " max_is_high=True,\n", + " )\n", + " + p9.labs(\n", + " x=\"Resource\",\n", + " y=\"\",\n", + " color=\"Frequency\",\n", + " fill=\"Frequency\",\n", + " title=\"Resource Use Frequency\",\n", + " )\n", + " + p9.theme(strip_text_y=p9.element_text(margin={\"r\": 0.8, \"units\": \"in\"}))\n", + ")" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "When segmenting out the resource use by contribution length, the pattern stays roughly the same across all cohorts. Google Docs, which is used in more in administrative tasks, increases the longer a contributor is involved in the project." + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "(\n", + " make_likert_chart(\n", + " survey_data,\n", + " \"Use_freq:\",\n", + " use_ratings,\n", + " [\"Interested_in_next_level\", \".\"],\n", + " max_is_high=True,\n", + " )\n", + " + p9.labs(\n", + " x=\"Resource\",\n", + " y=\"\",\n", + " color=\"Frequency\",\n", + " fill=\"Frequency\",\n", + " title=\"Resource Use Frequency\",\n", + " )\n", + " + p9.theme(strip_text_y=p9.element_text(margin={\"r\": 0.95, \"units\": \"in\"}))\n", + ")" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "The use of resources, across interest in the next level, shows only one major difference between the groups. Contributors not interested in the next level tend to use GitHub discussions, much less than other groups." + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "(\n", + " make_likert_chart(\n", + " survey_data,\n", + " \"Use_freq:\",\n", + " use_ratings,\n", + " [\"Level_of_Contributor\", \".\"],\n", + " max_is_high=True,\n", + " )\n", + " + p9.labs(\n", + " x=\"Resource\",\n", + " y=\"\",\n", + " color=\"Frequency\",\n", + " fill=\"Frequency\",\n", + " title=\"Resource Use Frequency\",\n", + " )\n", + " + p9.theme(strip_text_y=p9.element_text(margin={\"r\": 0.8, \"units\": \"in\"}))\n", + ")" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "The level of the contributor on the ladder shows a large difference between those that use Google Groups and Mailing Lists, as well as those who use Google Docs, etc. The primary users of Zoom meetings tend to be Subproject Owners." + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "(\n", + " make_single_likert_chart(\n", + " survey_data,\n", + " \"Use_freq:_Google_Groups/Mailing_Lists\",\n", + " \"Level_of_Contributor\",\n", + " use_ratings,\n", + " five_is_high=True,\n", + " )\n", + " + p9.labs(\n", + " title=\"Use of Google Groups\",\n", + " x=\"Level of Contributor\",\n", + " y=\"Percent\",\n", + " fill=\"Frequency\",\n", + " color=\"Frequency\",\n", + " )\n", + ")" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "The largest group not using Google Groups are those who do not know that there is a contributor ladder. This suggests that advertising the group may lead to more people knowing about the very existence of a contributor ladder. Or, that the existence of the contributor ladder is discussed more on Google Groups, as compared to other channels." + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "(\n", + " make_single_likert_chart(\n", + " survey_data,\n", + " \"Use_freq:_Google_Docs/Forms/Sheets,_etc_(meeting_agendas,_etc)\",\n", + " \"Contributing_Length\",\n", + " use_ratings,\n", + " five_is_high=True,\n", + " )\n", + " + p9.labs(\n", + " title=\"Use of Google Drive\",\n", + " x=\"Length of Contributions\",\n", + " y=\"Percent\",\n", + " fill=\"Frequency\",\n", + " color=\"Frequency\",\n", + " )\n", + " + p9.scale_x_discrete(\n", + " limits=[\n", + " \"less than one year\",\n", + " \"one to two years\",\n", + " \"two to three years\",\n", + " \"3+ years\",\n", + " ]\n", + " )\n", + ")" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "The use of Google Drive, which is primarily used for administrative tasks, increases the longer a contributor is involved in the project, which is not a surprising outcome." + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "(\n", + " make_single_likert_chart(survey_data,\n", + " 'Use_freq:_YouTube_recordings_(community_meetings,_SIG/WG_meetings,_etc.)',\n", + " 'Contributing_Length',\n", + " use_ratings,\n", + " five_is_high=True) + \n", + " p9.labs(title='Use of YouTube Recordings',\n", + " x='Length of Contributions',\n", + " y='Percent',\n", + " fill=\"Frequency\",\n", + " color='Frequency') +\n", + " p9.scale_x_discrete(limits=['less than one year', 'one to two years', 'two to three years', '3+ years']) +\n", + " p9.ylim(-0.75,0.75)\n", + ")\n" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "There is a slight tendency that the longer the contributor is involved in the project, the less they use YouTube. This is a very weak association, though, and hides the fact that most contributors across all lengths do not use YouTube." + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "(\n", + " make_single_likert_chart(survey_data[survey_data['Interested_in_next_level'].notnull()],\n", + " 'Use_freq:_YouTube_recordings_(community_meetings,_SIG/WG_meetings,_etc.)',\n", + " 'Level_of_Contributor',\n", + " use_ratings,\n", + " five_is_high=True) + \n", + " p9.labs(title='Use of YouTube Recordings',\n", + " x='Interest in next level',\n", + " y='Percent',\n", + " fill=\"Frequency\",\n", + " color='Frequency') +\n", + " p9.ylim(-0.75,0.75)\n", + ")\n" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "The one group that does tend to use the YouTube recording, at least a few times a month, are those working on membership. This suggests that the resources available on YouTube are helpful to a subset of the community." + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## Use of Help Wanted Labels" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "help_wanted = survey_data[\n", + " survey_data[\n", + " \"Do_you_use_the\\xa0Help_Wanted_and/or_Good_First_Issue_labels_on_issues_you_file_to_find_contributors\"\n", + " ].isna()\n", + " == False\n", + "]" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "help_plot = (\n", + " p9.ggplot(\n", + " help_wanted,\n", + " p9.aes(\n", + " x=\"Do_you_use_the\\xa0Help_Wanted_and/or_Good_First_Issue_labels_on_issues_you_file_to_find_contributors\",\n", + " fill=\"Do_you_use_the\\xa0Help_Wanted_and/or_Good_First_Issue_labels_on_issues_you_file_to_find_contributors\",\n", + " ),\n", + " )\n", + " + p9.geom_bar(show_legend=False)\n", + " + p9.theme(axis_text_x=p9.element_text(angle=45, ha=\"right\"))\n", + " + p9.labs(\n", + " x=\"Used Label\",\n", + " title=\"Use of Help Wanted and/or Good First Issue Labels\",\n", + " y=\"Count\",\n", + " )\n", + ")\n", + "help_plot" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "A majority of users, across all demographics, make use of the Help Wanted and Good First Issue labels on GitHub." + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "(\n", + " help_plot\n", + " + p9.facet_grid([\"Contributing_Length\", \".\"])\n", + " + p9.theme(\n", + " strip_text_y=p9.element_text(\n", + " angle=0, ha=\"left\", margin={\"r\": 1.2, \"units\": \"in\"}\n", + " )\n", + " )\n", + ")" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "The relative proportions of contributors who use the labels does not change with the length of contribution. The one exception being that very few contributors, who have been doing so for 3+ years, don't use the labels." + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "(\n", + " p9.ggplot(\n", + " help_wanted[help_wanted[\"Interested_in_next_level\"].notnull()],\n", + " p9.aes(\n", + " x=\"Do_you_use_the\\xa0Help_Wanted_and/or_Good_First_Issue_labels_on_issues_you_file_to_find_contributors\",\n", + " fill=\"Do_you_use_the\\xa0Help_Wanted_and/or_Good_First_Issue_labels_on_issues_you_file_to_find_contributors\",\n", + " ),\n", + " )\n", + " + p9.geom_bar(show_legend=False)\n", + " + p9.theme(axis_text_x=p9.element_text(angle=45, ha=\"right\"))\n", + " + p9.labs(\n", + " x=\"Used Label\",\n", + " title=\"Use of Help Wanted and/or Good First Issue Labels\",\n", + " y=\"Count\",\n", + " )\n", + " + p9.facet_grid(\n", + " [\"Interested_in_next_level\", \".\"],\n", + " labeller=lambda label: \"\\n\".join(wrap(label.replace(\"/\", \"/ \").strip(), 20)),\n", + " )\n", + " + p9.theme(\n", + " strip_text_y=p9.element_text(\n", + " angle=0, ha=\"left\", margin={\"r\": 1.2, \"units\": \"in\"}\n", + " )\n", + " )\n", + ")" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "The plot above shows that these labels are especially helpful for those who are interested in the next level of the contributor ladder. " + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "(\n", + " help_plot\n", + " + p9.facet_grid(\n", + " [\"Level_of_Contributor\", \".\"],\n", + " labeller=lambda label: \"\\n\".join(wrap(label.replace(\"/\", \"/ \").strip(), 20)),\n", + " )\n", + " + p9.theme(\n", + " strip_text_y=p9.element_text(\n", + " angle=0, ha=\"left\", margin={\"r\": 1.34, \"units\": \"in\"}\n", + " )\n", + " )\n", + ")" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "When analyzing the help wanted labels across levels of the contributor ladder, most groups do not have a large majority class, indicating that this is not a variable that predicts the usefulness of the labels." + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## Interest in Mentoring" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "available_to_mentor = list(survey_data.columns)[-8]\n", + "mentoring_interest = survey_data[survey_data[available_to_mentor].isna() == False]" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "mentoring_plot = (\n", + " p9.ggplot(\n", + " mentoring_interest, p9.aes(x=available_to_mentor, fill=available_to_mentor)\n", + " )\n", + " + p9.geom_bar(show_legend=False)\n", + " + p9.theme(axis_text_x=p9.element_text(angle=45, ha=\"right\"))\n", + " + p9.labs(x=\"Interest\", title=\"Interest in Mentoring GSOC or Outreach\", y=\"Count\")\n", + " + p9.scale_x_discrete(\n", + " labels=lambda labels_list: [\n", + " \"\\n\".join(wrap(label.replace(\"/\", \"/ \").strip(), 30))\n", + " for label in labels_list\n", + " ]\n", + " )\n", + ")\n", + "mentoring_plot" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "Most contributors feel that they do not have enough experience to mentor others, suggesting that more outreach can be done. This can make all but the newest contributors feel confident that they have something to offer." + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "(\n", + " mentoring_plot\n", + " + p9.facet_grid([\"Upstream_supported_at_employer\", \".\"],\n", + " labeller=lambda label: \"\\n\".join(wrap(label.replace(\"/\", \"/ \").strip(), 20)))\n", + " + p9.theme(strip_text_y=p9.element_text(angle=0, ha=\"left\")) \n", + " + p9.theme(\n", + " strip_text_y=p9.element_text(\n", + " angle=0, ha=\"left\", margin={\"r\": 1.34, \"units\": \"in\"}\n", + " )\n", + " )\n", + ")" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "A majority of those who already mentor, as well as those who are interested in mentoring, have employers that support their work on Kubernetes. Those who have a complicated relationship with their employer are the only group to whom the most common response was not having enough time, or support." + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "(\n", + " mentoring_plot\n", + " + p9.facet_grid(\n", + " [\"Interested_in_next_level\", \".\"],\n", + " labeller=lambda label: \"\\n\".join(wrap(label.replace(\"/\", \"/ \").strip(), 20)),\n", + " )\n", + " + p9.theme(\n", + " strip_text_y=p9.element_text(\n", + " angle=0, ha=\"left\", margin={\"r\": 1.34, \"units\": \"in\"}\n", + " )\n", + " )\n", + ")" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "There is no clear pattern between the interest to mentor and interest in the next contributor level. The only exception is that those who want to mentor feel like they don't know enough to do so." + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## Participation in Meet our Contributors (MoC)" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "moc_participation_name = list(survey_data.columns)[-9]\n", + "moc_data = survey_data[survey_data[moc_participation_name].isna() == False]" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "moc_plot = (\n", + " p9.ggplot(moc_data, p9.aes(x=moc_participation_name, fill=moc_participation_name))\n", + " + p9.geom_bar(show_legend=False)\n", + " + p9.theme(axis_text_x=p9.element_text(angle=45, ha=\"right\"))\n", + " + p9.labs(title=\"Watched or Participated in Meet Our Contributors\", x=\"\", y=\"Count\")\n", + ")\n", + "moc_plot" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "Across all contributors, most do not know about the existence of Meet our Contributors." + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "(\n", + " p9.ggplot(\n", + " moc_data[moc_data[\"Interested_in_next_level\"].notnull()],\n", + " p9.aes(x=moc_participation_name, fill=moc_participation_name),\n", + " )\n", + " + p9.geom_bar(show_legend=False)\n", + " + p9.facet_grid(\n", + " [\"Interested_in_next_level\", \".\"],\n", + " labeller=lambda label: \"\\n\".join(wrap(label.replace(\"/\", \"/ \").strip(), 20)),\n", + " )\n", + " + p9.theme(\n", + " strip_text_y=p9.element_text(\n", + " angle=0, ha=\"left\", margin={\"r\": 1.3, \"units\": \"in\"}\n", + " ),\n", + " axis_text_x=p9.element_text(angle=45, ha=\"right\"),\n", + " )\n", + " + p9.labs(\n", + " x=\"Watched MoC\",\n", + " title=\"Interest in next Level of the Contributor Ladder\\n compared to MoC Use\",\n", + " )\n", + ")" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "Among all contributors who are interested in the next level of the ladder, most do still not know about MoC. This suggests a larger outreach would be useful, as most who do watch find it helpful." + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "(\n", + " moc_plot\n", + " + p9.facet_grid(\n", + " [\"Level_of_Contributor\", \".\"],\n", + " labeller=lambda label: \"\\n\".join(wrap(label.replace(\"/\", \"/ \").strip(), 20)),\n", + " )\n", + " + p9.theme(\n", + " strip_text_y=p9.element_text(\n", + " angle=0, ha=\"left\", margin={\"r\": 1.34, \"units\": \"in\"}\n", + " )\n", + " )\n", + ")" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "As before, across all cohorts of contributor levels, most do not know about MoC. But, for those who do watch it, they find it helpful. The only levels where more contributors know of it, compared to those that don't, are subproject owners and approvers.\n", + "\n", + "In the next series of plots, we analyze only those contributors who do not know about MoC. " + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "(\n", + " p9.ggplot(\n", + " moc_data[moc_data['Interested_in_next_level'].notnull() & \n", + " (moc_data[moc_participation_name] == \"no - didn't know this was a thing\")],\n", + " p9.aes(x='Interested_in_next_level', fill='Interested_in_next_level')) \n", + " + p9.geom_bar(show_legend=False) \n", + " + p9.facet_grid(\n", + " ['Level_of_Contributor','.'],\n", + " labeller=lambda label: \"\\n\".join(wrap(label.replace(\"/\", \"/ \").strip(), 20))\n", + " ) \n", + " + p9.theme(\n", + " strip_text_y = p9.element_text(\n", + " angle=0,ha='left',margin={\"r\": 1.3, \"units\": \"in\"}\n", + " ),\n", + " axis_text_x = p9.element_text(angle=45,ha='right')\n", + " ) \n", + " + p9.labs(\n", + " x = 'Interested in Next Level',\n", + " y = \"Count\", \n", + " title = \"Contributors who don't know about MoC\")\n", + ")\n" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "Across all levels of the contributor ladder, many who are interested in the next level do not know about the existence of MoC. " + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "(\n", + " p9.ggplot(\n", + " moc_data[\n", + " (moc_data[moc_participation_name] == \"no - didn't know this was a thing\")\n", + " ],\n", + " p9.aes(x=\"Contributing_Length\", fill=\"Contributing_Length\"),\n", + " )\n", + " + p9.geom_bar(show_legend=False)\n", + " + p9.facet_grid(\n", + " [\"Level_of_Contributor\", \".\"],\n", + " labeller=lambda label: \"\\n\".join(wrap(label.replace(\"/\", \"/ \").strip(), 20)),\n", + " )\n", + " + p9.theme(\n", + " strip_text_y=p9.element_text(\n", + " angle=0, ha=\"left\", margin={\"r\": 1.34, \"units\": \"in\"}\n", + " ),\n", + " axis_text_x=p9.element_text(angle=45, ha=\"right\"),\n", + " )\n", + " + p9.labs(\n", + " x=\"Length of Contribution\",\n", + " y=\"Count\",\n", + " title=\"Contributors who don't know about MoC\",\n", + " )\n", + ")" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "The plot above shows that a majority of those unaware, have not been contributors for very long. This is regardless of their level on the contributor ladder." + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "(\n", + " p9.ggplot(\n", + " moc_data[\n", + " moc_data[\"Interested_in_next_level\"].notnull()\n", + " & (moc_data[moc_participation_name] == \"yes - it was helpful\")\n", + " ],\n", + " p9.aes(x=\"Interested_in_next_level\", fill=\"Interested_in_next_level\"),\n", + " )\n", + " + p9.geom_bar(show_legend=False)\n", + " + p9.facet_grid(\n", + " [\"Level_of_Contributor\", \".\"],\n", + " labeller=lambda label: \"\\n\".join(wrap(label.replace(\"/\", \"/ \").strip(), 20)),\n", + " )\n", + " + p9.theme(\n", + " strip_text_y=p9.element_text(\n", + " angle=0, ha=\"left\", margin={\"r\": 1.34, \"units\": \"in\"}\n", + " ),\n", + " axis_text_x=p9.element_text(angle=45, ha=\"right\"),\n", + " )\n", + " + p9.labs(\n", + " x=\"Interested in Next Level\",\n", + " y=\"Count\",\n", + " title=\"Contributors who watched or participated in \\n MoC and found it helpful\",\n", + " )\n", + " + p9.ylim(0, 15) # Make the same scale as those who don't find it helpful\n", + ")" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "The plot above shows that MoC is found useful by those who watch it. This is the case for those who have either attained the highest level on the ladder, or are interested in the next level. This holds true across all levels of the ladder. This suggests that MoC should not only cover information helpful to those trying to become members, but also those who wish to become approvers, reviewers, and subproject owners. " + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "(\n", + " p9.ggplot(\n", + " moc_data[(moc_data[moc_participation_name] == \"yes - it was helpful\")],\n", + " p9.aes(x=\"Contributing_Length\", fill=\"Contributing_Length\"),\n", + " )\n", + " + p9.geom_bar(show_legend=False)\n", + " + p9.facet_grid(\n", + " [\"Level_of_Contributor\", \".\"],\n", + " labeller=lambda label: \"\\n\".join(wrap(label.replace(\"/\", \"/ \").strip(), 20)),\n", + " )\n", + " + p9.theme(\n", + " strip_text_y=p9.element_text(\n", + " angle=0, ha=\"left\", margin={\"r\": 1.34, \"units\": \"in\"}\n", + " ),\n", + " axis_text_x=p9.element_text(angle=45, ha=\"right\"),\n", + " )\n", + " + p9.labs(\n", + " x=\"Length of Contribution\",\n", + " y=\"Count\",\n", + " title=\"Contributors who watched or participated in \\n MoC and found it helpful\",\n", + " )\n", + " + p9.ylim(0, 25) # Make the same scale as those who don't find it helpful\n", + ")" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "The majority of those who found MoC useful are contributors who are working towards their membership. This is suggesting that while most of the material might be geared towards them, the previous plot shows the importance of striking a balance between the two." + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## Ways to Increase Attendance at Thursday Meetings" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": { + "scrolled": false + }, + "outputs": [], + "source": [ + "(\n", + " make_bar_chart(survey_data, \"Would_attend_if:\")\n", + " + p9.labs(x=\"Change\", y=\"Count\", title=\"Would attend if\")\n", + ")" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "The primary reason contributors don't attend Thursday meetings is that they have too many meetings in their personal lives. As this is not something the Kubernetes community can control, we suggest they focus on the second most common suggestion: distributing a full agenda prior to the meeting. " + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "(\n", + " make_bar_chart(\n", + " survey_data,\n", + " \"Would_attend_if:\",\n", + " [\".\", \"Level_of_Contributor\"],\n", + " proportional=True,\n", + " )\n", + " + p9.labs(x=\"Change\", y=\"Count\", title=\"Would attend if\", fill=\"Change\")\n", + " + p9.theme(\n", + " strip_text_y=p9.element_text(angle=0, ha=\"left\", margin={\"r\": 1, \"units\": \"in\"})\n", + " )\n", + ")" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "Across contributor levels, the dominant reason for their attendance would be \"fewer meetings in my personal schedule\". What is interesting is that for those who are not yet members, it is less of a dominating reason than other cohorts. These contributors give almost equal weight to many different changes, some of which may be appropriate to the Thursday meeting, but some of which may indicate the need for new types of outreach programming." + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "(\n", + " make_bar_chart(\n", + " survey_data, \"Would_attend_if:\", [\".\", \"Contributing_Length\"], proportional=True\n", + " )\n", + " + p9.labs(x=\"Change\", y=\"Count\", title=\"Would attend if\", fill='Reason')\n", + " + p9.theme(\n", + " strip_text_y=p9.element_text(angle=0, ha=\"left\", margin={\"r\": 1, \"units\": \"in\"})\n", + " )\n", + ")" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "Segmenting the contributors, by their length of contribution, does not reveal any patterns that are widely different than when looking at all the contributors as a whole." + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "(\n", + " make_single_bar_chart(survey_data[survey_data['World_Region'].notnull()],\n", + " 'Would_attend_if:_Different_timeslot_for_the_meeting', \n", + " 'World_Region',\n", + " proportionally=True\n", + " ) + \n", + " p9.labs(x='Change',\n", + " y='Count',\n", + " title=\"Would attend if\")\n", + ")" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "When looking at the distribution of contributors, who would attend the meetings if they were held at a different time, we can see a large impact that location has. While the number of contributors located in Oceania and Africa is small, it makes forming significant conclusions more difficult. There are many contributors from Asia, indicating that the timing of the meetings is a major barrier to a large portion. This is simply because of the timezones they live in." + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## Reasons for Not Attending Summits" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "unattendance_str = \"If_you_haven't_been_able_to_attend_a_previous_summit,_was_there_a_primary_reason_why_(if_multiple,_list_the_leading_reason)\"\n", + "unattendance_data = survey_data.dropna(subset=[unattendance_str])" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "reason_for_not_going = (\n", + " p9.ggplot(unattendance_data, p9.aes(x=unattendance_str))\n", + " + p9.geom_bar()\n", + " + p9.theme(axis_text_x=p9.element_text(angle=45, ha=\"right\"))\n", + " + p9.labs(\n", + " title=\"Reasons for not attending summits\",\n", + " y=\"Number of Contributors\",\n", + " x=\"Reason\",\n", + " )\n", + ")\n", + "reason_for_not_going" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "The largest reason for not attending the summits is that contributors feel they do not have enough funding to attend." + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "unattendance_contrib = (\n", + " unattendance_data.groupby([\"Contributing_Length\", unattendance_str])\n", + " .count()[\"Respondent_ID\"]\n", + " .reset_index()\n", + " .merge(\n", + " unattendance_data.groupby([\"Contributing_Length\"])\n", + " .count()[\"Respondent_ID\"]\n", + " .reset_index(),\n", + " on=\"Contributing_Length\",\n", + " )\n", + ")\n", + "unattendance_contrib = unattendance_contrib.assign(\n", + " percent=unattendance_contrib.Respondent_ID_x / unattendance_contrib.Respondent_ID_y\n", + ")" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "(\n", + " p9.ggplot(unattendance_contrib,\n", + " p9.aes(x=unattendance_str,y='percent',fill='Contributing_Length')) +\n", + " p9.geom_bar(stat='identity',position='dodge') +\n", + " p9.theme(axis_text_x = p9.element_text(angle=45,ha='right')) + \n", + " p9.labs(title=\"Reasons for not attending summits\",\n", + " y = \"Proportion of Contributors\",\n", + " x= 'Reason',\n", + " fill=\"Contributing Length\") \n", + ")\n" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "When we look at the reasons for not attending the summits dependent the length of time a contributor has been involved with the project, we see that in addition to lacking funding, the longer tenured contributors tend to help at other events co-located with KubeCon even during the summits." + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "unattendance_level = unattendance_data.groupby(['Level_of_Contributor',unattendance_str]).count()['Respondent_ID'].reset_index().merge(unattendance_data.groupby(['Level_of_Contributor']).count()['Respondent_ID'].reset_index(), on = 'Level_of_Contributor')\n", + "unattendance_level = unattendance_level.assign(percent = unattendance_level.Respondent_ID_x/unattendance_level.Respondent_ID_y)\n", + "\n", + "(\n", + " p9.ggplot(unattendance_level,\n", + " p9.aes(x=unattendance_str,y='percent',fill='Level_of_Contributor')) +\n", + " p9.geom_bar(stat='identity',position=p9.position_dodge(preserve='single')) +\n", + " p9.theme(axis_text_x = p9.element_text(angle=45,ha='right')) + \n", + " p9.labs(title=\"Reasons for not attending summits\",\n", + " y = \"Number of Contributors\",\n", + " x= 'Reason',\n", + " fill= 'Level of Contributor') \n", + ")\n", + "\n" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "As with above, the higher up the ladder one is, the more likely the are to be helping out at another event. Interestingly, while approvers are higher on the ladder than reviewers, they are less likely to be attending KubeCon, as well as the summits." + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "unattendance_support = (\n", + " unattendance_data.groupby([\"Upstream_supported_at_employer\", unattendance_str])\n", + " .count()[\"Respondent_ID\"]\n", + " .reset_index()\n", + " .merge(\n", + " unattendance_data.groupby([\"Upstream_supported_at_employer\"])\n", + " .count()[\"Respondent_ID\"]\n", + " .reset_index(),\n", + " on=\"Upstream_supported_at_employer\",\n", + " )\n", + ")\n", + "unattendance_support = unattendance_support.assign(\n", + " percent=unattendance_support.Respondent_ID_x / unattendance_support.Respondent_ID_y\n", + ")\n", + "\n", + "(\n", + " p9.ggplot(\n", + " unattendance_support,\n", + " p9.aes(x=unattendance_str, y=\"percent\", fill=\"Upstream_supported_at_employer\"),\n", + " )\n", + " + p9.geom_bar(stat=\"identity\", position=p9.position_dodge(preserve=\"single\"))\n", + " + p9.theme(axis_text_x=p9.element_text(angle=45, ha=\"right\"))\n", + " + p9.labs(\n", + " title=\"Reasons for not attending summits\",\n", + " y=\"Number of Contributors\",\n", + " x=\"Reason\",\n", + " fill='Employer Support'\n", + " )\n", + ")" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "Unsurprisingly, funding is a greater barrier to attendance to those who only work on Kubernetes on their own time, but is still a concern for about a third of those with some support from their employer." + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## Agreement with Statements" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "agree_ratings = [\"Strongly Disgree\", \"Disagree\", \"Neutral\", \"Agree\", \"Strongly Agree\"]\n", + "(\n", + " make_likert_chart(survey_data, \"Agree:\", agree_ratings, max_is_high=True)\n", + " + p9.labs(x=\"Statement\", y=\"Number of Responses\", fill=\"Rating\", color=\"Rating\")\n", + ")" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "Overall, the plot above displays the proportions one would hope to see. Many contributors are confident in their ability to understand continuous integration, and the related error messages enough to debug their code, while not feeling overburdened by test failures or notifications." + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "(\n", + " make_likert_chart(\n", + " survey_data[survey_data[\"Blocker:_Debugging_test_failures\"] > 3],\n", + " \"Agree:\",\n", + " agree_ratings,\n", + " max_is_high=True,\n", + " )\n", + " + p9.labs(x=\"Statement\", y=\"Number of Responses\", fill=\"Rating\", color=\"Rating\")\n", + ")" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "For those contributors who reported that debugging test failures is often or frequently a blocker, we see that the numbers are lower for those who understand CI and it's error messages in a broken PR. This is suggesting that if these areas were improved, less contributors would find debugging test failures to be a major blocker. On the other hand, it may suggest that there is no need to improve these tools, just more of an effort to educate about them. This is an area that could be investigated in future surveys, to best determine how to make debugging less of a blocker." + ] + } + ], + "metadata": { + "kernelspec": { + "display_name": "Python 3", + "language": "python", + "name": "python3" + }, + "language_info": { + "codemirror_mode": { + "name": "ipython", + "version": 3 + }, + "file_extension": ".py", + "mimetype": "text/x-python", + "name": "python", + "nbconvert_exporter": "python", + "pygments_lexer": "ipython3", + "version": "3.7.3" + } + }, + "nbformat": 4, + "nbformat_minor": 2 +} diff --git a/sig-contributor-experience/surveys/2019/contribex-survey-2019.csv b/sig-contributor-experience/surveys/2019/contribex-survey-2019.csv new file mode 100644 index 00000000..dcbdf43a --- /dev/null +++ b/sig-contributor-experience/surveys/2019/contribex-survey-2019.csv @@ -0,0 +1,213 @@ +Respondent ID,Collector ID,Start Date,End Date,IP Address,Email Address,First Name,Last Name,Custom Data 1,How long have you been contributing to Kubernetes?,What level of the Contributor Ladder do you consider yourself to be on? (pick the highest if you are in multiple OWNERs files),Are you interested in advancing to the next level of the Contributor Ladder?,What region of the world are you in?,"How many other open source projects not in the Kubernetes ecosystem do you contribute to? (example: nodejs, debian)",Please rate any challenges to the listed steps of the contribution process,,,,,,,,,,,"Do you agree with the following statements (1 - strongly disagree, 5 - strongly agree):",,,,Does your employer support your contributions to Kubernetes?,"How often do you contribute upstream (code, docs, issue triage, etc.)?",What areas of Kubernetes do you contribute to? Please check all that apply.,,,,,,,,,,Are there specific ways the project could make contributing easier for you?,How often did you attend the weekly Thursday community meeting live? (PS - We're moving to a different cadence! Check kubernetes-dev@ mailing list for more!),Which of the below would make you likely to attend more of the Community Meetings? Check all that apply.,,,,,,,,"Some of the major projects SIG Contributor Experience is working on are listed below, rank the ones that are most important to you (and/or your SIG)",,,,,,,What is missing from that list entirely that's important to you/your SIG? Why?,"Of our various communications channels, please rate which ones you use and/or check most frequently on a 1-5 scale, where 1 is “never”, 3 is “several times a month” and 5 is “every day”.",,,,,,,,"Which of these channels is most likely to reach you first for news about decisions, changes, additions, and/or announcements to the contributor process or community matters?",,,,,,,,Do you use the Help Wanted and/or Good First Issue labels on issues you file to find contributors?,"Have you watched or participated in an episode of our YouTube mentoring series Meet Our Contributors? If you have specific suggestions, leave them at the end of the survey.","Are you available to mentor other Kubernetes contributors through one or more of our many mentorship programs? (ps - our program list includes 1:1, group, and many other kinds of opportunities)",How many Kubernetes Contributor Summits have you attended?,"If you haven't been able to attend a previous summit, was there a primary reason why? (if multiple, list the leading reason)",,,,
+,,,,,,,,,Response,Response,Response,Response,Response,Code/Documentation review,Communication,GitHub tools and processes (not our customized tooling),Finding the right SIG for your contributions,"Our CI, labels, and crafted customized automation",Debugging test failures,Finding appropriate issues to work on,Setting up development environment,Having PRs rejected,Writing documentation and notes,Other (please specify),"""I understand enough about how Kubernetes CI works to be able to diagnose my own PR failures""","""When something is broken in my PR, I can read the comments from CI and understand why""","""The number of test failures unrelated to my PR severely impacts my ability or desire to contribute""","""There are too many notifications to be helpful when I open a PR""",Response,Response,Core code inside of kubernetes/kubernetes,"Code inside of another repo in the Kubernetes GitHub Org (example: /kubernetes-sigs, kubernetes/website, etc)",Documentation,Testing & Infrastructure,Community & Project management; SIG Chair etc.,"Plugins & Drivers (CSI, CNI, cloud providers)","Related projects (Helm, container runtimes, other CNCF projects, etc.)","Don’t contribute yet, hoping to start soon",Release,Other (please specify),Open-Ended Response,Response,"Nothing, I attend and think they are great",Having a full agenda with descriptions posted several days ahead,Eliminating the demo at the beginning,Additional developer tips/news content,Using the meeting to discuss project-wide development topics & roadblocks,Fewer meetings in my personal schedule,Different timeslot for the meeting,Other (please specify),Mentoring programs for all contributor levels/roles (https://git.k8s.io/community/community-membership.md),GitHub Management,Delivering valuable contributor summits at relevant events,"Governance operations (youtube, zoom, etc.)",Keeping our community safe on our various communication platforms through moderation guidelines and new approaches,Cleaning up OWNERs files,"Contributor Documentation (guide, noncode guide, developer guide, contributor site)",Open-Ended Response,Google Groups/Mailing Lists,Slack,discuss.kubernetes.io,Zoom video conferencing/meetings,Discussions on Github Issues and PRs,"Unofficial channels (IRC, WeChat, etc.)","YouTube recordings (community meetings, SIG/WG meetings, etc.)","Google Docs/Forms/Sheets, etc (meeting agendas, etc)",kubernetes-dev@ mailing list,Dedicated discuss.k8s.io forum for contributors,kubernetes-sig-contribex@ mailing list,"#kubernetes-dev, #sig-foo, #sig-contribex slack",@kubernetesio twitter,Kubernetes blog,kubernetes/community repo in GitHub (Issues and/or PRs),Other (please specify),Response,Response,Response,Response,Response,Other (please specify),,,
+11280740320,252143207,01/17/2020 12:30:48 AM,01/17/2020 12:39:43 AM,199.241.143.78,,,,,one to two years,not yet a member but working on it,if I had help/mentoring/support,Asia,2 or more,3,3,2,2,2,4,3,2,2,2,,4,4,3,3,"no, I need to use my own time",every day,,"Code inside of another repo in the Kubernetes GitHub Org (example: /kubernetes-sigs, kubernetes/website, etc)",Documentation,,,"Plugins & Drivers (CSI, CNI, cloud providers)","Related projects (Helm, container runtimes, other CNCF projects, etc.)",,,,"Yes, with the help of mentors.",never,,,,Additional developer tips/news content,Using the meeting to discuss project-wide development topics & roadblocks,,Different timeslot for the meeting,,1,4,2,3,5,6,7,None,2,2,1: never,1: never,5: everyday,1: never,1: never,1: never,,,,"#kubernetes-dev, #sig-foo, #sig-contribex slack",,Kubernetes blog,kubernetes/community repo in GitHub (Issues and/or PRs),,Yes,no - didn't know this was a thing,I'm inexperienced and don't know enough to mentor,0,"Funding (no work support, or cannot afford to individually go)",,,,
+11280186427,252143207,01/16/2020 2:26:37 PM,01/16/2020 4:34:39 PM,104.133.8.94,,,,,three+ years,subproject owner,"no, already a subproject owner (highest level on the ladder)",North America,2 or more,3,2,4,2,2,5: the most challenging part,4,3,1: not challenging at all,4,,3,3,3,2,"yes, I can contribute on company time",several times a week,Core code inside of kubernetes/kubernetes,"Code inside of another repo in the Kubernetes GitHub Org (example: /kubernetes-sigs, kubernetes/website, etc)",Documentation,Testing & Infrastructure,Community & Project management; SIG Chair etc.,"Plugins & Drivers (CSI, CNI, cloud providers)",,,,,,few times a year,,,,,,Fewer meetings in my personal schedule,,,4,1,5,6,7,2,3,,4,3: several times a month,2,4,5: everyday,1: never,1: never,4,kubernetes-dev@ mailing list,,,,,,,,Yes,"no - i don't need mentoring, guidance, or other resources",I would like to but I don't have the time / employer doesn't support it,3+,,,,,
+11280130504,252143207,01/16/2020 3:45:48 PM,01/16/2020 3:57:51 PM,174.19.21.82,,,,,three+ years,there's a contributor ladder?,yes,North America,2 or more,5: the most challenging part,3,1: not challenging at all,2,2,2,2,4,1: not challenging at all,2,,4,4,2,2,"yes, I can contribute on company time",a few times a year,Core code inside of kubernetes/kubernetes,,,,,,"Related projects (Helm, container runtimes, other CNCF projects, etc.)",,,,,never,,Having a full agenda with descriptions posted several days ahead,,,,,,,3,4,5,2,7,6,1,,3: several times a month,3: several times a month,1: never,3: several times a month,4,1: never,2,3: several times a month,,,,,,,,,No,no - didn't know this was a thing,I'm inexperienced and don't know enough to mentor,0,Not attending KubeCon,,,,
+11279973534,252143207,01/16/2020 2:18:10 PM,01/16/2020 2:28:13 PM,93.176.148.191,,,,,one to two years,there's a contributor ladder?,if I had help/mentoring/support,Europe,2 or more,2,3,2,4,2,5: the most challenging part,5: the most challenging part,3,2,2,Time to receive feedback is so long it can be extremely challenging to keep up.,4,4,3,4,"no, I need to use my own time",a few times a year,Core code inside of kubernetes/kubernetes,,,,,,"Related projects (Helm, container runtimes, other CNCF projects, etc.)",,,Triage and code review,Faster feedback and merging earlier. Months to get a review of trivial changes is extremely demotivational.,never,,Having a full agenda with descriptions posted several days ahead,,,,Fewer meetings in my personal schedule,,,2,5,6,7,3,4,1,,5: everyday,1: never,3: several times a month,2,4,1: never,1: never,3: several times a month,kubernetes-dev@ mailing list,,,,,,,,No,no - didn't know this was a thing,I'm inexperienced and don't know enough to mentor,1,,,,,
+11279785015,252143207,01/16/2020 12:57:28 PM,01/16/2020 1:03:53 PM,109.220.232.20,,,,,one to two years,not yet a member but working on it,if I had help/mentoring/support,Europe,1 other,1: not challenging at all,5: the most challenging part,1: not challenging at all,2,2,3,3,2,1: not challenging at all,1: not challenging at all,,4,4,2,4,"yes, I can contribute on company time",a few times a year,,,Documentation,,,,,,,,,never,,,,,,Fewer meetings in my personal schedule,,,1,7,6,5,3,4,2,,4,5: everyday,1: never,3: several times a month,4,2,3: several times a month,3: several times a month,,,,"#kubernetes-dev, #sig-foo, #sig-contribex slack",,,kubernetes/community repo in GitHub (Issues and/or PRs),,Yes,no - didn't know this was a thing,I'm inexperienced and don't know enough to mentor,3+,,,,,
+11279752939,252143207,01/16/2020 12:42:03 PM,01/16/2020 12:51:05 PM,104.133.8.94,,,,,two to three years,subproject owner,"no, already a subproject owner (highest level on the ladder)",North America,2 or more,2,2,1: not challenging at all,1: not challenging at all,2,3,3,3,2,2,,5: strongly agree,4,3,3,"yes, I can contribute on company time",every day,Core code inside of kubernetes/kubernetes,"Code inside of another repo in the Kubernetes GitHub Org (example: /kubernetes-sigs, kubernetes/website, etc)",Documentation,Testing & Infrastructure,Community & Project management; SIG Chair etc.,,"Related projects (Helm, container runtimes, other CNCF projects, etc.)",,Release,,,never,,,,,,,,"with the move a monthly meeting, I will be attending",5,2,3,1,6,7,4,,5: everyday,5: everyday,2,4,5: everyday,1: never,2,4,kubernetes-dev@ mailing list,,,"#kubernetes-dev, #sig-foo, #sig-contribex slack",,,,,No,no - didn't know this was a thing,"Yes, please contact me (you'll include your email in the last question)",3+,,,,,
+11279592510,252143207,01/16/2020 11:24:00 AM,01/16/2020 11:47:49 AM,66.187.233.202,,,,,three+ years,subproject owner,"no, already a subproject owner (highest level on the ladder)",North America,1 other,2,1: not challenging at all,1: not challenging at all,1: not challenging at all,1: not challenging at all,3,2,1: not challenging at all,1: not challenging at all,3,,4,5: strongly agree,1: strongly disagree,1: strongly disagree,"yes, I can contribute on company time",several times a week,Core code inside of kubernetes/kubernetes,"Code inside of another repo in the Kubernetes GitHub Org (example: /kubernetes-sigs, kubernetes/website, etc)",Documentation,,Community & Project management; SIG Chair etc.,,,,,,no,few times a year,,,,,Using the meeting to discuss project-wide development topics & roadblocks,,,,,,,,,,,,4,5: everyday,1: never,4,5: everyday,1: never,1: never,4,kubernetes-dev@ mailing list,,,,,,,,No,"no - i don't need mentoring, guidance, or other resources",I would like to but I don't have the time / employer doesn't support it,2,Helping at other co-located event,,,,
+11279587620,252143207,01/16/2020 11:24:58 AM,01/16/2020 11:45:38 AM,161.129.224.40,,,,,three+ years,reviewer,if I had more free time,North America,this is my first open source project!,2,,2,1: not challenging at all,2,3,1: not challenging at all,2,,,too much time spent retesting due to issues NOT related to my PR,2,2,5: strongly agree,2,"yes, I can contribute on company time",a few times a year,,"Code inside of another repo in the Kubernetes GitHub Org (example: /kubernetes-sigs, kubernetes/website, etc)",Documentation,Testing & Infrastructure,,,,,,,,never,,Having a full agenda with descriptions posted several days ahead,,Additional developer tips/news content,,Fewer meetings in my personal schedule,,,2,5,,,1,4,3,,2,2,,3: several times a month,4,1: never,2,3: several times a month,kubernetes-dev@ mailing list,,,,,,,,Rarely (for reasons),no - didn't know this was a thing,I would like to but I don't have the time / employer doesn't support it,2,Helping at other co-located event,,,,
+11279569584,252143207,01/16/2020 11:33:32 AM,01/16/2020 11:38:42 AM,66.187.233.206,,,,,one to two years,member,if I had more free time,North America,2 or more,3,2,2,3,4,5: the most challenging part,3,3,2,2,,1: strongly disagree,1: strongly disagree,1: strongly disagree,2,"yes, I can contribute on company time",several times a month,Core code inside of kubernetes/kubernetes,,,,,,,,,,,never,,,,,,Fewer meetings in my personal schedule,,,3,2,,,,,1,,3: several times a month,4,1: never,4,4,1: never,2,2,kubernetes-dev@ mailing list,,,,,,,,Rarely (for reasons),no - didn't know this was a thing,I would like to but I don't have the time / employer doesn't support it,0,Other (please specify),don't much like travel,,,
+11279476512,252143207,01/16/2020 10:53:41 AM,01/16/2020 11:03:20 AM,104.132.166.68,,,,,one to two years,member,no,North America,this is my first open source project!,5: the most challenging part,2,1: not challenging at all,1: not challenging at all,1: not challenging at all,4,1: not challenging at all,2,1: not challenging at all,1: not challenging at all,Getting auto-assigned reviewers/approvers to look at your PR is a huuuuuge hassle.,3,1: strongly disagree,5: strongly agree,3,"yes, I can contribute on company time",several times a month,,"Code inside of another repo in the Kubernetes GitHub Org (example: /kubernetes-sigs, kubernetes/website, etc)",,Testing & Infrastructure,,"Plugins & Drivers (CSI, CNI, cloud providers)",,,,,"Fix flaky presubmit tests. Find a way to reduce the time from reviewer assignment to actual review - it usually takes days at least and weeks at worst, and it's uncomfortable to nag reviewers who I don't know.",never,,Having a full agenda with descriptions posted several days ahead,,,,,,,4,5,7,6,2,1,3,,4,4,1: never,2,3: several times a month,1: never,2,3: several times a month,,,,,,,,Slack channel for my SIG,No,"no - i don't need mentoring, guidance, or other resources",I'm inexperienced and don't know enough to mentor,0,Not attending KubeCon,,,,
+11279432221,252143207,01/16/2020 10:34:53 AM,01/16/2020 10:46:19 AM,176.63.2.90,,,,,two to three years,not yet a member but working on it,if I had help/mentoring/support,North America,2 or more,4,1: not challenging at all,2,3,3,4,4,5: the most challenging part,3,3,,1: strongly disagree,3,4,4,it's complicated.,a few times a year,,,,,Community & Project management; SIG Chair etc.,,"Related projects (Helm, container runtimes, other CNCF projects, etc.)",,,prometheus-operator and surrounding ecosystems,the first contribution is very hard and the information is scattered in different places. If I hadn't ask for help I would not have been able.,few times a year,,Having a full agenda with descriptions posted several days ahead,,Additional developer tips/news content,,Fewer meetings in my personal schedule,,,2,3,5,4,6,7,1,,3: several times a month,5: everyday,2,2,4,1: never,3: several times a month,3: several times a month,kubernetes-dev@ mailing list,,,,,Kubernetes blog,,,No,no - didn't know this was a thing,I'm inexperienced and don't know enough to mentor,0,Other (please specify),the events adjacent to KubeCon were announced too late/after travel was arranged,,,
+11279421736,252143207,01/16/2020 10:34:49 AM,01/16/2020 10:42:08 AM,85.222.70.18,,,,,three+ years,subproject owner,if I had more free time,Europe,2 or more,1: not challenging at all,1: not challenging at all,1: not challenging at all,2,1: not challenging at all,2,2,2,1: not challenging at all,2,,3,4,3,2,"yes, I can contribute on company time",a few times a year,,,,Testing & Infrastructure,,,,,,,,try to make it to all of them (3-4 a month),"Nothing, I attend and think they are great",,,,,Fewer meetings in my personal schedule,,,1,3,2,,,,,,2,5: everyday,2,4,4,2,2,3: several times a month,,,,"#kubernetes-dev, #sig-foo, #sig-contribex slack",,,kubernetes/community repo in GitHub (Issues and/or PRs),,No,yes - it was helpful,I would like to but I don't have the time / employer doesn't support it,1,Other (please specify),arrived too late = 1st day of KC,,,
+11279197298,252143207,01/16/2020 9:13:37 AM,01/16/2020 9:18:15 AM,46.114.38.162,,,,,one to two years,member,if I had help/mentoring/support,Europe,this is my first open source project!,2,4,1: not challenging at all,1: not challenging at all,1: not challenging at all,4,5: the most challenging part,3,2,2,,3,4,2,2,"yes, I can contribute on company time",several times a month,,"Code inside of another repo in the Kubernetes GitHub Org (example: /kubernetes-sigs, kubernetes/website, etc)",Documentation,,,,"Related projects (Helm, container runtimes, other CNCF projects, etc.)",,,,,few times a year,,,,,,,,,1,3,4,5,6,7,2,,5: everyday,4,1: never,2,4,1: never,2,3: several times a month,kubernetes-dev@ mailing list,,kubernetes-sig-contribex@ mailing list,,,,,,No,yes - it was helpful,I'm inexperienced and don't know enough to mentor,1,,,,,
+11278967531,252143207,01/16/2020 7:45:48 AM,01/16/2020 7:55:54 AM,82.54.213.197,,,,,less than one year,not yet a member but working on it,yes,Europe,1 other,1: not challenging at all,1: not challenging at all,1: not challenging at all,3,4,4,4,1: not challenging at all,1: not challenging at all,3,,5: strongly agree,5: strongly agree,2,1: strongly disagree,"yes, I can contribute on company time",several times a month,,,Documentation,Testing & Infrastructure,Community & Project management; SIG Chair etc.,,"Related projects (Helm, container runtimes, other CNCF projects, etc.)",,,,Would say no,"rarely, but I frequently watch the video and/or read the notes",,,,,,Fewer meetings in my personal schedule,Different timeslot for the meeting,,1,5,4,3,6,7,2,Nothing,2,4,2,4,3: several times a month,1: never,5: everyday,4,,,,"#kubernetes-dev, #sig-foo, #sig-contribex slack",,Kubernetes blog,,,Yes,yes - it was helpful,"Yes, please contact me (you'll include your email in the last question)",0,Attending other conference,,,,
+11278334827,252143207,01/16/2020 2:21:47 AM,01/16/2020 3:04:26 AM,129.205.113.206,,,,,less than one year,not yet a member but working on it,yes,Africa,this is my first open source project!,1: not challenging at all,1: not challenging at all,2,2,,,3,2,,2,,2,,,2,"no, I need to use my own time",several times a week,,,Documentation,,,,,"Don’t contribute yet, hoping to start soon",,,"Yes, I think Lead of SIGs should have a mandatory on-boarding videos and resources for shadow to watch to understand what is expected of them as they are invited for contribution. This will make contribution so easy for new comers. Process of growing up in the ecosystem should be very clearly articulated for each one to understand.",try to make it to all of them (3-4 a month),,Having a full agenda with descriptions posted several days ahead,,,Using the meeting to discuss project-wide development topics & roadblocks,Fewer meetings in my personal schedule,,,1,4,7,5,6,3,2,,4,5: everyday,2,4,3: several times a month,1: never,4,3: several times a month,kubernetes-dev@ mailing list,,,"#kubernetes-dev, #sig-foo, #sig-contribex slack",@kubernetesio twitter,,,,Rarely (for reasons),yes - it was helpful,I would like to but I don't have the time / employer doesn't support it,0,"Funding (no work support, or cannot afford to individually go)",,,,
+11278320285,252143207,01/16/2020 2:48:32 AM,01/16/2020 2:54:40 AM,93.35.144.159,,,,,two to three years,reviewer,yes,Europe,2 or more,4,4,4,4,2,3,5: the most challenging part,1: not challenging at all,2,3,,3,3,2,2,"yes, I can contribute on company time",a few times a year,,,,,,,,,Release,,,once a month,"Nothing, I attend and think they are great",,,,,,,,1,2,4,6,3,7,5,,3: several times a month,2,1: never,4,5: everyday,1: never,1: never,4,kubernetes-dev@ mailing list,,,,,,kubernetes/community repo in GitHub (Issues and/or PRs),Please enable the wee-chat integration on Slack!!!!! It will help me better follow discussion there!,,no - didn't know this was a thing,I'm inexperienced and don't know enough to mentor,1,,,,,
+11277933031,252143207,01/15/2020 9:36:06 PM,01/15/2020 9:47:45 PM,159.153.218.10,,,,,one to two years,reviewer,if I had more free time,Asia,2 or more,4,3,3,4,4,4,4,3,4,4,,4,4,3,4,"no, I need to use my own time",several times a month,,,Documentation,,Community & Project management; SIG Chair etc.,,"Related projects (Helm, container runtimes, other CNCF projects, etc.)",,,,more kinder open source contributers,"rarely, but I frequently watch the video and/or read the notes",,Having a full agenda with descriptions posted several days ahead,,Additional developer tips/news content,,,,,,,,,4,3,7,,4,4,2,4,4,4,4,2,kubernetes-dev@ mailing list,,,,,,kubernetes/community repo in GitHub (Issues and/or PRs),,Yes,no - didn't know this was a thing,I would like to but I don't have the time / employer doesn't support it,0,Not attending KubeCon,,,,
+11277833782,252143207,01/15/2020 8:10:05 PM,01/15/2020 8:16:56 PM,205.251.233.179,,,,,less than one year,not yet a member but working on it,yes,North America,2 or more,2,2,1: not challenging at all,2,3,4,2,2,2,2,,4,4,4,2,"yes, I can contribute on company time",several times a week,Core code inside of kubernetes/kubernetes,,,,,"Plugins & Drivers (CSI, CNI, cloud providers)",,,,,e2e tests using ginko could be better.,few times a year,,Having a full agenda with descriptions posted several days ahead,,,,Fewer meetings in my personal schedule,,,4,2,5,6,7,3,1,A clear SIG-networking roadmap,4,5: everyday,1: never,3: several times a month,5: everyday,1: never,2,3: several times a month,,,,"#kubernetes-dev, #sig-foo, #sig-contribex slack",,,kubernetes/community repo in GitHub (Issues and/or PRs),,Yes,no - didn't know this was a thing,"Yes, please contact me (you'll include your email in the last question)",0,Not attending KubeCon,,,,
+11277559694,252143207,01/15/2020 4:57:13 PM,01/15/2020 5:06:18 PM,61.125.231.223,,,,,one to two years,approver,if I had more free time,Asia,2 or more,4,2,1: not challenging at all,3,3,4,2,3,3,2,,3,4,3,2,it's complicated.,several times a month,,"Code inside of another repo in the Kubernetes GitHub Org (example: /kubernetes-sigs, kubernetes/website, etc)",Documentation,Testing & Infrastructure,Community & Project management; SIG Chair etc.,,,,Release,,,"rarely, but I frequently watch the video and/or read the notes",,,,Additional developer tips/news content,Using the meeting to discuss project-wide development topics & roadblocks,,Different timeslot for the meeting,,2,3,4,5,6,7,1,,3: several times a month,4,2,3: several times a month,4,2,3: several times a month,3: several times a month,kubernetes-dev@ mailing list,,,"#kubernetes-dev, #sig-foo, #sig-contribex slack",,,kubernetes/community repo in GitHub (Issues and/or PRs),,Yes,yes - it was helpful,I am already mentoring (you'll include your email in the last question because you want swag!),3+,"Funding (no work support, or cannot afford to individually go)",,,,
+11277543529,252143207,01/15/2020 3:57:55 PM,01/15/2020 4:56:18 PM,222.108.64.110,,,,,less than one year,reviewer,yes,Asia,this is my first open source project!,5: the most challenging part,5: the most challenging part,4,3,2,3,1: not challenging at all,3,1: not challenging at all,3,,5: strongly agree,5: strongly agree,1: strongly disagree,1: strongly disagree,"no, I need to use my own time",several times a week,,"Code inside of another repo in the Kubernetes GitHub Org (example: /kubernetes-sigs, kubernetes/website, etc)",Documentation,,,,,,,,It's good enough for the documentation localization I'm doing.,"rarely, but I frequently watch the video and/or read the notes",,Having a full agenda with descriptions posted several days ahead,,,Using the meeting to discuss project-wide development topics & roadblocks,Fewer meetings in my personal schedule,,,5,1,6,7,4,3,2,We need a lot of attention and guidance for our contributors.,5: everyday,5: everyday,3: several times a month,4,5: everyday,4,3: several times a month,5: everyday,,,,"#kubernetes-dev, #sig-foo, #sig-contribex slack",,,kubernetes/community repo in GitHub (Issues and/or PRs),,Rarely (for reasons),yes - it was helpful,I would like to but I don't have the time / employer doesn't support it,3+,"Funding (no work support, or cannot afford to individually go)",,,,
+11277516552,252143207,01/15/2020 4:30:26 PM,01/15/2020 4:39:16 PM,24.165.85.113,,,,,less than one year,not yet a member but working on it,if I had help/mentoring/support,North America,2 or more,5: the most challenging part,3,3,2,3,4,4,4,2,3,,2,3,3,3,"no, I need to use my own time",several times a month,,"Code inside of another repo in the Kubernetes GitHub Org (example: /kubernetes-sigs, kubernetes/website, etc)",Documentation,,Community & Project management; SIG Chair etc.,,"Related projects (Helm, container runtimes, other CNCF projects, etc.)",,,,,"rarely, but I frequently watch the video and/or read the notes",,,,,,,Different timeslot for the meeting,,1,5,3,7,6,4,2,,4,3: several times a month,2,2,2,1: never,3: several times a month,2,kubernetes-dev@ mailing list,,kubernetes-sig-contribex@ mailing list,"#kubernetes-dev, #sig-foo, #sig-contribex slack",,,,,Yes,yes - it was helpful,I'm inexperienced and don't know enough to mentor,1,Helping at other co-located event,,,,
+11277099903,252143207,01/15/2020 12:55:45 PM,01/15/2020 1:16:48 PM,74.104.142.217,,,,,two to three years,subproject owner,"no, already a subproject owner (highest level on the ladder)",North America,2 or more,5: the most challenging part,3,4,1: not challenging at all,4,5: the most challenging part,1: not challenging at all,2,3,2,,1: strongly disagree,2,5: strongly agree,4,"yes, I can contribute on company time",every day,Core code inside of kubernetes/kubernetes,"Code inside of another repo in the Kubernetes GitHub Org (example: /kubernetes-sigs, kubernetes/website, etc)",Documentation,,Community & Project management; SIG Chair etc.,"Plugins & Drivers (CSI, CNI, cloud providers)","Related projects (Helm, container runtimes, other CNCF projects, etc.)",,,,,few times a year,,,,,,Fewer meetings in my personal schedule,,,3,1,4,5,6,7,2,,5: everyday,5: everyday,5: everyday,5: everyday,5: everyday,1: never,3: several times a month,5: everyday,kubernetes-dev@ mailing list,Dedicated discuss.k8s.io forum for contributors,,"#kubernetes-dev, #sig-foo, #sig-contribex slack",,Kubernetes blog,kubernetes/community repo in GitHub (Issues and/or PRs),,No,no - didn't know this was a thing,"Yes, please contact me (you'll include your email in the last question)",1,Helping at other co-located event,,,,
+11276862180,252143207,01/15/2020 11:44:18 AM,01/15/2020 11:52:16 AM,206.29.176.51,,,,,one to two years,member,yes,North America,2 or more,3,1: not challenging at all,1: not challenging at all,2,1: not challenging at all,1: not challenging at all,2,2,1: not challenging at all,1: not challenging at all,,3,4,1: strongly disagree,4,it's complicated.,several times a month,Core code inside of kubernetes/kubernetes,"Code inside of another repo in the Kubernetes GitHub Org (example: /kubernetes-sigs, kubernetes/website, etc)",Documentation,,,,"Related projects (Helm, container runtimes, other CNCF projects, etc.)",,,,Not that I know of,"rarely, but I frequently watch the video and/or read the notes",,Having a full agenda with descriptions posted several days ahead,,,,Fewer meetings in my personal schedule,,,1,4,3,5,6,7,2,N/A,4,4,1: never,3: several times a month,3: several times a month,1: never,3: several times a month,3: several times a month,kubernetes-dev@ mailing list,,,"#kubernetes-dev, #sig-foo, #sig-contribex slack",,Kubernetes blog,,,No,no - didn't know this was a thing,I'm inexperienced and don't know enough to mentor,1,"Funding (no work support, or cannot afford to individually go)",,,,
+11276860468,252143207,01/15/2020 10:45:43 AM,01/15/2020 11:51:40 AM,77.2.98.62,,,,,less than one year,member,yes,Europe,2 or more,3,4,2,5: the most challenging part,2,2,4,1: not challenging at all,2,2,,5: strongly agree,5: strongly agree,2,1: strongly disagree,"no, I need to use my own time",several times a month,Core code inside of kubernetes/kubernetes,"Code inside of another repo in the Kubernetes GitHub Org (example: /kubernetes-sigs, kubernetes/website, etc)",,,,,,,,,Make it easier to find a SIG to work on and then have a better onboarding process,few times a year,,Having a full agenda with descriptions posted several days ahead,,,,,,,1,6,5,7,4,3,2,,3: several times a month,5: everyday,1: never,4,4,1: never,2,4,kubernetes-dev@ mailing list,,kubernetes-sig-contribex@ mailing list,,,,,,Yes,no - didn't know this was a thing,I'm inexperienced and don't know enough to mentor,0,Not attending KubeCon,,,,
+11276730482,252143207,01/15/2020 11:02:33 AM,01/15/2020 11:07:25 AM,199.76.4.53,,,,,less than one year,member,yes,North America,this is my first open source project!,1: not challenging at all,4,1: not challenging at all,5: the most challenging part,2,3,3,1: not challenging at all,1: not challenging at all,1: not challenging at all,,1: strongly disagree,1: strongly disagree,1: strongly disagree,3,"no, I need to use my own time",a few times a year,,,,,,,,,Release,,,never,,Having a full agenda with descriptions posted several days ahead,,Additional developer tips/news content,,Fewer meetings in my personal schedule,Different timeslot for the meeting,,1,6,5,4,2,7,3,,2,4,1: never,4,3: several times a month,1: never,2,4,kubernetes-dev@ mailing list,,,,,,,,No,no - didn't know this was a thing,I'm inexperienced and don't know enough to mentor,1,Not interested in attending,,,,
+11276704618,252143207,01/15/2020 10:50:42 AM,01/15/2020 10:58:36 AM,66.187.233.206,,,,,less than one year,not yet a member but working on it,if I had help/mentoring/support,North America,2 or more,4,4,2,4,3,3,4,5: the most challenging part,1: not challenging at all,3,,1: strongly disagree,2,4,3,"yes, I can contribute on company time",every day,,,,,,"Plugins & Drivers (CSI, CNI, cloud providers)","Related projects (Helm, container runtimes, other CNCF projects, etc.)",,,,.,try to make it to all of them (3-4 a month),,,,Additional developer tips/news content,Using the meeting to discuss project-wide development topics & roadblocks,,,,6,3,5,4,1,2,7,.,2,5: everyday,1: never,5: everyday,3: several times a month,1: never,1: never,3: several times a month,,,,"#kubernetes-dev, #sig-foo, #sig-contribex slack",,,,,No,no - didn't know this was a thing,I'm inexperienced and don't know enough to mentor,0,Not attending KubeCon,,,,
+11276686649,252143207,01/15/2020 10:43:40 AM,01/15/2020 10:52:27 AM,96.38.189.33,,,,,two to three years,subproject owner,"no, already a subproject owner (highest level on the ladder)",North America,this is my first open source project!,1: not challenging at all,3,2,1: not challenging at all,1: not challenging at all,1: not challenging at all,1: not challenging at all,1: not challenging at all,1: not challenging at all,1: not challenging at all,,5: strongly agree,4,1: strongly disagree,1: strongly disagree,it's complicated.,several times a month,,"Code inside of another repo in the Kubernetes GitHub Org (example: /kubernetes-sigs, kubernetes/website, etc)",Documentation,,Community & Project management; SIG Chair etc.,,,,,,,"rarely, but I frequently watch the video and/or read the notes",,,,,,Fewer meetings in my personal schedule,Different timeslot for the meeting,,3,4,2,6,5,7,1,"This goes into contributor documentation, but more ways to get the right contributors involved. ",5: everyday,5: everyday,2,3: several times a month,4,1: never,1: never,4,,,,"#kubernetes-dev, #sig-foo, #sig-contribex slack",@kubernetesio twitter,Kubernetes blog,,,No,yes - it wasn't helpful,"Yes, please contact me (you'll include your email in the last question)",3+,Helping at other co-located event,,,,
+11276656676,252143207,01/15/2020 10:35:36 AM,01/15/2020 10:41:43 AM,24.150.92.49,,,,,three+ years,not yet a member but working on it,yes,North America,this is my first open source project!,,,1: not challenging at all,2,1: not challenging at all,3,4,2,4,3,,3,4,2,2,"no, I need to use my own time",several times a month,,,,,,,,"Don’t contribute yet, hoping to start soon",,,,"rarely, but I frequently watch the video and/or read the notes",,Having a full agenda with descriptions posted several days ahead,,,,Fewer meetings in my personal schedule,Different timeslot for the meeting,,,,,,,,,,4,3: several times a month,2,4,4,1: never,4,4,kubernetes-dev@ mailing list,,kubernetes-sig-contribex@ mailing list,,,Kubernetes blog,,,Yes,no - didn't know this was a thing,I would like to but I don't have the time / employer doesn't support it,0,"Funding (no work support, or cannot afford to individually go)",,,,
+11276627598,252143207,01/15/2020 10:02:01 AM,01/15/2020 10:31:26 AM,129.41.87.2,,,,,three+ years,subproject owner,"no, already a subproject owner (highest level on the ladder)",North America,1 other,2,2,3,3,3,3,2,1: not challenging at all,2,2,,4,4,4,4,"yes, I can contribute on company time",every day,Core code inside of kubernetes/kubernetes,"Code inside of another repo in the Kubernetes GitHub Org (example: /kubernetes-sigs, kubernetes/website, etc)",Documentation,,Community & Project management; SIG Chair etc.,,"Related projects (Helm, container runtimes, other CNCF projects, etc.)",,,,,try to make it to all of them (3-4 a month),"Nothing, I attend and think they are great",,,,,,,,,,,,,,,,2,3: several times a month,2,3: several times a month,4,2,2,2,kubernetes-dev@ mailing list,,kubernetes-sig-contribex@ mailing list,"#kubernetes-dev, #sig-foo, #sig-contribex slack",@kubernetesio twitter,Kubernetes blog,kubernetes/community repo in GitHub (Issues and/or PRs),,Rarely (for reasons),yes - it was helpful,I would like to but I don't have the time / employer doesn't support it,3+,,,,,
+11276622200,252143207,01/15/2020 10:24:24 AM,01/15/2020 10:29:32 AM,75.8.79.3,,,,,less than one year,member,if I had more free time,North America,this is my first open source project!,,,,,,,,,,,Getting started.,,,,,it's complicated.,a few times a year,,,,,,,,"Don’t contribute yet, hoping to start soon",,,,never,,,,,,Fewer meetings in my personal schedule,,,1,3,4,7,5,6,2,,4,5: everyday,1: never,2,2,1: never,1: never,2,,,,"#kubernetes-dev, #sig-foo, #sig-contribex slack",,,,,Rarely (for reasons),yes - it was helpful,I'm inexperienced and don't know enough to mentor,0,Other (please specify),The event was full.,,,
+11276159065,252143207,01/15/2020 6:50:36 AM,01/15/2020 7:57:32 AM,65.128.176.128,,,,,less than one year,not yet a member but working on it,yes,North America,2 or more,2,1: not challenging at all,1: not challenging at all,4,2,2,4,2,2,2,,3,4,3,4,it's complicated.,a few times a year,,"Code inside of another repo in the Kubernetes GitHub Org (example: /kubernetes-sigs, kubernetes/website, etc)",Documentation,,Community & Project management; SIG Chair etc.,,,,,,,few times a year,,,,,,Fewer meetings in my personal schedule,,,3,4,5,1,6,7,2,,4,4,2,2,3: several times a month,1: never,2,4,,,kubernetes-sig-contribex@ mailing list,"#kubernetes-dev, #sig-foo, #sig-contribex slack",,,,,Yes,no - didn't know this was a thing,I'm inexperienced and don't know enough to mentor,0,Attending other conference,,,,
+11276092074,252143207,01/15/2020 7:33:16 AM,01/15/2020 7:35:46 AM,50.75.45.146,,,,,less than one year,not yet a member but working on it,yes,North America,1 other,,4,2,,4,,3,,,2,,4,3,,4,"yes, I can contribute on company time",a few times a year,,,Documentation,,,,,,,,no,never,,Having a full agenda with descriptions posted several days ahead,,,,,,,,,,,,,,n/a,4,2,4,2,4,1: never,4,4,kubernetes-dev@ mailing list,Dedicated discuss.k8s.io forum for contributors,,,,,kubernetes/community repo in GitHub (Issues and/or PRs),,Rarely (for reasons),no - didn't know this was a thing,I'm inexperienced and don't know enough to mentor,0,"Funding (no work support, or cannot afford to individually go)",,,,
+11275927882,252143207,01/15/2020 6:35:37 AM,01/15/2020 6:40:52 AM,71.41.157.2,,,,,less than one year,there's a contributor ladder?,yes,North America,2 or more,3,3,2,1: not challenging at all,2,2,4,1: not challenging at all,2,3,,4,4,1: strongly disagree,1: strongly disagree,"no, I need to use my own time",a few times a year,,"Code inside of another repo in the Kubernetes GitHub Org (example: /kubernetes-sigs, kubernetes/website, etc)",,,,,,,,,,never,,,,,,,,,3,4,5,1,7,6,2,,2,4,1: never,3: several times a month,4,1: never,3: several times a month,1: never,,,,"#kubernetes-dev, #sig-foo, #sig-contribex slack",@kubernetesio twitter,,,,No,no - didn't know this was a thing,I'm inexperienced and don't know enough to mentor,0,"Funding (no work support, or cannot afford to individually go)",,,,
+11275489466,252143207,01/15/2020 3:10:14 AM,01/15/2020 3:27:47 AM,50.226.229.246,,,,,three+ years,subproject owner,"no, already a subproject owner (highest level on the ladder)",Europe,2 or more,2,5: the most challenging part,5: the most challenging part,1: not challenging at all,1: not challenging at all,3,2,1: not challenging at all,1: not challenging at all,3,Processes beyond processes; getting someone with approval permissions on something to respond,3,3,3,2,"yes, I can contribute on company time",every day,Core code inside of kubernetes/kubernetes,"Code inside of another repo in the Kubernetes GitHub Org (example: /kubernetes-sigs, kubernetes/website, etc)",,,,,,,,,"Contributing to existing projects isn't all that complicated for me, however, iterating, artifact publishing, etc. are so much easier outside of the kube project, that I simply don't feel like starting a project under kubernetes-sigs anymore (which I also think is horrible for discoverability of projects). This leads to me maintaining projects that should really be part of kube outside of it.","rarely, but I frequently watch the video and/or read the notes",,Having a full agenda with descriptions posted several days ahead,,,,Fewer meetings in my personal schedule,Different timeslot for the meeting,,3,1,2,7,4,6,5,n/a,4,5: everyday,1: never,3: several times a month,5: everyday,1: never,3: several times a month,4,kubernetes-dev@ mailing list,,,,,,,,Rarely (for reasons),"no - i don't need mentoring, guidance, or other resources",I would like to but I don't have the time / employer doesn't support it,3+,Helping at other co-located event,,,,
+11275474576,252143207,01/15/2020 3:06:09 AM,01/15/2020 3:18:54 AM,136.143.33.156,,,,,one to two years,approver,yes,Europe,2 or more,3,1: not challenging at all,1: not challenging at all,4,2,5: the most challenging part,4,4,3,2,,3,2,3,2,"no, I need to use my own time",several times a month,,,Documentation,,,,,,,,No,never,,,,,,,,Nothing above. Having a less busy schedule myself.,2,4,6,5,1,7,3,-,4,5: everyday,2,1: never,5: everyday,1: never,1: never,3: several times a month,kubernetes-dev@ mailing list,,kubernetes-sig-contribex@ mailing list,"#kubernetes-dev, #sig-foo, #sig-contribex slack",,,,,Yes,"no - i don't need mentoring, guidance, or other resources",I would like to but I don't have the time / employer doesn't support it,0,"Funding (no work support, or cannot afford to individually go)",,,,
+11275283460,252143207,01/15/2020 1:07:25 AM,01/15/2020 1:10:34 AM,49.205.219.1,,,,,less than one year,there's a contributor ladder?,yes,Asia,2 or more,2,4,1: not challenging at all,1: not challenging at all,1: not challenging at all,2,3,3,2,2,,5: strongly agree,3,5: strongly agree,4,"no, I need to use my own time",several times a month,,,Documentation,,,"Plugins & Drivers (CSI, CNI, cloud providers)",,,,,,few times a year,"Nothing, I attend and think they are great",,,,,,,,3,4,2,5,6,7,1,,3: several times a month,4,2,1: never,4,2,3: several times a month,4,kubernetes-dev@ mailing list,,,,,,kubernetes/community repo in GitHub (Issues and/or PRs),,Yes,no - didn't know this was a thing,I would like to but I don't have the time / employer doesn't support it,0,"Funding (no work support, or cannot afford to individually go)",,,,
+11275077580,252143207,01/13/2020 9:55:49 PM,01/14/2020 10:18:01 PM,205.252.217.110,,,,,three+ years,reviewer,yes,Asia,this is my first open source project!,2,3,2,1: not challenging at all,1: not challenging at all,2,2,1: not challenging at all,2,3,,5: strongly agree,5: strongly agree,2,2,"yes, I can contribute on company time",a few times a year,Core code inside of kubernetes/kubernetes,"Code inside of another repo in the Kubernetes GitHub Org (example: /kubernetes-sigs, kubernetes/website, etc)",Documentation,Testing & Infrastructure,,"Plugins & Drivers (CSI, CNI, cloud providers)",,,,,Not yet.,few times a year,,,,,,,Different timeslot for the meeting,,5,4,7,3,2,1,6,NA,3: several times a month,4,3: several times a month,2,4,2,3: several times a month,4,kubernetes-dev@ mailing list,,,,,Kubernetes blog,kubernetes/community repo in GitHub (Issues and/or PRs),,Yes,yes - it was helpful,I'm inexperienced and don't know enough to mentor,3+,Other (please specify),NA,,,
+11274390997,252143207,01/14/2020 2:25:53 PM,01/14/2020 2:31:05 PM,23.243.239.5,,,,,one to two years,member,yes,North America,2 or more,2,1: not challenging at all,1: not challenging at all,1: not challenging at all,2,4,5: the most challenging part,4,1: not challenging at all,2,,3,4,4,4,it's complicated.,several times a week,,,,,,,,,Release,,,few times a year,,Having a full agenda with descriptions posted several days ahead,,,,Fewer meetings in my personal schedule,,,1,6,2,4,5,7,3,,2,5: everyday,2,3: several times a month,4,1: never,2,2,,,,"#kubernetes-dev, #sig-foo, #sig-contribex slack",,,,,Yes,yes - it was helpful,,3+,,,,,
+11274334126,252143207,01/14/2020 1:53:42 PM,01/14/2020 2:05:54 PM,186.222.231.68,,,,,one to two years,approver,if I had help/mentoring/support,Europe,2 or more,3,1: not challenging at all,1: not challenging at all,1: not challenging at all,1: not challenging at all,1: not challenging at all,2,1: not challenging at all,1: not challenging at all,1: not challenging at all,,4,4,2,2,it's complicated.,several times a month,,,Documentation,,Community & Project management; SIG Chair etc.,,,,,,"Not really. I work on French localization, We are mostly limited by how much time people are willing to give for it. ",never,,Having a full agenda with descriptions posted several days ahead,,,,,,,1,4,2,5,6,7,3,None,2,5: everyday,1: never,1: never,5: everyday,1: never,1: never,2,,,,"#kubernetes-dev, #sig-foo, #sig-contribex slack",,,kubernetes/community repo in GitHub (Issues and/or PRs),,No,no - didn't know this was a thing,I'm inexperienced and don't know enough to mentor,0,"Funding (no work support, or cannot afford to individually go)",,,,
+11274277252,252143207,01/14/2020 1:32:57 PM,01/14/2020 1:42:34 PM,141.193.89.20,,,,,two to three years,approver,if I had more free time,North America,this is my first open source project!,4,3,1: not challenging at all,3,2,2,3,4,4,2,,4,3,2,4,it's complicated.,several times a month,,,,,,,"Related projects (Helm, container runtimes, other CNCF projects, etc.)",,,,,few times a year,,,,,,,,,2,6,1,3,4,7,5,,3: several times a month,4,1: never,3: several times a month,4,1: never,2,2,,,,,,,,,No,no - didn't know this was a thing,I would like to but I don't have the time / employer doesn't support it,2,,,,,
+11274186770,252143207,01/14/2020 1:01:55 PM,01/14/2020 1:07:20 PM,184.58.33.223,,,,,less than one year,not yet a member but working on it,if I had more free time,North America,2 or more,2,1: not challenging at all,1: not challenging at all,3,3,3,5: the most challenging part,2,,2,,3,3,3,3,it's complicated.,several times a month,,"Code inside of another repo in the Kubernetes GitHub Org (example: /kubernetes-sigs, kubernetes/website, etc)",,Testing & Infrastructure,,,,,,,I don't have anything to add here currently.,never,,,,,,,,Balancing work and contributions to k8s,1,4,7,6,3,5,2,,3: several times a month,4,1: never,1: never,3: several times a month,1: never,2,2,kubernetes-dev@ mailing list,,,"#kubernetes-dev, #sig-foo, #sig-contribex slack",,,kubernetes/community repo in GitHub (Issues and/or PRs),,No,no - didn't know this was a thing,I'm inexperienced and don't know enough to mentor,0,Not attending KubeCon,,,,
+11274186694,252143207,01/14/2020 12:59:55 PM,01/14/2020 1:07:19 PM,68.49.49.16,,,,,three+ years,subproject owner,"no, already a subproject owner (highest level on the ladder)",North America,2 or more,2,3,1: not challenging at all,1: not challenging at all,1: not challenging at all,3,2,4,5: the most challenging part,2,,3,3,2,2,"yes, I can contribute on company time",several times a month,,"Code inside of another repo in the Kubernetes GitHub Org (example: /kubernetes-sigs, kubernetes/website, etc)",Documentation,,Community & Project management; SIG Chair etc.,,"Related projects (Helm, container runtimes, other CNCF projects, etc.)",,,,,few times a year,,,,,,Fewer meetings in my personal schedule,,,1,4,5,6,7,3,2,,4,5: everyday,1: never,2,4,1: never,2,3: several times a month,kubernetes-dev@ mailing list,,,,,,,,Rarely (for reasons),yes - it was helpful,I would like to but I don't have the time / employer doesn't support it,3+,,,,,
+11274104830,252143207,01/14/2020 12:22:15 PM,01/14/2020 12:34:16 PM,86.81.23.126,,,,,two to three years,not yet a member but working on it,if I had help/mentoring/support,Europe,2 or more,5: the most challenging part,4,1: not challenging at all,3,2,3,3,3,2,2,Getting a PR reviewed,3,4,3,2,it's complicated.,several times a month,Core code inside of kubernetes/kubernetes,"Code inside of another repo in the Kubernetes GitHub Org (example: /kubernetes-sigs, kubernetes/website, etc)",Documentation,,,,,,,,"Get PRs reviewed and approved, instead of just hanging out there forever ","rarely, but I frequently watch the video and/or read the notes",,Having a full agenda with descriptions posted several days ahead,,Additional developer tips/news content,,,,,5,6,3,7,4,2,1,,5: everyday,4,4,3: several times a month,5: everyday,1: never,3: several times a month,3: several times a month,kubernetes-dev@ mailing list,,,,@kubernetesio twitter,Kubernetes blog,,,Rarely (for reasons),no - didn't know this was a thing,I'm inexperienced and don't know enough to mentor,1,,,,,
+11273995435,252143207,01/14/2020 11:33:48 AM,01/14/2020 11:51:56 AM,173.76.100.66,,,,,one to two years,approver,,North America,2 or more,,3,,,,,,,,,,4,3,,,"no, I need to use my own time",every day,,"Code inside of another repo in the Kubernetes GitHub Org (example: /kubernetes-sigs, kubernetes/website, etc)",Documentation,,,,,,,,,never,,,,,,,,,,,,,,,,"Provide info about what is happening in each or some of the main Sigs (blog, newsletter, office hrs). How is the individual work related (release goals)? It is sometimes hard to find and keep up with the individual project details.",5: everyday,5: everyday,,3: several times a month,5: everyday,,3: several times a month,3: several times a month,kubernetes-dev@ mailing list,,,"#kubernetes-dev, #sig-foo, #sig-contribex slack",,Kubernetes blog,kubernetes/community repo in GitHub (Issues and/or PRs),,Rarely (for reasons),yes - it was helpful,,0,Not attending KubeCon,,,,
+11273958502,252143207,01/14/2020 11:33:05 AM,01/14/2020 11:37:54 AM,76.9.215.130,,,,,less than one year,not yet a member but working on it,yes,North America,this is my first open source project!,2,3,1: not challenging at all,2,3,2,5: the most challenging part,2,1: not challenging at all,2,,2,4,1: strongly disagree,1: strongly disagree,it's complicated.,several times a month,,,,,,,,"Don’t contribute yet, hoping to start soon",,,,never,,Having a full agenda with descriptions posted several days ahead,,Additional developer tips/news content,,,,,1,7,3,4,5,6,2,,5: everyday,3: several times a month,2,2,4,3: several times a month,4,1: never,kubernetes-dev@ mailing list,,,,,Kubernetes blog,kubernetes/community repo in GitHub (Issues and/or PRs),,Yes,no - didn't know this was a thing,I'm inexperienced and don't know enough to mentor,0,"Funding (no work support, or cannot afford to individually go)",,,,
+11273942637,252143207,01/14/2020 11:21:16 AM,01/14/2020 11:31:41 AM,76.9.215.130,,,,,less than one year,not yet a member but working on it,if I had help/mentoring/support,North America,this is my first open source project!,2,4,1: not challenging at all,2,3,1: not challenging at all,5: the most challenging part,3,3,2,,2,4,2,2,"yes, I can contribute on company time",several times a month,,,,,,,,"Don’t contribute yet, hoping to start soon",,,,"rarely, but I frequently watch the video and/or read the notes",,,,Additional developer tips/news content,,,,,1,3,4,5,6,7,2,,1: never,3: several times a month,2,1: never,4,3: several times a month,4,2,,,,,,,kubernetes/community repo in GitHub (Issues and/or PRs),,Yes,no - didn't know this was a thing,I'm inexperienced and don't know enough to mentor,0,Not attending KubeCon,,,,
+11273939006,252143207,01/14/2020 11:20:13 AM,01/14/2020 11:30:19 AM,76.9.215.130,,,,,one to two years,not yet a member but working on it,yes,North America,1 other,1: not challenging at all,1: not challenging at all,1: not challenging at all,1: not challenging at all,1: not challenging at all,1: not challenging at all,1: not challenging at all,1: not challenging at all,1: not challenging at all,1: not challenging at all,,3,3,2,2,"yes, I can contribute on company time",a few times a year,,,Documentation,,,"Plugins & Drivers (CSI, CNI, cloud providers)","Related projects (Helm, container runtimes, other CNCF projects, etc.)",,,,,never,,,,,,,,,3,4,5,6,1,7,2,,4,2,2,3: several times a month,3: several times a month,1: never,3: several times a month,3: several times a month,kubernetes-dev@ mailing list,,,,,Kubernetes blog,,,No,no - didn't know this was a thing,I'm inexperienced and don't know enough to mentor,0,"Funding (no work support, or cannot afford to individually go)",,,,
+11273886668,252143207,01/14/2020 11:04:24 AM,01/14/2020 11:10:29 AM,149.173.8.19,,,,,less than one year,not yet a member but working on it,if I had more free time,North America,this is my first open source project!,1: not challenging at all,1: not challenging at all,1: not challenging at all,3,2,2,4,4,1: not challenging at all,2,,2,3,4,2,"no, I need to use my own time",several times a month,,,,,,,,"Don’t contribute yet, hoping to start soon",,,,once a month,"Nothing, I attend and think they are great",,,,,,,,1,3,4,6,5,7,2,,5: everyday,3: several times a month,2,3: several times a month,3: several times a month,1: never,3: several times a month,3: several times a month,kubernetes-dev@ mailing list,Dedicated discuss.k8s.io forum for contributors,,,@kubernetesio twitter,,kubernetes/community repo in GitHub (Issues and/or PRs),,Yes,yes - it was helpful,I'm inexperienced and don't know enough to mentor,0,Helping at other co-located event,,,,
+11273885639,252143207,01/14/2020 11:01:48 AM,01/14/2020 11:10:04 AM,193.219.84.68,,,,,less than one year,not yet a member but working on it,no,Europe,this is my first open source project!,5: the most challenging part,5: the most challenging part,5: the most challenging part,5: the most challenging part,3,3,3,3,3,3,,1: strongly disagree,1: strongly disagree,1: strongly disagree,1: strongly disagree,"no, I need to use my own time",a few times a year,,,,,,,,"Don’t contribute yet, hoping to start soon",,,"More friendly documentation for beginners. More beginners friendly tasks, good first timers.","rarely, but I frequently watch the video and/or read the notes","Nothing, I attend and think they are great",,,,,,,,2,3,1,5,4,7,6,"More friendly guides for beginners, videos about that.",5: everyday,3: several times a month,2,2,2,2,2,2,,,kubernetes-sig-contribex@ mailing list,,,,,,Yes,no - didn't know this was a thing,I'm inexperienced and don't know enough to mentor,0,Not attending KubeCon,,,,
+11273878931,252143207,01/14/2020 11:01:50 AM,01/14/2020 11:07:32 AM,50.204.110.19,,,,,less than one year,not yet a member but working on it,yes,North America,this is my first open source project!,,,,,,,,,,,No relevant experience yet,1: strongly disagree,3,3,3,"yes, I can contribute on company time",a few times a year,,,,,,,,"Don’t contribute yet, hoping to start soon",,,,never,,,,,,,,,,,,,,,,,1: never,1: never,1: never,1: never,1: never,1: never,1: never,1: never,kubernetes-dev@ mailing list,,,,,,kubernetes/community repo in GitHub (Issues and/or PRs),,No,no - didn't know this was a thing,I'm inexperienced and don't know enough to mentor,0,,,,,
+11273839601,252143207,01/14/2020 10:50:30 AM,01/14/2020 10:52:47 AM,204.134.187.136,,,,,less than one year,not yet a member but working on it,if I had more free time,North America,1 other,2,3,4,3,3,2,2,1: not challenging at all,1: not challenging at all,1: not challenging at all,,2,3,2,2,"yes, I can contribute on company time",a few times a year,Core code inside of kubernetes/kubernetes,,Documentation,,,,,,,,,never,,,,,,,,,,,,,,,,,,,,,,,,,kubernetes-dev@ mailing list,,kubernetes-sig-contribex@ mailing list,,,,,,Yes,no - didn't know this was a thing,I'm inexperienced and don't know enough to mentor,0,Not attending KubeCon,,,,
+11273762562,252143207,01/14/2020 10:20:20 AM,01/14/2020 10:24:30 AM,15.124.24.71,,,,,three+ years,member,if I had help/mentoring/support,North America,this is my first open source project!,,,,,,,,,,,,,,,,"yes, I can contribute on company time",,,,,,,,,,,SIG-PM Interest,,"rarely, but I frequently watch the video and/or read the notes",,Having a full agenda with descriptions posted several days ahead,,,,,,,,,,,,,,,2,3: several times a month,1: never,2,4,2,3: several times a month,4,kubernetes-dev@ mailing list,,,,,Kubernetes blog,,,,no - didn't know this was a thing,I'm inexperienced and don't know enough to mentor,0,,,,,
+11273754679,252143207,01/14/2020 10:15:48 AM,01/14/2020 10:21:44 AM,173.48.237.133,,,,,three+ years,approver,yes,North America,2 or more,3,4,2,3,3,4,1: not challenging at all,2,2,2,,4,4,4,2,it's complicated.,several times a week,,"Code inside of another repo in the Kubernetes GitHub Org (example: /kubernetes-sigs, kubernetes/website, etc)",,Testing & Infrastructure,,,"Related projects (Helm, container runtimes, other CNCF projects, etc.)",,,,,"rarely, but I frequently watch the video and/or read the notes",,,,,,,Different timeslot for the meeting,,3,4,5,6,7,1,2,,4,5: everyday,3: several times a month,4,5: everyday,2,3: several times a month,4,kubernetes-dev@ mailing list,,,"#kubernetes-dev, #sig-foo, #sig-contribex slack",@kubernetesio twitter,Kubernetes blog,,,Yes,yes - it was helpful,"Yes, please contact me (you'll include your email in the last question)",3+,,,,,
+11273603116,252143207,01/14/2020 9:17:04 AM,01/14/2020 9:25:41 AM,76.184.177.213,,,,,three+ years,subproject owner,"no, already a subproject owner (highest level on the ladder)",North America,2 or more,4,5: the most challenging part,3,2,2,4,1: not challenging at all,2,1: not challenging at all,3,,4,3,4,3,it's complicated.,several times a week,,"Code inside of another repo in the Kubernetes GitHub Org (example: /kubernetes-sigs, kubernetes/website, etc)",,,,,"Related projects (Helm, container runtimes, other CNCF projects, etc.)",,,,Promote and recruit for jobs that allow full time open source contributions,try to make it to all of them (3-4 a month),"Nothing, I attend and think they are great",,,Additional developer tips/news content,,Fewer meetings in my personal schedule,,,5,3,1,4,6,7,2,Not sure,4,5: everyday,2,4,5: everyday,2,5: everyday,3: several times a month,kubernetes-dev@ mailing list,,,,,Kubernetes blog,,,Yes,yes - it was helpful,I would like to but I don't have the time / employer doesn't support it,2,"Funding (no work support, or cannot afford to individually go)",,,,
+11273519522,252143207,01/14/2020 8:52:03 AM,01/14/2020 8:56:08 AM,47.32.243.214,,,,,less than one year,not yet a member but working on it,yes,North America,2 or more,3,2,1: not challenging at all,3,,4,4,3,1: not challenging at all,3,,3,3,2,2,"yes, I can contribute on company time",several times a month,,,Documentation,,,,"Related projects (Helm, container runtimes, other CNCF projects, etc.)",,,,,few times a year,,Having a full agenda with descriptions posted several days ahead,,Additional developer tips/news content,,Fewer meetings in my personal schedule,,,1,6,5,7,4,3,2,,4,4,4,2,4,3: several times a month,3: several times a month,4,kubernetes-dev@ mailing list,,kubernetes-sig-contribex@ mailing list,,,,kubernetes/community repo in GitHub (Issues and/or PRs),,Rarely (for reasons),yes - it was helpful,I would like to but I don't have the time / employer doesn't support it,1,,,,,
+11273385879,252143207,01/14/2020 8:04:09 AM,01/14/2020 8:07:56 AM,183.83.131.183,,,,,less than one year,not yet a member but working on it,yes,North America,1 other,5: the most challenging part,4,4,1: not challenging at all,3,4,5: the most challenging part,1: not challenging at all,3,5: the most challenging part,,2,1: strongly disagree,3,3,"yes, I can contribute on company time",several times a week,,,,Testing & Infrastructure,,,,,,,None,once a month,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,
+11273332226,252143207,01/14/2020 7:37:40 AM,01/14/2020 7:49:14 AM,75.165.136.240,,,,,less than one year,there's a contributor ladder?,if I had more free time,North America,1 other,1: not challenging at all,2,2,3,3,5: the most challenging part,3,2,1: not challenging at all,1: not challenging at all,,3,3,3,5: strongly agree,"yes, I can contribute on company time",every day,,,,,,,"Related projects (Helm, container runtimes, other CNCF projects, etc.)",,,,nothing comes to mind.,never,,,,,,,Different timeslot for the meeting,,3,4,1,2,5,6,7,The SIG-SCALE is rarely attended,1: never,5: everyday,1: never,1: never,1: never,1: never,3: several times a month,1: never,,,,"#kubernetes-dev, #sig-foo, #sig-contribex slack",,,,,No,yes - it was helpful,I am already mentoring (you'll include your email in the last question because you want swag!),0,"Funding (no work support, or cannot afford to individually go)",,,,
+11273282235,252143207,01/14/2020 7:27:22 AM,01/14/2020 7:31:16 AM,138.246.2.136,,,,,less than one year,member,if I had more free time,Europe,this is my first open source project!,2,1: not challenging at all,1: not challenging at all,2,2,2,5: the most challenging part,3,2,2,,3,3,1: strongly disagree,1: strongly disagree,"no, I need to use my own time",several times a month,Core code inside of kubernetes/kubernetes,,,,,,,,,,,never,,,,,,,Different timeslot for the meeting,,,,,,,,,,3: several times a month,5: everyday,1: never,3: several times a month,3: several times a month,1: never,1: never,2,kubernetes-dev@ mailing list,,,"#kubernetes-dev, #sig-foo, #sig-contribex slack",,,,,Rarely (for reasons),no - didn't know this was a thing,I would like to but I don't have the time / employer doesn't support it,0,"Funding (no work support, or cannot afford to individually go)",,,,
+11273256780,252143207,01/14/2020 7:10:38 AM,01/14/2020 7:21:46 AM,138.246.2.136,,,,,less than one year,member,no,Europe,this is my first open source project!,2,1: not challenging at all,1: not challenging at all,2,1: not challenging at all,2,5: the most challenging part,3,2,2,,3,3,1: strongly disagree,2,"no, I need to use my own time",several times a month,Core code inside of kubernetes/kubernetes,,,,,,,,,,,never,,,,,,,Different timeslot for the meeting,,,,,,,,,,2,5: everyday,1: never,3: several times a month,4,1: never,1: never,3: several times a month,kubernetes-dev@ mailing list,,,"#kubernetes-dev, #sig-foo, #sig-contribex slack",,,,,No,no - didn't know this was a thing,I would like to but I don't have the time / employer doesn't support it,0,"Funding (no work support, or cannot afford to individually go)",,,,
+11273231670,252143207,01/14/2020 7:03:40 AM,01/14/2020 7:12:39 AM,68.90.105.9,,,,,one to two years,there's a contributor ladder?,yes,North America,1 other,5: the most challenging part,4,4,3,4,4,4,5: the most challenging part,5: the most challenging part,5: the most challenging part,,1: strongly disagree,1: strongly disagree,1: strongly disagree,3,"yes, I can contribute on company time",several times a week,Core code inside of kubernetes/kubernetes,,Documentation,,,,,,,,Regular contribution mentoring,never,,Having a full agenda with descriptions posted several days ahead,,,,,,Meeting invite to know when and how to join clearly.,1,5,3,7,6,4,2,,2,4,2,3: several times a month,3: several times a month,2,3: several times a month,3: several times a month,,,,,,,kubernetes/community repo in GitHub (Issues and/or PRs),,No,no - didn't know this was a thing,I'm inexperienced and don't know enough to mentor,2,,,,,
+11273050357,252143207,01/14/2020 5:56:01 AM,01/14/2020 6:03:04 AM,128.177.149.180,,,,,one to two years,not yet a member but working on it,if I had help/mentoring/support,North America,this is my first open source project!,3,2,1: not challenging at all,1: not challenging at all,2,3,2,2,3,1: not challenging at all,,3,4,3,2,"no, I need to use my own time",several times a month,,,Documentation,Testing & Infrastructure,,,,,,,A better explanation of the workflow would be very helpful.,"rarely, but I frequently watch the video and/or read the notes",,,,,,Fewer meetings in my personal schedule,,,1,3,4,5,6,7,2,N/A,2,5: everyday,2,5: everyday,4,1: never,3: several times a month,2,,,,,@kubernetesio twitter,Kubernetes blog,,,No,yes - it was helpful,I'm inexperienced and don't know enough to mentor,1,"Funding (no work support, or cannot afford to individually go)",,,,
+11273000848,252143207,01/14/2020 5:34:54 AM,01/14/2020 5:41:34 AM,37.1.255.230,,,,,one to two years,there's a contributor ladder?,yes,Europe,2 or more,1: not challenging at all,3,3,3,3,4,3,4,3,1: not challenging at all,,1: strongly disagree,2,2,2,"yes, I can contribute on company time",a few times a year,,"Code inside of another repo in the Kubernetes GitHub Org (example: /kubernetes-sigs, kubernetes/website, etc)",Documentation,,,,"Related projects (Helm, container runtimes, other CNCF projects, etc.)",,,,,never,,,,,,Fewer meetings in my personal schedule,Different timeslot for the meeting,,1,2,6,7,4,5,3,,2,2,1: never,2,3: several times a month,1: never,2,1: never,,,,,@kubernetesio twitter,Kubernetes blog,kubernetes/community repo in GitHub (Issues and/or PRs),,Yes,no - didn't know this was a thing,"Yes, please contact me (you'll include your email in the last question)",0,Attending other conference,,,,
+11272981795,252143207,01/14/2020 3:30:31 AM,01/14/2020 5:32:46 AM,194.29.235.60,,,,,less than one year,not yet a member but working on it,yes,Europe,2 or more,1: not challenging at all,1: not challenging at all,1: not challenging at all,3,3,3,4,2,1: not challenging at all,2,,3,3,1: strongly disagree,1: strongly disagree,"no, I need to use my own time",a few times a year,,,,Testing & Infrastructure,,,,,,,Not really. I believe I need to make time to increase my contribution.,few times a year,,,,,,Fewer meetings in my personal schedule,Different timeslot for the meeting,,1,4,2,5,7,6,3,I don't really know,3: several times a month,5: everyday,1: never,2,2,2,2,2,kubernetes-dev@ mailing list,,,"#kubernetes-dev, #sig-foo, #sig-contribex slack",@kubernetesio twitter,Kubernetes blog,kubernetes/community repo in GitHub (Issues and/or PRs),,Yes,yes - it was helpful,I'm inexperienced and don't know enough to mentor,0,Not attending KubeCon,,,,
+11272904854,252143207,01/14/2020 4:47:01 AM,01/14/2020 4:53:09 AM,94.216.61.251,,,,,three+ years,approver,if I had more free time,Europe,2 or more,2,,2,2,3,3,1: not challenging at all,2,2,3,,3,3,2,2,it's complicated.,several times a week,,"Code inside of another repo in the Kubernetes GitHub Org (example: /kubernetes-sigs, kubernetes/website, etc)",,Testing & Infrastructure,,,"Related projects (Helm, container runtimes, other CNCF projects, etc.)",,,,-,never,,,,,,Fewer meetings in my personal schedule,,,6,4,2,1,7,3,5,-,3: several times a month,4,1: never,4,5: everyday,2,2,4,,,,,,Kubernetes blog,,,Rarely (for reasons),"no - i don't need mentoring, guidance, or other resources",I'm inexperienced and don't know enough to mentor,3+,Attending other conference,,,,
+11272853819,252143207,01/14/2020 3:59:25 AM,01/14/2020 4:23:39 AM,34.84.247.144,,,,,three+ years,reviewer,yes,Asia,2 or more,2,2,1: not challenging at all,2,3,4,3,3,4,2,,3,3,2,4,"no, I need to use my own time",several times a week,Core code inside of kubernetes/kubernetes,"Code inside of another repo in the Kubernetes GitHub Org (example: /kubernetes-sigs, kubernetes/website, etc)",,,,"Plugins & Drivers (CSI, CNI, cloud providers)",,,,,Use slack and find a good mentor.,few times a year,,,,,,,Different timeslot for the meeting,,3,5,2,6,4,7,1,Most PRs did not got reviewed in time.,3: several times a month,5: everyday,3: several times a month,4,5: everyday,4,3: several times a month,4,kubernetes-dev@ mailing list,,,"#kubernetes-dev, #sig-foo, #sig-contribex slack",,Kubernetes blog,kubernetes/community repo in GitHub (Issues and/or PRs),,Yes,yes - it was helpful,"Yes, please contact me (you'll include your email in the last question)",3+,Helping at other co-located event,,,,
+11272839927,252143207,01/14/2020 4:09:23 AM,01/14/2020 4:15:14 AM,158.174.56.4,,,,,one to two years,not yet a member but working on it,yes,Europe,2 or more,3,2,1: not challenging at all,3,2,2,4,1: not challenging at all,1: not challenging at all,1: not challenging at all,,5: strongly agree,5: strongly agree,1: strongly disagree,1: strongly disagree,"yes, I can contribute on company time",a few times a year,Core code inside of kubernetes/kubernetes,"Code inside of another repo in the Kubernetes GitHub Org (example: /kubernetes-sigs, kubernetes/website, etc)",,,,,"Related projects (Helm, container runtimes, other CNCF projects, etc.)",,,,,few times a year,,Having a full agenda with descriptions posted several days ahead,,,,Fewer meetings in my personal schedule,,,3,5,6,7,4,2,1,,5: everyday,3: several times a month,3: several times a month,3: several times a month,4,1: never,2,3: several times a month,kubernetes-dev@ mailing list,,,"#kubernetes-dev, #sig-foo, #sig-contribex slack",,Kubernetes blog,kubernetes/community repo in GitHub (Issues and/or PRs),,Yes,no - didn't know this was a thing,I'm inexperienced and don't know enough to mentor,0,Other (please specify),Didn't know about it until afterwards,,,
+11272802791,252143207,01/14/2020 3:50:19 AM,01/14/2020 3:52:44 AM,89.204.137.31,,,,,less than one year,not yet a member but working on it,if I had help/mentoring/support,Europe,2 or more,3,3,3,4,4,4,4,2,2,2,,2,4,4,2,it's complicated.,several times a month,,"Code inside of another repo in the Kubernetes GitHub Org (example: /kubernetes-sigs, kubernetes/website, etc)",,,,,"Related projects (Helm, container runtimes, other CNCF projects, etc.)",,,,No,"rarely, but I frequently watch the video and/or read the notes",,Having a full agenda with descriptions posted several days ahead,,,Using the meeting to discuss project-wide development topics & roadblocks,Fewer meetings in my personal schedule,,,1,7,5,,4,6,2,Nothing,2,4,2,3: several times a month,3: several times a month,3: several times a month,4,3: several times a month,,,,"#kubernetes-dev, #sig-foo, #sig-contribex slack",@kubernetesio twitter,Kubernetes blog,kubernetes/community repo in GitHub (Issues and/or PRs),,Rarely (for reasons),no - didn't know this was a thing,I would like to but I don't have the time / employer doesn't support it,0,Not attending KubeCon,,,,
+11272797435,252143207,01/14/2020 3:42:04 AM,01/14/2020 3:49:25 AM,89.204.137.31,,,,,less than one year,not yet a member but working on it,if I had help/mentoring/support,Europe,2 or more,3,3,3,4,4,4,5: the most challenging part,2,2,2,,2,4,3,4,it's complicated.,several times a month,,"Code inside of another repo in the Kubernetes GitHub Org (example: /kubernetes-sigs, kubernetes/website, etc)",,,,,"Related projects (Helm, container runtimes, other CNCF projects, etc.)",,,,More help on getting started with issues,"rarely, but I frequently watch the video and/or read the notes",,Having a full agenda with descriptions posted several days ahead,,Additional developer tips/news content,Using the meeting to discuss project-wide development topics & roadblocks,Fewer meetings in my personal schedule,,,1,7,5,3,4,6,2,Nothing,2,4,2,3: several times a month,3: several times a month,3: several times a month,5: everyday,4,,,,,@kubernetesio twitter,Kubernetes blog,kubernetes/community repo in GitHub (Issues and/or PRs),,Rarely (for reasons),no - didn't know this was a thing,I would like to but I don't have the time / employer doesn't support it,0,Not attending KubeCon,,,,
+11272759561,252143207,01/14/2020 3:18:09 AM,01/14/2020 3:24:44 AM,3.113.195.85,,,,,two to three years,reviewer,yes,Asia,2 or more,3,3,2,4,3,4,4,4,4,3,,4,4,2,2,"no, I need to use my own time",several times a month,Core code inside of kubernetes/kubernetes,"Code inside of another repo in the Kubernetes GitHub Org (example: /kubernetes-sigs, kubernetes/website, etc)",Documentation,,,,,,,,,never,,Having a full agenda with descriptions posted several days ahead,,,,,Different timeslot for the meeting,,1,2,3,5,6,7,4,,4,3: several times a month,1: never,2,4,4,3: several times a month,2,kubernetes-dev@ mailing list,,,,,,kubernetes/community repo in GitHub (Issues and/or PRs),,Yes,yes - it was helpful,I'm inexperienced and don't know enough to mentor,1,,,,,
+11272743585,252143207,01/14/2020 2:59:44 AM,01/14/2020 3:13:20 AM,80.233.36.152,,,,,less than one year,not yet a member but working on it,yes,Europe,2 or more,1: not challenging at all,1: not challenging at all,3,1: not challenging at all,1: not challenging at all,5: the most challenging part,1: not challenging at all,3,2,4,,3,3,2,1: strongly disagree,"no, I need to use my own time",a few times a year,,,,,,,,"Don’t contribute yet, hoping to start soon",,Did a talk on deploying prow at KC 2019 Na,"Improve Prow UI so as to minimise number of mouse clicks it takes to get to error output. Use a BDD framework (given when then) for e2e tests Make it easyier for me to run PR tests ""locally"" ","rarely, but I frequently watch the video and/or read the notes",,,,Additional developer tips/news content,Using the meeting to discuss project-wide development topics & roadblocks,,Different timeslot for the meeting,As I'm contributing privately afternoon GMT time slots are awkward employer wise.,1,6,2,7,3,5,4,List lgtm,1: never,5: everyday,2,3: several times a month,2,1: never,3: several times a month,3: several times a month,kubernetes-dev@ mailing list,,,"#kubernetes-dev, #sig-foo, #sig-contribex slack",,,,,No,yes - it was helpful,I would like to but I don't have the time / employer doesn't support it,2,Other (please specify),Did 2,,,
+11272736008,252143207,01/14/2020 3:00:21 AM,01/14/2020 3:08:04 AM,199.185.175.96,,,,,three+ years,approver,yes,North America,2 or more,2,2,3,2,3,4,1: not challenging at all,3,1: not challenging at all,1: not challenging at all,,5: strongly agree,5: strongly agree,3,2,"yes, I can contribute on company time",several times a week,Core code inside of kubernetes/kubernetes,,,,,"Plugins & Drivers (CSI, CNI, cloud providers)","Related projects (Helm, container runtimes, other CNCF projects, etc.)",,,,,never,,,,,,,,Nothing. I don't attend any meeting I can avoid attending,,1,2,,,,3,,3: several times a month,4,1: never,3: several times a month,5: everyday,1: never,1: never,3: several times a month,kubernetes-dev@ mailing list,,,,,,,,Rarely (for reasons),no - didn't know this was a thing,,3+,,,,,
+11272731911,252143207,01/14/2020 2:50:21 AM,01/14/2020 3:05:11 AM,78.45.130.103,,,,,one to two years,reviewer,yes,Europe,2 or more,2,3,3,1: not challenging at all,2,4,4,3,1: not challenging at all,2,,5: strongly agree,4,2,3,"yes, I can contribute on company time",several times a week,,,,Testing & Infrastructure,,,,,,,,never,,,,,,Fewer meetings in my personal schedule,,,2,5,4,6,7,3,1,,1: never,5: everyday,1: never,3: several times a month,5: everyday,1: never,1: never,2,kubernetes-dev@ mailing list,,,"#kubernetes-dev, #sig-foo, #sig-contribex slack",,,,,Yes,no - didn't know this was a thing,I'm inexperienced and don't know enough to mentor,0,Not attending KubeCon,,,,
+11272714124,252143207,01/14/2020 2:41:58 AM,01/14/2020 2:52:43 AM,194.100.106.190,,,,,one to two years,not yet a member but working on it,if I had more free time,Europe,1 other,3,5: the most challenging part,2,3,2,3,3,3,2,2,,4,4,3,2,"yes, I can contribute on company time",several times a month,,,Documentation,,,"Plugins & Drivers (CSI, CNI, cloud providers)",,,,,,"rarely, but I frequently watch the video and/or read the notes",,,,,Using the meeting to discuss project-wide development topics & roadblocks,,,,,,,,,,,,5: everyday,3: several times a month,1: never,2,4,1: never,4,4,kubernetes-dev@ mailing list,,,,,,kubernetes/community repo in GitHub (Issues and/or PRs),,Yes,no - didn't know this was a thing,I would like to but I don't have the time / employer doesn't support it,0,Other (please specify),lack of time,,,
+11272705067,252143207,01/14/2020 2:34:20 AM,01/14/2020 2:46:03 AM,151.42.69.54,,,,,less than one year,not yet a member but working on it,yes,Europe,this is my first open source project!,2,2,1: not challenging at all,2,2,1: not challenging at all,2,5: the most challenging part,2,4,,3,4,2,1: strongly disagree,"no, I need to use my own time",a few times a year,Core code inside of kubernetes/kubernetes,"Code inside of another repo in the Kubernetes GitHub Org (example: /kubernetes-sigs, kubernetes/website, etc)",Documentation,,,,,,,,"I'd assume there are a few very popular development environments/tools that most contributors use. Having detailed instructions on how to set up them, especially for advanced use cases (e.g. debugging/running only a specific K8s component) would help, or, if such resources are already available, it would be nice to make them more discoverable.",never,,,,,,Fewer meetings in my personal schedule,,,2,3,4,5,6,7,1,,4,5: everyday,1: never,1: never,4,1: never,4,1: never,,,,,,,kubernetes/community repo in GitHub (Issues and/or PRs),,No,yes - it was helpful,I'm inexperienced and don't know enough to mentor,0,Not attending KubeCon,,,,
+11272699232,252143207,01/14/2020 2:28:09 AM,01/14/2020 2:41:51 AM,193.16.224.15,,,,,less than one year,not yet a member but working on it,yes,Europe,2 or more,2,3,1: not challenging at all,3,3,2,4,3,3,2,,3,3,2,1: strongly disagree,"yes, I can contribute on company time",a few times a year,,"Code inside of another repo in the Kubernetes GitHub Org (example: /kubernetes-sigs, kubernetes/website, etc)",Documentation,,,,"Related projects (Helm, container runtimes, other CNCF projects, etc.)",,,,More documentation in some of the projects,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,
+11272695097,252143207,01/14/2020 2:33:24 AM,01/14/2020 2:38:48 AM,106.219.216.164,,,,,less than one year,member,if I had help/mentoring/support,Asia,1 other,4,2,2,3,2,3,4,4,2,2,,3,3,4,2,"no, I need to use my own time",every day,,"Code inside of another repo in the Kubernetes GitHub Org (example: /kubernetes-sigs, kubernetes/website, etc)",Documentation,,Community & Project management; SIG Chair etc.,,,,Release,,,"rarely, but I frequently watch the video and/or read the notes",,Having a full agenda with descriptions posted several days ahead,,,,,Different timeslot for the meeting,,2,5,1,7,4,6,3,,5: everyday,5: everyday,2,4,5: everyday,2,4,5: everyday,kubernetes-dev@ mailing list,,,,@kubernetesio twitter,Kubernetes blog,kubernetes/community repo in GitHub (Issues and/or PRs),,Rarely (for reasons),yes - it wasn't helpful,I am already mentoring (you'll include your email in the last question because you want swag!),2,,,,,
+11272647493,252143207,01/14/2020 1:22:07 AM,01/14/2020 2:03:49 AM,77.29.96.203,,,,,less than one year,not yet a member but working on it,if I had help/mentoring/support,Europe,1 other,4,4,,3,4,5: the most challenging part,3,5: the most challenging part,4,4,,4,3,3,5: strongly agree,"yes, I can contribute on company time",several times a month,,,Documentation,,,,,,,,,"rarely, but I frequently watch the video and/or read the notes",,,,,,,Different timeslot for the meeting,,,,,,,,,,5: everyday,4,1: never,3: several times a month,3: several times a month,1: never,3: several times a month,3: several times a month,kubernetes-dev@ mailing list,,,,@kubernetesio twitter,,,,No,yes - it was helpful,I'm inexperienced and don't know enough to mentor,0,"Funding (no work support, or cannot afford to individually go)",,,,
+11272627817,252143207,01/14/2020 1:41:57 AM,01/14/2020 1:48:41 AM,192.198.151.43,,,,,less than one year,reviewer,yes,Europe,this is my first open source project!,4,2,3,2,3,2,2,4,3,3,,4,4,2,2,"yes, I can contribute on company time",several times a month,Core code inside of kubernetes/kubernetes,,,,Community & Project management; SIG Chair etc.,"Plugins & Drivers (CSI, CNI, cloud providers)",,,,,,never,,,,,,,Different timeslot for the meeting,,2,,1,,,,3,,2,5: everyday,1: never,4,5: everyday,2,3: several times a month,4,,,,,@kubernetesio twitter,,,,No,no - didn't know this was a thing,I'm inexperienced and don't know enough to mentor,0,"Funding (no work support, or cannot afford to individually go)",,,,
+11272616086,252143207,01/13/2020 11:30:05 PM,01/14/2020 1:39:55 AM,165.225.194.97,,,,,less than one year,not yet a member but working on it,no,Europe,this is my first open source project!,2,3,2,3,2,3,2,3,2,3,,2,2,2,2,"no, I need to use my own time",a few times a year,,,,,,,,"Don’t contribute yet, hoping to start soon",,,,never,,,,,,Fewer meetings in my personal schedule,,,,2,,,,,,,2,4,2,2,2,2,2,2,,,,,,Kubernetes blog,,,No,yes - it was helpful,I'm inexperienced and don't know enough to mentor,0,Attending other conference,,,,
+11272592702,252143207,01/14/2020 1:12:18 AM,01/14/2020 1:22:38 AM,104.132.162.87,,,,,one to two years,reviewer,yes,Europe,this is my first open source project!,4,4,4,2,4,3,4,2,2,2,,4,3,5: strongly agree,4,"yes, I can contribute on company time",every day,Core code inside of kubernetes/kubernetes,"Code inside of another repo in the Kubernetes GitHub Org (example: /kubernetes-sigs, kubernetes/website, etc)",,,,,,,,KEPs,Making sure that efforts are visible within SIGs so that I can help other people.,never,,,,,,Fewer meetings in my personal schedule,,,5,2,1,4,6,7,3,Effort visibility.,4,5: everyday,1: never,2,4,1: never,1: never,2,kubernetes-dev@ mailing list,,,,,,,,Yes,"no - i don't need mentoring, guidance, or other resources","Yes, please contact me (you'll include your email in the last question)",3+,,,,,
+11272553071,252143207,01/14/2020 12:45:32 AM,01/14/2020 12:53:38 AM,94.2.247.140,,,,,less than one year,there's a contributor ladder?,yes,Europe,2 or more,2,2,2,3,2,5: the most challenging part,4,4,3,2,,2,4,4,3,"no, I need to use my own time",a few times a year,,,,,,,"Related projects (Helm, container runtimes, other CNCF projects, etc.)",,,,"Better contributing docs, especially around dev environment setup, local debugging, test error investigation","rarely, but I frequently watch the video and/or read the notes",,,,,,Fewer meetings in my personal schedule,,,2,3,6,4,5,7,1,Perhaps specific new contributor sessions that are sig specific.,2,5: everyday,2,4,4,1: never,3: several times a month,4,,,,"#kubernetes-dev, #sig-foo, #sig-contribex slack",,,,,Yes,no - didn't know this was a thing,I'm inexperienced and don't know enough to mentor,0,Not attending KubeCon,,,,
+11272552546,252143207,01/14/2020 12:24:01 AM,01/14/2020 12:53:12 AM,46.88.75.160,,,,,two to three years,not yet a member but working on it,no,Europe,2 or more,2,4,1: not challenging at all,1: not challenging at all,3,5: the most challenging part,3,2,2,2,"./hack/ folder contains a lot of things you have no idea and people that help in your PR refer to execute x or y and this looks really weird, that after 20 minutes runtime of a script a oneline change in some weird bazel (?) file is now fixing things.",1: strongly disagree,2,5: strongly agree,3,"yes, I can contribute on company time",a few times a year,Core code inside of kubernetes/kubernetes,,Documentation,,,,,,,kubernetes ecosystem mostly ingress related,"If there would be good documentation on how to read the logs from the PR test grid, would be nice. As a contributor you have often no idea, if this is your fault or is this a flaky test or do you have to run ./hack/fix-all-the-shit-foo-bar.sh to fix it. Very annoying and long for contributors. I also think people should read guides from the Go maintainers to understand how to write Go code. The whole IntOrString types are the biggest mess I ever worked with and we should really think about how to reduce such weird complexity, that adds no value. ",never,,,,,,,Different timeslot for the meeting,,4,2,6,7,5,3,1,"Sometimes I observed import side effects in code, which created memory problems in runtime behavior (metrics cardinality explosion). I found at least 3 times the same error in kubernetes versions 1.8 to 1.13 across multiple sig-*. So we should disallow completely side-effect imports, and work on cross sig-* communication to reduce errors we already made in the past. It would be also nice to have at least one of the core maintainers available in each sig, like sig-autoscaling, which seems really needed for decisions and directions (The idea of how HPA and VPA calculate the ""increase/decrease"" is not in sync at all. HPA is an average across all containers of a pod, and VPA wants to change only a container that opt-in an increase).",4,5: everyday,1: never,2,2,1: never,1: never,4,,,,"#kubernetes-dev, #sig-foo, #sig-contribex slack",,,,,No,"no - i don't need mentoring, guidance, or other resources",I would like to but I don't have the time / employer doesn't support it,2,Not attending KubeCon,,,,
+11272547546,252143207,01/14/2020 12:38:10 AM,01/14/2020 12:49:21 AM,83.52.140.186,,,,,one to two years,member,yes,Europe,this is my first open source project!,2,,1: not challenging at all,3,2,3,5: the most challenging part,4,3,2,It is hard to contribute when most of the work if done by full time contributors. Sometimes it is not possible to complete a code review before it is merged by others.,1: strongly disagree,2,3,3,it's complicated.,a few times a year,,"Code inside of another repo in the Kubernetes GitHub Org (example: /kubernetes-sigs, kubernetes/website, etc)",,,,,,,,,"Be more friendly to part-time contributors. By friendly, I mean, make it easier for us to actually contribute. We are welcome, but it's hard to make real contributions without expending a lot of our time in the project. It has become too professional, in some way. ",never,,,,,,Fewer meetings in my personal schedule,,,1,5,2,4,6,7,3,Nothing I can think right now.,3: several times a month,3: several times a month,1: never,4,4,1: never,2,4,kubernetes-dev@ mailing list,,,,,,,,Rarely (for reasons),no - didn't know this was a thing,I would like to but I don't have the time / employer doesn't support it,1,Not attending KubeCon,,,,
+11272509435,252143207,01/14/2020 12:14:34 AM,01/14/2020 12:19:05 AM,85.76.68.17,,,,,less than one year,there's a contributor ladder?,if I had more free time,Europe,2 or more,3,3,3,4,2,4,3,4,4,3,,3,2,2,3,"yes, I can contribute on company time",a few times a year,,,,,,,"Related projects (Helm, container runtimes, other CNCF projects, etc.)",,,,,never,,,,,,,,Not interested in meetings,,,,,,,,,1: never,4,1: never,1: never,5: everyday,1: never,2,1: never,,,,,,Kubernetes blog,kubernetes/community repo in GitHub (Issues and/or PRs),,No,no - didn't know this was a thing,,0,Not attending KubeCon,,,,
+11272505290,252143207,01/14/2020 12:07:01 AM,01/14/2020 12:15:26 AM,46.223.163.179,,,,,three+ years,member,if I had help/mentoring/support,Europe,1 other,3,2,1: not challenging at all,2,1: not challenging at all,3,3,2,2,1: not challenging at all,,5: strongly agree,4,3,3,it's complicated.,several times a month,Core code inside of kubernetes/kubernetes,,Documentation,Testing & Infrastructure,,"Plugins & Drivers (CSI, CNI, cloud providers)","Related projects (Helm, container runtimes, other CNCF projects, etc.)",,,,PR Reviews specially clean ups needs sind often very long which could bei faster.,"rarely, but I frequently watch the video and/or read the notes",,,,,,Fewer meetings in my personal schedule,,,1,3,2,4,5,6,7,From my point of view nothing,3: several times a month,5: everyday,2,3: several times a month,4,1: never,3: several times a month,3: several times a month,kubernetes-dev@ mailing list,,,,,,kubernetes/community repo in GitHub (Issues and/or PRs),,Rarely (for reasons),no - didn't know this was a thing,I would like to but I don't have the time / employer doesn't support it,1,Not attending KubeCon,,,,
+11272431080,252143207,01/13/2020 10:58:09 PM,01/13/2020 11:02:54 PM,95.5.129.156,,,,,less than one year,there's a contributor ladder?,yes,Europe,this is my first open source project!,1: not challenging at all,1: not challenging at all,1: not challenging at all,4,1: not challenging at all,2,1: not challenging at all,1: not challenging at all,1: not challenging at all,1: not challenging at all,,4,5: strongly agree,4,2,"no, I need to use my own time",several times a week,,,,,,,,"Don’t contribute yet, hoping to start soon",,,,once a month,,,,Additional developer tips/news content,,,,,1,2,3,4,5,6,7,,3: several times a month,5: everyday,3: several times a month,2,3: several times a month,2,5: everyday,3: several times a month,kubernetes-dev@ mailing list,,,"#kubernetes-dev, #sig-foo, #sig-contribex slack",@kubernetesio twitter,,,,Yes,no - didn't know this was a thing,I'm inexperienced and don't know enough to mentor,0,Not attending KubeCon,,,,
+11272419515,252143207,01/13/2020 10:35:33 PM,01/13/2020 10:50:28 PM,105.136.20.241,,,,,less than one year,not yet a member but working on it,yes,Africa,this is my first open source project!,1: not challenging at all,1: not challenging at all,1: not challenging at all,3,3,3,4,4,3,2,,3,3,3,3,"no, I need to use my own time",a few times a year,,,,,,,,"Don’t contribute yet, hoping to start soon",,,Clear doc on order to inderstand architecture and impact on code,once a month,,Having a full agenda with descriptions posted several days ahead,,Additional developer tips/news content,Using the meeting to discuss project-wide development topics & roadblocks,,,,1,3,2,5,4,6,7,Nothing,5: everyday,2,1: never,2,2,1: never,3: several times a month,4,kubernetes-dev@ mailing list,,,,,,,,No,no - didn't know this was a thing,I'm inexperienced and don't know enough to mentor,0,"Funding (no work support, or cannot afford to individually go)",,,,
+11272417731,252143207,01/13/2020 10:43:35 PM,01/13/2020 10:48:27 PM,115.99.59.48,,,,,less than one year,not yet a member but working on it,if I had more free time,Asia,2 or more,1: not challenging at all,3,1: not challenging at all,1: not challenging at all,1: not challenging at all,1: not challenging at all,3,3,1: not challenging at all,1: not challenging at all,,5: strongly agree,5: strongly agree,1: strongly disagree,2,"no, I need to use my own time",a few times a year,,,,Testing & Infrastructure,,,,,,,,once a month,"Nothing, I attend and think they are great",,,,,,,,1,2,3,4,5,6,7,,4,4,1: never,3: several times a month,4,1: never,3: several times a month,3: several times a month,,,,,,,kubernetes/community repo in GitHub (Issues and/or PRs),,Yes,no - didn't know this was a thing,I'm inexperienced and don't know enough to mentor,0,Not attending KubeCon,,,,
+11272413797,252143207,01/13/2020 10:35:04 PM,01/13/2020 10:44:07 PM,27.59.135.231,,,,,less than one year,not yet a member but working on it,if I had help/mentoring/support,Asia,1 other,1: not challenging at all,1: not challenging at all,2,2,2,4,5: the most challenging part,3,2,1: not challenging at all,,3,3,1: strongly disagree,2,"yes, I can contribute on company time",a few times a year,Core code inside of kubernetes/kubernetes,,,,,,,,,,If there is easy way to find mentors,few times a year,,,,,,,Different timeslot for the meeting,,1,3,2,4,5,6,7,,3: several times a month,1: never,1: never,1: never,3: several times a month,1: never,3: several times a month,2,kubernetes-dev@ mailing list,,,,,,,,Yes,no - didn't know this was a thing,I'm inexperienced and don't know enough to mentor,0,"Funding (no work support, or cannot afford to individually go)",,,,
+11272411287,252143207,01/13/2020 10:34:27 PM,01/13/2020 10:41:20 PM,83.232.61.215,,,,,less than one year,not yet a member but working on it,yes,Europe,this is my first open source project!,3,4,2,1: not challenging at all,4,5: the most challenging part,4,4,3,3,,2,3,3,3,"no, I need to use my own time",several times a month,,,Documentation,Testing & Infrastructure,,,,,,,Identify issues that can be picked up by a newbie.,try to make it to all of them (3-4 a month),"Nothing, I attend and think they are great",,,,Using the meeting to discuss project-wide development topics & roadblocks,,,,1,7,3,4,5,6,2,,5: everyday,4,1: never,3: several times a month,3: several times a month,1: never,3: several times a month,3: several times a month,kubernetes-dev@ mailing list,,,"#kubernetes-dev, #sig-foo, #sig-contribex slack",@kubernetesio twitter,,,,No,yes - it was helpful,I'm inexperienced and don't know enough to mentor,0,Not attending KubeCon,,,,
+11272386618,252143207,01/13/2020 10:05:43 PM,01/13/2020 10:13:02 PM,183.82.21.104,,,,,one to two years,not yet a member but working on it,yes,Asia,1 other,2,2,3,4,2,3,4,3,2,3,,3,4,3,3,"no, I need to use my own time",a few times a year,,"Code inside of another repo in the Kubernetes GitHub Org (example: /kubernetes-sigs, kubernetes/website, etc)",,,,,"Related projects (Helm, container runtimes, other CNCF projects, etc.)",,,,,"rarely, but I frequently watch the video and/or read the notes",,,,,,Fewer meetings in my personal schedule,Different timeslot for the meeting,,1,6,3,4,7,5,2,,3: several times a month,4,2,2,3: several times a month,2,3: several times a month,4,kubernetes-dev@ mailing list,,,"#kubernetes-dev, #sig-foo, #sig-contribex slack",@kubernetesio twitter,Kubernetes blog,,,No,yes - it was helpful,I'm inexperienced and don't know enough to mentor,1,"Funding (no work support, or cannot afford to individually go)",,,,
+11272373810,252143207,01/13/2020 9:53:57 PM,01/13/2020 9:59:01 PM,89.27.96.254,,,,,one to two years,not yet a member but working on it,if I had more free time,Europe,2 or more,2,3,2,4,3,3,2,2,2,3,,2,2,2,3,"yes, I can contribute on company time",several times a month,,"Code inside of another repo in the Kubernetes GitHub Org (example: /kubernetes-sigs, kubernetes/website, etc)",Documentation,,Community & Project management; SIG Chair etc.,,"Related projects (Helm, container runtimes, other CNCF projects, etc.)",,,,,never,,,,,,,,,7,1,3,4,6,5,2,,3: several times a month,3: several times a month,2,,4,2,2,3: several times a month,kubernetes-dev@ mailing list,,,"#kubernetes-dev, #sig-foo, #sig-contribex slack",,,kubernetes/community repo in GitHub (Issues and/or PRs),,No,no - didn't know this was a thing,I would like to but I don't have the time / employer doesn't support it,0,Not attending KubeCon,,,,
+11272361251,252143207,01/13/2020 8:20:58 PM,01/13/2020 9:44:32 PM,157.45.82.223,,,,,three+ years,not yet a member but working on it,yes,Asia,2 or more,5: the most challenging part,1: not challenging at all,2,2,1: not challenging at all,2,2,1: not challenging at all,3,5: the most challenging part,,4,3,4,5: strongly agree,"yes, I can contribute on company time",several times a week,Core code inside of kubernetes/kubernetes,"Code inside of another repo in the Kubernetes GitHub Org (example: /kubernetes-sigs, kubernetes/website, etc)",,,,"Plugins & Drivers (CSI, CNI, cloud providers)","Related projects (Helm, container runtimes, other CNCF projects, etc.)",,,Planning to contribute in SIG Release as well,"Get the help and Mentoring from core contributors, Design docs , detailed issue description related to a issue",once a month,"Nothing, I attend and think they are great",,,Additional developer tips/news content,Using the meeting to discuss project-wide development topics & roadblocks,,,,1,5,2,4,6,7,3,Design docs,5: everyday,5: everyday,4,5: everyday,4,1: never,3: several times a month,5: everyday,kubernetes-dev@ mailing list,,kubernetes-sig-contribex@ mailing list,"#kubernetes-dev, #sig-foo, #sig-contribex slack",@kubernetesio twitter,,,,Yes,yes - it was helpful,I am already mentoring (you'll include your email in the last question because you want swag!),0,"Funding (no work support, or cannot afford to individually go)",,,,
+11272345798,252143207,01/13/2020 9:15:31 PM,01/13/2020 9:26:27 PM,118.185.143.249,,,,,one to two years,not yet a member but working on it,yes,Asia,1 other,3,1: not challenging at all,1: not challenging at all,2,3,2,2,2,4,2,,4,2,3,3,"yes, I can contribute on company time",several times a week,,,Documentation,Testing & Infrastructure,,"Plugins & Drivers (CSI, CNI, cloud providers)",,,,,NO,never,"Nothing, I attend and think they are great",Having a full agenda with descriptions posted several days ahead,,,,,Different timeslot for the meeting,,4,2,6,5,3,7,1,NOTHING,5: everyday,3: several times a month,3: several times a month,2,2,2,2,2,,,,,@kubernetesio twitter,Kubernetes blog,kubernetes/community repo in GitHub (Issues and/or PRs),,Yes,no - didn't know this was a thing,I'm inexperienced and don't know enough to mentor,0,"Funding (no work support, or cannot afford to individually go)",,,,
+11272313551,252143207,01/13/2020 8:42:05 PM,01/13/2020 8:51:03 PM,157.51.81.135,,,,,less than one year,not yet a member but working on it,yes,Asia,1 other,1: not challenging at all,2,1: not challenging at all,4,3,3,4,3,3,2,,4,4,1: strongly disagree,2,"yes, I can contribute on company time",a few times a year,,,Documentation,,,,"Related projects (Helm, container runtimes, other CNCF projects, etc.)",,,,NA,"rarely, but I frequently watch the video and/or read the notes","Nothing, I attend and think they are great",,,,,,,,,,,,,,7,NA,5: everyday,5: everyday,2,3: several times a month,,,,,,,,"#kubernetes-dev, #sig-foo, #sig-contribex slack",@kubernetesio twitter,,,,Yes,yes - it was helpful,I'm inexperienced and don't know enough to mentor,1,"Funding (no work support, or cannot afford to individually go)",,,,
+11272267165,252143207,01/13/2020 7:51:02 PM,01/13/2020 8:04:34 PM,49.207.58.229,,,,,two to three years,member,if I had help/mentoring/support,Asia,2 or more,3,1: not challenging at all,1: not challenging at all,4,2,3,5: the most challenging part,2,1: not challenging at all,4,,4,4,5: strongly agree,2,"yes, I can contribute on company time",a few times a year,Core code inside of kubernetes/kubernetes,"Code inside of another repo in the Kubernetes GitHub Org (example: /kubernetes-sigs, kubernetes/website, etc)",,Testing & Infrastructure,,,,,,,"Yeah, probably have a mentoring or a walk through session on how to find issues to contribute on.",never,,Having a full agenda with descriptions posted several days ahead,,Additional developer tips/news content,,,,,1,5,2,6,4,7,3,,2,5: everyday,1: never,3: several times a month,4,1: never,2,3: several times a month,,,,"#kubernetes-dev, #sig-foo, #sig-contribex slack",@kubernetesio twitter,Kubernetes blog,,,Rarely (for reasons),yes - it was helpful,"Yes, please contact me (you'll include your email in the last question)",0,"Funding (no work support, or cannot afford to individually go)",,,,
+11272257727,252143207,01/13/2020 7:35:29 PM,01/13/2020 7:55:41 PM,185.222.221.84,,,,,two to three years,member,if I had help/mentoring/support,Asia,2 or more,1: not challenging at all,2,1: not challenging at all,2,1: not challenging at all,2,3,1: not challenging at all,3,2,,5: strongly agree,4,2,2,"yes, I can contribute on company time",several times a month,Core code inside of kubernetes/kubernetes,"Code inside of another repo in the Kubernetes GitHub Org (example: /kubernetes-sigs, kubernetes/website, etc)",Documentation,,,,"Related projects (Helm, container runtimes, other CNCF projects, etc.)",,,,Great CI tools.,"rarely, but I frequently watch the video and/or read the notes","Nothing, I attend and think they are great",Having a full agenda with descriptions posted several days ahead,Eliminating the demo at the beginning,Additional developer tips/news content,Using the meeting to discuss project-wide development topics & roadblocks,Fewer meetings in my personal schedule,Different timeslot for the meeting,,1,5,3,6,2,7,4,Good mentors can make it easier for newcomers to integrate into the community,5: everyday,4,2,2,5: everyday,5: everyday,4,3: several times a month,kubernetes-dev@ mailing list,,,"#kubernetes-dev, #sig-foo, #sig-contribex slack",@kubernetesio twitter,Kubernetes blog,kubernetes/community repo in GitHub (Issues and/or PRs),"I have a Chinese channel, k8s ecosystem weekly. https://zhuanlan.zhihu.com/container",Yes,yes - it was helpful,I'm inexperienced and don't know enough to mentor,1,Other (please specify),No time.,,,
+11272254110,252143207,01/13/2020 6:27:21 PM,01/13/2020 7:52:19 PM,124.35.23.26,,,,,less than one year,not yet a member but working on it,yes,Asia,this is my first open source project!,5: the most challenging part,5: the most challenging part,3,5: the most challenging part,5: the most challenging part,5: the most challenging part,5: the most challenging part,4,4,4,,4,2,4,4,"no, I need to use my own time",several times a month,,"Code inside of another repo in the Kubernetes GitHub Org (example: /kubernetes-sigs, kubernetes/website, etc)",,,,,,,,,,never,,,,,,,,Timezone,1,2,3,4,5,6,7,,2,5: everyday,1: never,1: never,3: several times a month,1: never,1: never,1: never,,,,,,,,twitter,Yes,no - didn't know this was a thing,I'm inexperienced and don't know enough to mentor,1,,,,,
+11272251344,252143207,01/13/2020 7:37:11 PM,01/13/2020 7:49:44 PM,50.55.59.103,,,,,one to two years,member,yes,North America,2 or more,5: the most challenging part,4,4,4,4,5: the most challenging part,4,5: the most challenging part,2,3,,3,3,3,1: strongly disagree,"yes, I can contribute on company time",several times a week,Core code inside of kubernetes/kubernetes,"Code inside of another repo in the Kubernetes GitHub Org (example: /kubernetes-sigs, kubernetes/website, etc)",,,,,,,,,"Too few people own too many pieces. Have to wait for several people to get approval on anything non trivial, no one wants to make a decision, and a few people have responsibilities in too many areas.",never,,Having a full agenda with descriptions posted several days ahead,,,,Fewer meetings in my personal schedule,,,2,3,4,6,7,5,1,Better in depth contributor docs.,3: several times a month,5: everyday,1: never,4,5: everyday,1: never,2,4,kubernetes-dev@ mailing list,,,,,,,,Yes,no - didn't know this was a thing,I would like to but I don't have the time / employer doesn't support it,1,"Funding (no work support, or cannot afford to individually go)",,,,
+11272244809,252143207,01/13/2020 7:31:47 PM,01/13/2020 7:43:38 PM,106.51.72.125,,,,,less than one year,there's a contributor ladder?,yes,Asia,2 or more,1: not challenging at all,1: not challenging at all,1: not challenging at all,5: the most challenging part,5: the most challenging part,5: the most challenging part,2,5: the most challenging part,1: not challenging at all,1: not challenging at all,,1: strongly disagree,1: strongly disagree,1: strongly disagree,1: strongly disagree,"yes, I can contribute on company time",every day,,,,,,,,"Don’t contribute yet, hoping to start soon",,,Most of the sig meetings are outside of my normal working hours. It will be great if the sig meetings can be well documented to understand the minutes of meeting without being able to attend through video. It will be nice to have enough notifications via twitter for example.,never,,Having a full agenda with descriptions posted several days ahead,,Additional developer tips/news content,,,,,,,,,,,1,,,5: everyday,,,4,,,5: everyday,,,,,@kubernetesio twitter,Kubernetes blog,kubernetes/community repo in GitHub (Issues and/or PRs),,Yes,no - didn't know this was a thing,"Yes, please contact me (you'll include your email in the last question)",0,"Funding (no work support, or cannot afford to individually go)",,,,
+11272240855,252143207,01/13/2020 7:23:04 PM,01/13/2020 7:40:00 PM,95.31.126.28,,,,,less than one year,there's a contributor ladder?,no,Europe,2 or more,1: not challenging at all,4,,2,1: not challenging at all,1: not challenging at all,1: not challenging at all,3,1: not challenging at all,1: not challenging at all,Getting a code review/feedback,4,4,1: strongly disagree,1: strongly disagree,"yes, I can contribute on company time",a few times a year,Core code inside of kubernetes/kubernetes,,,,,,,,,,,never,,,,,,,,,2,3,4,5,6,7,1,,2,2,1: never,2,2,1: never,1: never,2,kubernetes-dev@ mailing list,,,,,,kubernetes/community repo in GitHub (Issues and/or PRs),,No,no - didn't know this was a thing,I'm inexperienced and don't know enough to mentor,0,Not attending KubeCon,,,,
+11272208948,252143207,01/13/2020 7:00:34 PM,01/13/2020 7:12:02 PM,111.108.6.158,,,,,less than one year,there's a contributor ladder?,yes,Asia,this is my first open source project!,2,1: not challenging at all,1: not challenging at all,1: not challenging at all,1: not challenging at all,1: not challenging at all,1: not challenging at all,1: not challenging at all,1: not challenging at all,1: not challenging at all,,3,3,4,5: strongly agree,"no, I need to use my own time",a few times a year,,,Documentation,,,,,,,,The ways are that face-to-face people who has already contributed can tell their experiences.,never,,,,,,,Different timeslot for the meeting,,4,2,3,6,5,7,1,Functions or fields that members are good at. Knowing their profile increases my interests.,2,5: everyday,1: never,1: never,4,1: never,1: never,1: never,,,,"#kubernetes-dev, #sig-foo, #sig-contribex slack",,Kubernetes blog,kubernetes/community repo in GitHub (Issues and/or PRs),,No,no - didn't know this was a thing,I would like to but I don't have the time / employer doesn't support it,0,"Funding (no work support, or cannot afford to individually go)",,,,
+11272131840,252143207,01/13/2020 5:55:35 PM,01/13/2020 6:10:00 PM,122.178.212.152,,,,,less than one year,not yet a member but working on it,if I had help/mentoring/support,Asia,2 or more,3,3,2,2,3,3,4,2,2,2,,3,4,5: strongly agree,4,it's complicated.,several times a month,,,,,,,,"Don’t contribute yet, hoping to start soon",,,,"rarely, but I frequently watch the video and/or read the notes",,,,,,,Different timeslot for the meeting,,1,5,3,2,6,7,4,There should be some low hanging task which could be quickly picked up by new comers/just joined the group so that they can go through the complete flow easily. It can be staging or practise environment (different branch) which will take the new comer through the complete cycle - also a way to kind of filter any mistakes caused by rookies.,4,3: several times a month,3: several times a month,4,4,2,5: everyday,5: everyday,kubernetes-dev@ mailing list,,,,,,,,Rarely (for reasons),no - didn't know this was a thing,"Yes, please contact me (you'll include your email in the last question)",0,"Funding (no work support, or cannot afford to individually go)",,,,
+11272117996,252143207,01/13/2020 5:51:18 PM,01/13/2020 5:59:21 PM,24.50.167.41,,,,,less than one year,reviewer,yes,North America,2 or more,3,2,4,2,4,4,2,2,2,3,,3,2,4,3,"yes, I can contribute on company time",several times a week,Core code inside of kubernetes/kubernetes,,,,,,,,,,less flakiness on CI,never,,,,,,Fewer meetings in my personal schedule,,,2,1,5,7,3,4,6,,2,4,1: never,3: several times a month,5: everyday,2,2,3: several times a month,kubernetes-dev@ mailing list,,,,,,,,Yes,no - didn't know this was a thing,I'm inexperienced and don't know enough to mentor,0,Not attending KubeCon,,,,
+11272099526,252143207,01/13/2020 5:32:31 PM,01/13/2020 5:45:24 PM,24.246.2.125,,,,,less than one year,member,if I had more free time,North America,this is my first open source project!,2,2,2,3,3,3,4,2,2,3,,3,2,3,3,"yes, I can contribute on company time",a few times a year,,"Code inside of another repo in the Kubernetes GitHub Org (example: /kubernetes-sigs, kubernetes/website, etc)",,,Community & Project management; SIG Chair etc.,,"Related projects (Helm, container runtimes, other CNCF projects, etc.)",,,,,"rarely, but I frequently watch the video and/or read the notes",,,,,,,,I would like to attend more of these meetings but I have limited time during the day when they are held.,1,6,5,4,3,7,2,,3: several times a month,4,4,3: several times a month,2,1: never,3: several times a month,3: several times a month,kubernetes-dev@ mailing list,Dedicated discuss.k8s.io forum for contributors,kubernetes-sig-contribex@ mailing list,,@kubernetesio twitter,Kubernetes blog,,,No,yes - it was helpful,"Yes, please contact me (you'll include your email in the last question)",1,Other (please specify),Attended my first summit at KubeCon SanDeigo. It was fantastic!,,,
+11272072073,252143207,01/13/2020 5:14:27 PM,01/13/2020 5:25:55 PM,71.244.132.94,,,,,one to two years,not yet a member but working on it,yes,North America,2 or more,3,2,2,4,4,4,5: the most challenging part,5: the most challenging part,,2,,3,3,3,3,"yes, I can contribute on company time",several times a month,,"Code inside of another repo in the Kubernetes GitHub Org (example: /kubernetes-sigs, kubernetes/website, etc)",Documentation,Testing & Infrastructure,,,"Related projects (Helm, container runtimes, other CNCF projects, etc.)",,,,,never,,Having a full agenda with descriptions posted several days ahead,,,,Fewer meetings in my personal schedule,Different timeslot for the meeting,,,,,,,,,,5: everyday,5: everyday,1: never,2,4,1: never,2,3: several times a month,,,,,,,,,,,,,,,,,
+11272048677,252143207,01/13/2020 5:03:36 PM,01/13/2020 5:09:24 PM,99.199.178.36,,,,,less than one year,there's a contributor ladder?,yes,North America,2 or more,3,3,3,3,3,3,3,3,3,3,,3,3,3,3,"yes, I can contribute on company time",a few times a year,,,Documentation,Testing & Infrastructure,,,"Related projects (Helm, container runtimes, other CNCF projects, etc.)",,,,No,"rarely, but I frequently watch the video and/or read the notes",,,,,Using the meeting to discuss project-wide development topics & roadblocks,,Different timeslot for the meeting,,1,2,3,4,5,6,7,Lab environment,3: several times a month,,,,,,4,2,kubernetes-dev@ mailing list,,kubernetes-sig-contribex@ mailing list,,@kubernetesio twitter,Kubernetes blog,,,Rarely (for reasons),no - didn't know this was a thing,I'm inexperienced and don't know enough to mentor,1,"Funding (no work support, or cannot afford to individually go)",,,,
+11272003269,252143207,01/13/2020 4:27:04 PM,01/13/2020 4:38:45 PM,200.52.36.164,,,,,less than one year,not yet a member but working on it,yes,North America,2 or more,,3,1: not challenging at all,1: not challenging at all,1: not challenging at all,3,5: the most challenging part,2,2,,,2,4,1: strongly disagree,1: strongly disagree,"yes, I can contribute on company time",a few times a year,,,,Testing & Infrastructure,,,,,,,,never,,,,,,,,,1,5,2,7,4,6,3,,3: several times a month,5: everyday,1: never,4,4,1: never,3: several times a month,4,kubernetes-dev@ mailing list,,,,@kubernetesio twitter,,,,No,no - didn't know this was a thing,I'm inexperienced and don't know enough to mentor,1,"Funding (no work support, or cannot afford to individually go)",,,,
+11271976431,252143207,01/13/2020 4:12:47 PM,01/13/2020 4:20:42 PM,216.80.61.6,,,,,two to three years,there's a contributor ladder?,if I had more free time,Europe,1 other,4,3,3,3,3,4,2,2,3,3,,1: strongly disagree,2,4,4,"yes, I can contribute on company time",several times a month,,"Code inside of another repo in the Kubernetes GitHub Org (example: /kubernetes-sigs, kubernetes/website, etc)",Documentation,Testing & Infrastructure,,,"Related projects (Helm, container runtimes, other CNCF projects, etc.)",,,,,few times a year,,,,,,,Different timeslot for the meeting,,1,3,5,2,6,7,4,,2,3: several times a month,3: several times a month,2,3: several times a month,1: never,2,2,,,,,,Kubernetes blog,,,Yes,no - didn't know this was a thing,I'm inexperienced and don't know enough to mentor,0,Not attending KubeCon,,,,
+11271883211,252143207,01/13/2020 3:11:11 PM,01/13/2020 3:20:08 PM,86.49.251.153,,,,,one to two years,there's a contributor ladder?,if I had more free time,Europe,2 or more,2,2,4,3,2,2,2,2,2,3,,3,3,2,2,"no, I need to use my own time",several times a week,,"Code inside of another repo in the Kubernetes GitHub Org (example: /kubernetes-sigs, kubernetes/website, etc)",,,,,"Related projects (Helm, container runtimes, other CNCF projects, etc.)",,,,,never,,,,,,,,,4,5,7,6,2,3,1,,3: several times a month,5: everyday,1: never,2,5: everyday,4,2,3: several times a month,kubernetes-dev@ mailing list,,,"#kubernetes-dev, #sig-foo, #sig-contribex slack",,,kubernetes/community repo in GitHub (Issues and/or PRs),,Yes,no - didn't know this was a thing,I would like to but I don't have the time / employer doesn't support it,0,"Funding (no work support, or cannot afford to individually go)",,,,
+11271882214,252143207,01/13/2020 3:11:57 PM,01/13/2020 3:19:32 PM,46.7.158.34,,,,,one to two years,not yet a member but working on it,if I had more free time,Europe,2 or more,4,2,2,4,1: not challenging at all,1: not challenging at all,3,1: not challenging at all,1: not challenging at all,3,,4,4,1: strongly disagree,1: strongly disagree,"no, I need to use my own time",several times a month,,"Code inside of another repo in the Kubernetes GitHub Org (example: /kubernetes-sigs, kubernetes/website, etc)",Documentation,,,,"Related projects (Helm, container runtimes, other CNCF projects, etc.)",,,,Formal process for finding a mentor?,few times a year,,,,,,Fewer meetings in my personal schedule,,,1,3,6,4,7,5,2,N/A,2,5: everyday,1: never,2,3: several times a month,1: never,1: never,1: never,,,,"#kubernetes-dev, #sig-foo, #sig-contribex slack",,,kubernetes/community repo in GitHub (Issues and/or PRs),,Yes,no - didn't know this was a thing,I'm inexperienced and don't know enough to mentor,0,"Funding (no work support, or cannot afford to individually go)",,,,
+11271860400,252143207,01/13/2020 2:54:33 PM,01/13/2020 3:06:30 PM,176.199.211.124,,,,,two to three years,not yet a member but working on it,if I had more free time,Europe,2 or more,2,1: not challenging at all,2,1: not challenging at all,1: not challenging at all,2,5: the most challenging part,4,2,1: not challenging at all,,4,4,3,2,"yes, I can contribute on company time",several times a month,,"Code inside of another repo in the Kubernetes GitHub Org (example: /kubernetes-sigs, kubernetes/website, etc)",,,,"Plugins & Drivers (CSI, CNI, cloud providers)",,,,,Easier local dev setup,"rarely, but I frequently watch the video and/or read the notes",,,,Additional developer tips/news content,Using the meeting to discuss project-wide development topics & roadblocks,,Different timeslot for the meeting,,1,2,3,5,4,6,7,Nothing,5: everyday,4,2,3: several times a month,4,1: never,3: several times a month,3: several times a month,kubernetes-dev@ mailing list,,,,@kubernetesio twitter,Kubernetes blog,,,Yes,no - didn't know this was a thing,I would like to but I don't have the time / employer doesn't support it,0,Not attending KubeCon,,,,
+11271831616,252143207,01/13/2020 2:32:38 PM,01/13/2020 2:50:08 PM,143.101.132.28,,,,,two to three years,approver,yes,North America,2 or more,5: the most challenging part,5: the most challenging part,2,3,4,5: the most challenging part,2,2,4,2,,4,5: strongly agree,4,1: strongly disagree,"yes, I can contribute on company time",every day,Core code inside of kubernetes/kubernetes,,Documentation,Testing & Infrastructure,,,,,,,folks in the community,once a month,,Having a full agenda with descriptions posted several days ahead,,Additional developer tips/news content,,,,,1,7,4,3,2,6,5,NONE,2,5: everyday,3: several times a month,3: several times a month,5: everyday,1: never,2,2,kubernetes-dev@ mailing list,,,"#kubernetes-dev, #sig-foo, #sig-contribex slack",,,kubernetes/community repo in GitHub (Issues and/or PRs),,No,no - didn't know this was a thing,"Yes, please contact me (you'll include your email in the last question)",3+,,,,,
+11271828708,252143207,01/13/2020 2:40:13 PM,01/13/2020 2:48:29 PM,99.42.144.7,,,,,less than one year,there's a contributor ladder?,yes,North America,1 other,2,2,1: not challenging at all,1: not challenging at all,2,3,4,2,1: not challenging at all,1: not challenging at all,,1: strongly disagree,2,1: strongly disagree,1: strongly disagree,"no, I need to use my own time",a few times a year,,,Documentation,,,,,,,,n/a,"rarely, but I frequently watch the video and/or read the notes",,,,,,Fewer meetings in my personal schedule,,,1,3,4,5,6,7,2,n/a,2,5: everyday,1: never,3: several times a month,4,1: never,4,3: several times a month,kubernetes-dev@ mailing list,,,,,,,,Yes,no - didn't know this was a thing,I'm inexperienced and don't know enough to mentor,0,Not attending KubeCon,,,,
+11271814292,252143207,01/13/2020 2:15:15 PM,01/13/2020 2:40:37 PM,73.202.199.175,,,,,one to two years,subproject owner,"no, already a subproject owner (highest level on the ladder)",North America,2 or more,3,2,2,1: not challenging at all,1: not challenging at all,4,3,3,3,3,Running prow jobs locally is challenging (but has become less challenging in recent months),3,3,2,2,"yes, I can contribute on company time",several times a week,Core code inside of kubernetes/kubernetes,"Code inside of another repo in the Kubernetes GitHub Org (example: /kubernetes-sigs, kubernetes/website, etc)",Documentation,,Community & Project management; SIG Chair etc.,,,,,,"I have a positive experience with almost everything, but iterating on a prow job (that is, the job itself, not code that is tested by the job) can be challenging. Making official meeting recordings discoverable seems challenging. As far as I understand, I need to ping a SIG lead, who has permission to add a video to an official YouTube playlist.",never,,,,,,Fewer meetings in my personal schedule,,,2,6,1,3,7,5,4,,2,4,1: never,4,4,1: never,3: several times a month,4,kubernetes-dev@ mailing list,,,,,,,,Yes,no - didn't know this was a thing,I would like to but I don't have the time / employer doesn't support it,2,,,,,
+11271808558,252143207,01/13/2020 2:31:23 PM,01/13/2020 2:37:39 PM,1.144.105.168,,,,,less than one year,there's a contributor ladder?,if I had help/mentoring/support,Oceania,2 or more,3,2,1: not challenging at all,5: the most challenging part,2,5: the most challenging part,3,3,2,4,"A bit painful dealing with mailing lists, Slack presence is pretty mild. ",3,5: strongly agree,4,2,"yes, I can contribute on company time",a few times a year,,,,,,,"Related projects (Helm, container runtimes, other CNCF projects, etc.)",,,,"Some more informal golang code reviews, writing code is okay but writing Good Tests feels like another level. ",few times a year,,,,,,Fewer meetings in my personal schedule,,,6,1,2,5,3,7,4,Expanding accessibility for non-US based folks,1: never,5: everyday,1: never,2,3: several times a month,1: never,2,2,,,,"#kubernetes-dev, #sig-foo, #sig-contribex slack",,,,,No,no - didn't know this was a thing,I'm inexperienced and don't know enough to mentor,0,"Funding (no work support, or cannot afford to individually go)",,,,
+11271802281,252143207,01/13/2020 2:21:26 PM,01/13/2020 2:34:26 PM,83.254.8.13,,,,,less than one year,not yet a member but working on it,yes,Europe,this is my first open source project!,4,3,3,2,2,5: the most challenging part,4,3,4,4,,4,4,2,3,"no, I need to use my own time",several times a week,,,Documentation,,,,,"Don’t contribute yet, hoping to start soon",,,"I am new in contributing to open source. As of now, I can not judge it ",never,,Having a full agenda with descriptions posted several days ahead,,Additional developer tips/news content,Using the meeting to discuss project-wide development topics & roadblocks,,,,1,3,2,7,4,6,5,"As I am new to the community, it was bit hard to how and where to start contribution. I would expect more detail,tips for that",5: everyday,5: everyday,3: several times a month,1: never,5: everyday,1: never,3: several times a month,3: several times a month,kubernetes-dev@ mailing list,,,,,,kubernetes/community repo in GitHub (Issues and/or PRs),,Rarely (for reasons),no - didn't know this was a thing,I'm inexperienced and don't know enough to mentor,0,Other (please specify),I have been into kubernetes contribution few months ago,,,
+11271798132,252143207,01/13/2020 2:19:05 PM,01/13/2020 2:32:17 PM,71.202.55.20,,,,,two to three years,there's a contributor ladder?,if I had more free time,North America,2 or more,3,1: not challenging at all,1: not challenging at all,1: not challenging at all,1: not challenging at all,5: the most challenging part,3,3,1: not challenging at all,1: not challenging at all,,3,3,3,1: strongly disagree,"yes, I can contribute on company time",a few times a year,Core code inside of kubernetes/kubernetes,,,,,"Plugins & Drivers (CSI, CNI, cloud providers)",,,,,,never,,,,,,Fewer meetings in my personal schedule,,,,,,,,,,,3: several times a month,2,1: never,3: several times a month,3: several times a month,1: never,1: never,3: several times a month,kubernetes-dev@ mailing list,,kubernetes-sig-contribex@ mailing list,,,,,,No,no - didn't know this was a thing,I would like to but I don't have the time / employer doesn't support it,1,Helping at other co-located event,,,,
+11271773674,252143207,01/13/2020 2:12:34 PM,01/13/2020 2:19:49 PM,82.5.214.2,,,,,less than one year,not yet a member but working on it,yes,Europe,this is my first open source project!,3,4,2,4,3,5: the most challenging part,4,1: not challenging at all,5: the most challenging part,4,,3,2,5: strongly agree,3,"yes, I can contribute on company time",a few times a year,Core code inside of kubernetes/kubernetes,,,,,,,,,,It is frustrating to negotiate with the different sigs as to where the responsibility for fixing a bug lies. Also frustrating when bugs are not fixed because a feature is eventually going to be be removed.,never,,Having a full agenda with descriptions posted several days ahead,,,Using the meeting to discuss project-wide development topics & roadblocks,,,,6,3,4,5,7,1,2,,3: several times a month,3: several times a month,1: never,2,2,1: never,2,2,,,,"#kubernetes-dev, #sig-foo, #sig-contribex slack",,,,,No,no - didn't know this was a thing,I'm inexperienced and don't know enough to mentor,0,Not attending KubeCon,,,,
+11271773375,252143207,01/13/2020 2:10:56 PM,01/13/2020 2:19:41 PM,178.12.239.91,,,,,one to two years,not yet a member but working on it,if I had help/mentoring/support,Europe,2 or more,4,3,2,2,2,3,1: not challenging at all,2,1: not challenging at all,3,,3,4,2,3,"yes, I can contribute on company time",a few times a year,,"Code inside of another repo in the Kubernetes GitHub Org (example: /kubernetes-sigs, kubernetes/website, etc)",Documentation,,,"Plugins & Drivers (CSI, CNI, cloud providers)","Related projects (Helm, container runtimes, other CNCF projects, etc.)","Don’t contribute yet, hoping to start soon",,,No,"rarely, but I frequently watch the video and/or read the notes","Nothing, I attend and think they are great",,,Additional developer tips/news content,,,,,1,3,2,4,5,6,7,Not surw,3: several times a month,3: several times a month,3: several times a month,3: several times a month,5: everyday,2,3: several times a month,2,kubernetes-dev@ mailing list,,,,,Kubernetes blog,,,Yes,no - didn't know this was a thing,I'm inexperienced and don't know enough to mentor,0,Not attending KubeCon,,,,
+11271771616,252143207,01/13/2020 2:09:26 PM,01/13/2020 2:18:47 PM,23.92.141.222,,,,,less than one year,not yet a member but working on it,if I had more free time,North America,2 or more,2,4,3,5: the most challenging part,3,2,1: not challenging at all,3,1: not challenging at all,2,,4,4,1: strongly disagree,2,"yes, I can contribute on company time",several times a month,,"Code inside of another repo in the Kubernetes GitHub Org (example: /kubernetes-sigs, kubernetes/website, etc)",Documentation,,,,"Related projects (Helm, container runtimes, other CNCF projects, etc.)",,,,"Should be easier to figure out which SIG is responsible for some project’s roadmap plans and how to engage with the team. Most of the evidentiary record (old mailing list posts, abandoned wikis, merged pull requests, abandoned issues, past commits) on this is inscrutable from the outside perspective.",few times a year,,Having a full agenda with descriptions posted several days ahead,,,Using the meeting to discuss project-wide development topics & roadblocks,Fewer meetings in my personal schedule,,,3,5,6,7,4,2,1,,1: never,5: everyday,1: never,2,4,1: never,1: never,2,,,,"#kubernetes-dev, #sig-foo, #sig-contribex slack",,Kubernetes blog,,"reddit.com/r/kubernetes, for announcements I didn’t see via slack already",Rarely (for reasons),no - didn't know this was a thing,I'm inexperienced and don't know enough to mentor,0,Not attending KubeCon,,,,
+11271755953,252143207,01/13/2020 2:05:05 PM,01/13/2020 2:10:54 PM,70.112.191.114,,,,,two to three years,not yet a member but working on it,if I had more free time,North America,2 or more,2,2,1: not challenging at all,3,3,3,4,3,2,2,,4,4,3,4,"yes, I can contribute on company time",a few times a year,,"Code inside of another repo in the Kubernetes GitHub Org (example: /kubernetes-sigs, kubernetes/website, etc)",Documentation,,,"Plugins & Drivers (CSI, CNI, cloud providers)","Related projects (Helm, container runtimes, other CNCF projects, etc.)",,,,nope,"rarely, but I frequently watch the video and/or read the notes",,,,,,Fewer meetings in my personal schedule,,,1,5,6,2,3,7,4,n/a,2,5: everyday,2,2,4,1: never,4,3: several times a month,,,,"#kubernetes-dev, #sig-foo, #sig-contribex slack",,,kubernetes/community repo in GitHub (Issues and/or PRs),,Yes,yes - it was helpful,I would like to but I don't have the time / employer doesn't support it,1,Not attending KubeCon,,,,
+11271725280,252143207,01/13/2020 1:49:31 PM,01/13/2020 1:56:10 PM,50.238.91.154,,,,,less than one year,member,if I had more free time,North America,1 other,2,2,2,2,4,5: the most challenging part,3,,4,2,,1: strongly disagree,1: strongly disagree,1: strongly disagree,1: strongly disagree,"yes, I can contribute on company time",a few times a year,,,Documentation,,,,,,Release,,,"rarely, but I frequently watch the video and/or read the notes",,,,,,Fewer meetings in my personal schedule,,,1,4,5,6,3,7,2,,5: everyday,4,2,3: several times a month,2,1: never,2,4,kubernetes-dev@ mailing list,,,,,,,,No,no - didn't know this was a thing,I'm inexperienced and don't know enough to mentor,1,,,,,
+11271717654,252143207,01/13/2020 1:48:44 PM,01/13/2020 1:52:38 PM,91.35.192.93,,,,,less than one year,there's a contributor ladder?,if I had more free time,Europe,2 or more,3,4,3,2,4,5: the most challenging part,3,5: the most challenging part,3,3,,1: strongly disagree,2,4,3,"no, I need to use my own time",a few times a year,,"Code inside of another repo in the Kubernetes GitHub Org (example: /kubernetes-sigs, kubernetes/website, etc)",Documentation,,Community & Project management; SIG Chair etc.,,,,,,,never,,,,,,Fewer meetings in my personal schedule,,,2,3,4,7,5,6,1,,5: everyday,2,1: never,1: never,2,1: never,1: never,2,kubernetes-dev@ mailing list,,,"#kubernetes-dev, #sig-foo, #sig-contribex slack",,Kubernetes blog,,,No,no - didn't know this was a thing,I'm inexperienced and don't know enough to mentor,0,Not attending KubeCon,,,,
+11271712815,252143207,01/13/2020 1:37:36 PM,01/13/2020 1:50:23 PM,73.194.115.103,,,,,one to two years,member,yes,North America,2 or more,2,2,2,4,3,5: the most challenging part,4,4,2,3,,3,3,1: strongly disagree,1: strongly disagree,it's complicated.,several times a month,Core code inside of kubernetes/kubernetes,"Code inside of another repo in the Kubernetes GitHub Org (example: /kubernetes-sigs, kubernetes/website, etc)",Documentation,Testing & Infrastructure,,"Plugins & Drivers (CSI, CNI, cloud providers)",,,,,"Defined paths of work for each sig. So that I'd be able to hop in and start contributing quicker. For example, just found out about how a release team shadow could look at failing tests, make issues, assign to themselves or bring it up in slack. This is how someone could get started with certain sigs if they filter within this https://testgrid.k8s.io/ (which I've just discovered). I imagine some sigs have a similar or different recommendation for how to start contributing code to their sig other than ""join a channel and ask"", ""hunt through issues in github"" etc.",never,,,,,,,,Just got invited to my first one. I didn't know this existed before I became an official member in December.,1,5,3,6,4,7,2,"A more defined path on how to get to each level (member, reviewer, approver etc.)",3: several times a month,4,1: never,2,4,1: never,2,2,kubernetes-dev@ mailing list,,,,@kubernetesio twitter,,,,Yes,no - didn't know this was a thing,I'm inexperienced and don't know enough to mentor,0,Other (please specify),Wasn't an official member until December 2019 and I didn't know about it either.,,,
+11271701616,252143207,01/13/2020 1:40:46 PM,01/13/2020 1:45:18 PM,197.210.64.187,,,,,one to two years,member,if I had more free time,Africa,2 or more,5: the most challenging part,1: not challenging at all,1: not challenging at all,1: not challenging at all,1: not challenging at all,3,3,2,1: not challenging at all,1: not challenging at all,,4,4,5: strongly agree,2,"no, I need to use my own time",a few times a year,Core code inside of kubernetes/kubernetes,"Code inside of another repo in the Kubernetes GitHub Org (example: /kubernetes-sigs, kubernetes/website, etc)",,,,,,,,,,try to make it to all of them (3-4 a month),"Nothing, I attend and think they are great",,,,,,,,1,4,3,5,6,7,2,,4,5: everyday,1: never,3: several times a month,,1: never,2,2,kubernetes-dev@ mailing list,,kubernetes-sig-contribex@ mailing list,"#kubernetes-dev, #sig-foo, #sig-contribex slack",,,,,Yes,"no - i don't need mentoring, guidance, or other resources",I would like to but I don't have the time / employer doesn't support it,0,"Funding (no work support, or cannot afford to individually go)",,,,
+11271698800,252143207,01/13/2020 1:40:18 PM,01/13/2020 1:44:03 PM,104.133.8.79,,,,,less than one year,there's a contributor ladder?,yes,North America,1 other,1: not challenging at all,3,1: not challenging at all,2,2,1: not challenging at all,3,3,3,4,,3,2,1: strongly disagree,1: strongly disagree,"yes, I can contribute on company time",every day,Core code inside of kubernetes/kubernetes,"Code inside of another repo in the Kubernetes GitHub Org (example: /kubernetes-sigs, kubernetes/website, etc)",Documentation,Testing & Infrastructure,,,,,,,,"rarely, but I frequently watch the video and/or read the notes",,,,,,Fewer meetings in my personal schedule,,,1,6,5,4,3,7,2,BugScrub Meetings,3: several times a month,4,3: several times a month,3: several times a month,4,1: never,3: several times a month,4,kubernetes-dev@ mailing list,Dedicated discuss.k8s.io forum for contributors,,"#kubernetes-dev, #sig-foo, #sig-contribex slack",@kubernetesio twitter,Kubernetes blog,kubernetes/community repo in GitHub (Issues and/or PRs),,Yes,no - didn't know this was a thing,I'm inexperienced and don't know enough to mentor,0,Not attending KubeCon,,,,
+11271686434,252143207,01/13/2020 1:33:35 PM,01/13/2020 1:38:30 PM,63.149.115.97,,,,,two to three years,not yet a member but working on it,if I had more free time,North America,2 or more,2,2,2,2,2,4,2,3,3,2,,2,3,3,3,"yes, I can contribute on company time",a few times a year,,,,,,,,"Don’t contribute yet, hoping to start soon",,,,"rarely, but I frequently watch the video and/or read the notes",,Having a full agenda with descriptions posted several days ahead,,,,,,,2,1,3,4,5,6,7,,4,3: several times a month,2,2,2,2,3: several times a month,2,kubernetes-dev@ mailing list,,,,,Kubernetes blog,kubernetes/community repo in GitHub (Issues and/or PRs),,No,yes - it was helpful,I'm inexperienced and don't know enough to mentor,0,"Funding (no work support, or cannot afford to individually go)",,,,
+11271678715,252143207,01/13/2020 1:30:27 PM,01/13/2020 1:35:10 PM,104.132.62.65,,,,,one to two years,not yet a member but working on it,if I had more free time,North America,2 or more,3,4,1: not challenging at all,1: not challenging at all,1: not challenging at all,4,4,2,1: not challenging at all,2,,5: strongly agree,3,4,2,"yes, I can contribute on company time",a few times a year,Core code inside of kubernetes/kubernetes,,,,,,,,,,,never,,,,,,Fewer meetings in my personal schedule,,,,,2,,,6,1,,5: everyday,1: never,1: never,1: never,3: several times a month,1: never,2,2,kubernetes-dev@ mailing list,,,,,,,,No,no - didn't know this was a thing,I'm inexperienced and don't know enough to mentor,0,Not attending KubeCon,,,,
+11271677568,252143207,01/13/2020 1:30:28 PM,01/13/2020 1:34:39 PM,24.7.8.137,,,,,three+ years,subproject owner,"no, already a subproject owner (highest level on the ladder)",North America,2 or more,4,2,2,4,4,3,5: the most challenging part,4,3,3,,3,3,3,3,"yes, I can contribute on company time",several times a week,,,,,Community & Project management; SIG Chair etc.,,,,,,,"rarely, but I frequently watch the video and/or read the notes","Nothing, I attend and think they are great",,,,,,,,7,2,6,3,1,4,5,,1: never,3: several times a month,1: never,3: several times a month,3: several times a month,1: never,2,3: several times a month,,,,"#kubernetes-dev, #sig-foo, #sig-contribex slack",,,,,Rarely (for reasons),"no - i don't need mentoring, guidance, or other resources","Yes, please contact me (you'll include your email in the last question)",3+,,,,,
+11271676213,252143207,01/13/2020 1:32:57 PM,01/13/2020 1:34:02 PM,99.35.22.37,,,,,less than one year,there's a contributor ladder?,no,North America,1 other,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,
+11271676161,252143207,01/13/2020 1:30:02 PM,01/13/2020 1:34:01 PM,73.92.231.159,,,,,one to two years,approver,no,North America,1 other,3,2,2,3,2,2,3,3,3,2,,2,2,2,5: strongly agree,"yes, I can contribute on company time",a few times a year,,"Code inside of another repo in the Kubernetes GitHub Org (example: /kubernetes-sigs, kubernetes/website, etc)",,,Community & Project management; SIG Chair etc.,,,,,,Full time project managers taking busy work off my plate,few times a year,,Having a full agenda with descriptions posted several days ahead,,,,Fewer meetings in my personal schedule,,,1,2,7,4,5,6,3,Improving quality of contributor summits,5: everyday,5: everyday,1: never,3: several times a month,3: several times a month,1: never,1: never,5: everyday,kubernetes-dev@ mailing list,,kubernetes-sig-contribex@ mailing list,,,,,,No,"no - i don't need mentoring, guidance, or other resources",I am already mentoring (you'll include your email in the last question because you want swag!),3+,Helping at other co-located event,,,,
+11271671478,252143207,01/13/2020 1:31:55 PM,01/13/2020 1:31:59 PM,99.35.22.37,,,,,less than one year,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,
+11271636822,252143207,01/13/2020 1:08:26 PM,01/13/2020 1:17:10 PM,174.21.64.61,,,,,two to three years,reviewer,if I had help/mentoring/support,North America,this is my first open source project!,5: the most challenging part,1: not challenging at all,1: not challenging at all,3,2,2,4,5: the most challenging part,1: not challenging at all,1: not challenging at all,,4,4,2,2,it's complicated.,several times a week,,"Code inside of another repo in the Kubernetes GitHub Org (example: /kubernetes-sigs, kubernetes/website, etc)",Documentation,,Community & Project management; SIG Chair etc.,,,,Release,,I would like more formalized mentoring processes!,few times a year,,,,,,Fewer meetings in my personal schedule,,,1,7,3,5,4,6,2,"A better way to discover new PRs for review, for faster turnaround - I shouldn't have to shake down individuals on Slack",3: several times a month,5: everyday,1: never,4,5: everyday,1: never,1: never,3: several times a month,,,kubernetes-sig-contribex@ mailing list,"#kubernetes-dev, #sig-foo, #sig-contribex slack",@kubernetesio twitter,,,,Yes,yes - it was helpful,I am already mentoring (you'll include your email in the last question because you want swag!),3+,,,,,
+11271622783,252143207,01/13/2020 1:02:47 PM,01/13/2020 1:11:14 PM,66.187.233.202,,,,,three+ years,subproject owner,"no, already a subproject owner (highest level on the ladder)",North America,2 or more,3,5: the most challenging part,1: not challenging at all,1: not challenging at all,3,4,3,2,1: not challenging at all,1: not challenging at all,,3,3,3,5: strongly agree,"yes, I can contribute on company time",several times a month,Core code inside of kubernetes/kubernetes,"Code inside of another repo in the Kubernetes GitHub Org (example: /kubernetes-sigs, kubernetes/website, etc)",Documentation,,Community & Project management; SIG Chair etc.,,,,,,,few times a year,,Having a full agenda with descriptions posted several days ahead,Eliminating the demo at the beginning,,,Fewer meetings in my personal schedule,Different timeslot for the meeting,,6,1,2,5,4,7,3,,3: several times a month,5: everyday,1: never,3: several times a month,4,1: never,2,3: several times a month,kubernetes-dev@ mailing list,,,,,Kubernetes blog,,,No,"no - i don't need mentoring, guidance, or other resources",I would like to but I don't have the time / employer doesn't support it,3+,Not attending KubeCon,,,,
+11270314780,252143207,01/13/2020 4:26:08 AM,01/13/2020 4:32:21 AM,104.132.162.82,,,,,one to two years,reviewer,yes,Europe,this is my first open source project!,3,4,4,,5: the most challenging part,2,2,3,2,3,,4,4,5: strongly agree,4,"yes, I can contribute on company time",several times a week,Core code inside of kubernetes/kubernetes,"Code inside of another repo in the Kubernetes GitHub Org (example: /kubernetes-sigs, kubernetes/website, etc)",,Testing & Infrastructure,,,,,,scalability,,never,,Having a full agenda with descriptions posted several days ahead,Eliminating the demo at the beginning,,,Fewer meetings in my personal schedule,,,7,2,6,4,5,3,1,,4,4,1: never,3: several times a month,5: everyday,1: never,2,2,kubernetes-dev@ mailing list,,,"#kubernetes-dev, #sig-foo, #sig-contribex slack",,,,,Yes,no - didn't know this was a thing,I would like to but I don't have the time / employer doesn't support it,1,,,,,
+11270126773,252143207,01/13/2020 2:01:01 AM,01/13/2020 2:10:26 AM,104.132.162.73,,,,,one to two years,member,yes,Europe,this is my first open source project!,2,3,2,3,4,4,3,3,2,3,,4,4,4,2,"yes, I can contribute on company time",several times a week,Core code inside of kubernetes/kubernetes,"Code inside of another repo in the Kubernetes GitHub Org (example: /kubernetes-sigs, kubernetes/website, etc)",,,,,,,,,,never,,,,,,,,,4,2,6,7,5,3,1,,2,2,1: never,1: never,4,1: never,1: never,2,kubernetes-dev@ mailing list,,,,,,,,Rarely (for reasons),no - didn't know this was a thing,I'm inexperienced and don't know enough to mentor,0,Not interested in attending,,,,
+11269238166,252143207,01/12/2020 8:19:03 AM,01/12/2020 8:24:52 AM,37.47.1.200,,,,,one to two years,subproject owner,if I had more free time,Europe,this is my first open source project!,3,3,4,2,2,3,1: not challenging at all,4,1: not challenging at all,2,,4,2,3,2,"yes, I can contribute on company time",several times a week,Core code inside of kubernetes/kubernetes,"Code inside of another repo in the Kubernetes GitHub Org (example: /kubernetes-sigs, kubernetes/website, etc)",,Testing & Infrastructure,,,,,,,,few times a year,,Having a full agenda with descriptions posted several days ahead,,,,,,,,2,,,,1,3,,5: everyday,5: everyday,1: never,2,5: everyday,1: never,2,4,kubernetes-dev@ mailing list,,,"#kubernetes-dev, #sig-foo, #sig-contribex slack",,,kubernetes/community repo in GitHub (Issues and/or PRs),,Yes,no - didn't know this was a thing,I would like to but I don't have the time / employer doesn't support it,2,,,,,
+11268989394,252143207,01/12/2020 2:39:43 AM,01/12/2020 2:48:55 AM,46.59.81.88,,,,,less than one year,there's a contributor ladder?,yes,Europe,2 or more,2,2,2,1: not challenging at all,3,2,2,1: not challenging at all,1: not challenging at all,1: not challenging at all,,4,4,1: strongly disagree,1: strongly disagree,"yes, I can contribute on company time",a few times a year,Core code inside of kubernetes/kubernetes,,Documentation,,,,"Related projects (Helm, container runtimes, other CNCF projects, etc.)",,,,,never,,,,,,Fewer meetings in my personal schedule,Different timeslot for the meeting,,4,3,1,5,7,6,2,Not sure,1: never,5: everyday,1: never,1: never,2,1: never,1: never,2,,,,"#kubernetes-dev, #sig-foo, #sig-contribex slack",,,,,Yes,no - didn't know this was a thing,I'm inexperienced and don't know enough to mentor,0,"Funding (no work support, or cannot afford to individually go)",,,,
+11268925440,252143207,01/12/2020 12:49:47 AM,01/12/2020 12:55:40 AM,122.163.54.225,,,,,less than one year,not yet a member but working on it,if I had help/mentoring/support,Asia,2 or more,2,2,2,2,3,4,3,2,2,2,,2,2,2,2,"no, I need to use my own time",several times a week,,"Code inside of another repo in the Kubernetes GitHub Org (example: /kubernetes-sigs, kubernetes/website, etc)",Documentation,Testing & Infrastructure,,,,,,,,few times a year,,,,,,,Different timeslot for the meeting,,1,2,3,4,5,6,7,,3: several times a month,5: everyday,3: several times a month,4,4,3: several times a month,3: several times a month,3: several times a month,,,,"#kubernetes-dev, #sig-foo, #sig-contribex slack",,,,,Yes,yes - it was helpful,"Yes, please contact me (you'll include your email in the last question)",0,"Funding (no work support, or cannot afford to individually go)",,,,
+11267580942,252143207,01/10/2020 5:00:04 PM,01/10/2020 5:20:29 PM,116.66.184.191,,,,,less than one year,approver,yes,Asia,this is my first open source project!,2,1: not challenging at all,1: not challenging at all,1: not challenging at all,1: not challenging at all,1: not challenging at all,3,3,3,3,,3,3,3,3,"yes, I can contribute on company time",every day,Core code inside of kubernetes/kubernetes,"Code inside of another repo in the Kubernetes GitHub Org (example: /kubernetes-sigs, kubernetes/website, etc)",Documentation,,,"Plugins & Drivers (CSI, CNI, cloud providers)",,,,,,"rarely, but I frequently watch the video and/or read the notes",,,,,,,Different timeslot for the meeting,,2,,,,,1,,,5: everyday,5: everyday,1: never,2,5: everyday,2,1: never,2,kubernetes-dev@ mailing list,,,,,,,,Rarely (for reasons),no - didn't know this was a thing,"Yes, please contact me (you'll include your email in the last question)",0,Not attending KubeCon,,,,
+11267557129,252143207,01/10/2020 4:50:10 PM,01/10/2020 4:56:31 PM,189.193.137.248,,,,,one to two years,approver,yes,North America,2 or more,3,2,4,2,2,5: the most challenging part,4,5: the most challenging part,1: not challenging at all,3,,5: strongly agree,5: strongly agree,3,1: strongly disagree,"yes, I can contribute on company time",several times a week,Core code inside of kubernetes/kubernetes,"Code inside of another repo in the Kubernetes GitHub Org (example: /kubernetes-sigs, kubernetes/website, etc)",,Testing & Infrastructure,Community & Project management; SIG Chair etc.,,"Related projects (Helm, container runtimes, other CNCF projects, etc.)",,Release,,,try to make it to all of them (3-4 a month),"Nothing, I attend and think they are great",Having a full agenda with descriptions posted several days ahead,,,,,,,1,2,7,5,6,3,4,,2,5: everyday,2,4,5: everyday,1: never,4,4,,,,"#kubernetes-dev, #sig-foo, #sig-contribex slack",@kubernetesio twitter,,,,Rarely (for reasons),"no - i don't need mentoring, guidance, or other resources",I am already mentoring (you'll include your email in the last question because you want swag!),0,Not attending KubeCon,,,,
+11267520051,252143207,01/10/2020 1:23:07 PM,01/10/2020 4:23:21 PM,71.70.221.152,,,,,three+ years,reviewer,yes,North America,1 other,2,4,2,2,2,2,4,1: not challenging at all,2,4,,4,3,5: strongly agree,2,"yes, I can contribute on company time",several times a week,Core code inside of kubernetes/kubernetes,"Code inside of another repo in the Kubernetes GitHub Org (example: /kubernetes-sigs, kubernetes/website, etc)",,,Community & Project management; SIG Chair etc.,"Plugins & Drivers (CSI, CNI, cloud providers)","Related projects (Helm, container runtimes, other CNCF projects, etc.)",,,,N/A,never,,,,,,,,I only attend to give SIG updates,4,2,1,3,5,7,6,N/A,2,5: everyday,1: never,4,5: everyday,1: never,3: several times a month,3: several times a month,,,,"#kubernetes-dev, #sig-foo, #sig-contribex slack",,,,,No,no - didn't know this was a thing,I would like to but I don't have the time / employer doesn't support it,1,Other (please specify),Thought I had signed up when I had not :(,,,
+11267235698,252143207,01/10/2020 1:15:34 PM,01/10/2020 1:19:58 PM,204.128.192.34,,,,,one to two years,approver,yes,North America,2 or more,4,3,1: not challenging at all,4,4,4,5: the most challenging part,2,1: not challenging at all,1: not challenging at all,,5: strongly agree,5: strongly agree,1: strongly disagree,1: strongly disagree,"no, I need to use my own time",every day,,"Code inside of another repo in the Kubernetes GitHub Org (example: /kubernetes-sigs, kubernetes/website, etc)",Documentation,,,,"Related projects (Helm, container runtimes, other CNCF projects, etc.)",,Release,,If we had a standardized roadmap or list of things we're all working on at a SIG level.,try to make it to all of them (3-4 a month),,Having a full agenda with descriptions posted several days ahead,,Additional developer tips/news content,Using the meeting to discuss project-wide development topics & roadblocks,,,,3,1,4,2,5,6,7,Nothing at the moment!,5: everyday,5: everyday,2,5: everyday,5: everyday,1: never,2,5: everyday,kubernetes-dev@ mailing list,,kubernetes-sig-contribex@ mailing list,,,Kubernetes blog,kubernetes/community repo in GitHub (Issues and/or PRs),,Yes,yes - it was helpful,"Yes, please contact me (you'll include your email in the last question)",0,"Funding (no work support, or cannot afford to individually go)",,,,
+11267231313,252143207,01/10/2020 1:07:05 PM,01/10/2020 1:17:51 PM,24.18.213.227,,,,,two to three years,subproject owner,"no, already a subproject owner (highest level on the ladder)",North America,1 other,,1: not challenging at all,2,1: not challenging at all,3,3,2,2,1: not challenging at all,1: not challenging at all,,4,3,4,3,"yes, I can contribute on company time",several times a week,,,,Testing & Infrastructure,,,,,,,,never,,Having a full agenda with descriptions posted several days ahead,,,,,,,,,,,,,,,4,5: everyday,1: never,3: several times a month,5: everyday,1: never,2,4,kubernetes-dev@ mailing list,,,,,,,,Yes,yes - it was helpful,I would like to but I don't have the time / employer doesn't support it,3+,,,,,
+11267194490,252143207,01/10/2020 12:52:48 PM,01/10/2020 1:00:12 PM,216.99.208.250,,,,,three+ years,member,if I had help/mentoring/support,North America,2 or more,,2,4,2,3,4,2,3,3,2,,2,3,4,5: strongly agree,it's complicated.,a few times a year,Core code inside of kubernetes/kubernetes,"Code inside of another repo in the Kubernetes GitHub Org (example: /kubernetes-sigs, kubernetes/website, etc)",Documentation,,,,"Related projects (Helm, container runtimes, other CNCF projects, etc.)",,,,Cutting down on the amount of notifications and email messages would make it easier to deal with the load.,few times a year,,Having a full agenda with descriptions posted several days ahead,,Additional developer tips/news content,,,,,1,3,4,5,7,6,2,"Even just getting through a KEP is usually more work than I can muster, let alone getting to the implementation.",3: several times a month,5: everyday,1: never,2,5: everyday,1: never,3: several times a month,3: several times a month,,,,"#kubernetes-dev, #sig-foo, #sig-contribex slack",,Kubernetes blog,,,No,no - didn't know this was a thing,I would like to but I don't have the time / employer doesn't support it,3+,"Funding (no work support, or cannot afford to individually go)",,,,
+11267183099,252143207,01/10/2020 12:49:45 PM,01/10/2020 12:55:08 PM,104.133.9.89,,,,,two to three years,subproject owner,"no, already a subproject owner (highest level on the ladder)",North America,this is my first open source project!,4,5: the most challenging part,3,1: not challenging at all,2,4,3,3,2,3,,3,3,5: strongly agree,5: strongly agree,"yes, I can contribute on company time",every day,Core code inside of kubernetes/kubernetes,"Code inside of another repo in the Kubernetes GitHub Org (example: /kubernetes-sigs, kubernetes/website, etc)",,,,,,,,,,"rarely, but I frequently watch the video and/or read the notes",,Having a full agenda with descriptions posted several days ahead,,,,Fewer meetings in my personal schedule,,,6,3,4,5,7,2,1,,4,4,2,4,4,1: never,2,3: several times a month,kubernetes-dev@ mailing list,,,,,,,,Rarely (for reasons),no - didn't know this was a thing,"Yes, please contact me (you'll include your email in the last question)",2,"Funding (no work support, or cannot afford to individually go)",,,,
+11266251368,252143207,01/10/2020 6:17:53 AM,01/10/2020 6:25:24 AM,106.200.146.105,,,,,one to two years,not yet a member but working on it,yes,Asia,2 or more,2,1: not challenging at all,1: not challenging at all,3,4,4,5: the most challenging part,1: not challenging at all,2,2,,1: strongly disagree,2,5: strongly agree,5: strongly agree,"no, I need to use my own time",several times a week,Core code inside of kubernetes/kubernetes,"Code inside of another repo in the Kubernetes GitHub Org (example: /kubernetes-sigs, kubernetes/website, etc)",,,,,,,,,,once a month,,,,Additional developer tips/news content,Using the meeting to discuss project-wide development topics & roadblocks,,,,1,3,2,4,5,7,6,,5: everyday,5: everyday,3: several times a month,3: several times a month,3: several times a month,1: never,3: several times a month,3: several times a month,kubernetes-dev@ mailing list,,,"#kubernetes-dev, #sig-foo, #sig-contribex slack",,Kubernetes blog,kubernetes/community repo in GitHub (Issues and/or PRs),,Yes,yes - it was helpful,I'm inexperienced and don't know enough to mentor,1,,,,,
+11265553823,252143207,01/09/2020 9:32:09 PM,01/09/2020 9:42:12 PM,68.227.14.159,,,,,two to three years,member,if I had more free time,North America,this is my first open source project!,2,1: not challenging at all,3,2,3,5: the most challenging part,4,4,3,2,Paralyzing Fear,3,,,,it's complicated.,a few times a year,,,,,Community & Project management; SIG Chair etc.,,,,Release,,How about batching up new contributor classes/cohorts on a monthly or biweekly basis?,try to make it to all of them (3-4 a month),"Nothing, I attend and think they are great",,,,,Fewer meetings in my personal schedule,Different timeslot for the meeting,,2,6,3,5,4,7,1,,4,5: everyday,2,5: everyday,2,3: several times a month,2,4,,,kubernetes-sig-contribex@ mailing list,,@kubernetesio twitter,,,,Yes,yes - it was helpful,I would like to but I don't have the time / employer doesn't support it,3+,,,,,
+11264827502,252143207,01/09/2020 12:43:19 PM,01/09/2020 12:45:51 PM,24.4.218.43,,,,,less than one year,there's a contributor ladder?,yes,North America,2 or more,2,2,2,2,2,2,2,2,2,2,,2,2,2,4,"yes, I can contribute on company time",every day,Core code inside of kubernetes/kubernetes,,,,,,,,,,,once a month,"Nothing, I attend and think they are great",,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,
+11263545829,252143207,01/09/2020 2:27:41 AM,01/09/2020 2:35:28 AM,129.241.231.71,,,,,less than one year,member,if I had help/mentoring/support,Europe,2 or more,3,4,1: not challenging at all,2,1: not challenging at all,1: not challenging at all,1: not challenging at all,1: not challenging at all,4,1: not challenging at all,Finding reviewers/approvers is extremely hard,5: strongly agree,5: strongly agree,2,1: strongly disagree,"no, I need to use my own time",several times a week,Core code inside of kubernetes/kubernetes,"Code inside of another repo in the Kubernetes GitHub Org (example: /kubernetes-sigs, kubernetes/website, etc)",Documentation,Testing & Infrastructure,,,"Related projects (Helm, container runtimes, other CNCF projects, etc.)",,,,"The lack of resources for the approvers/reviewers is annoying, so that cloud be fixed. It is not that fun the have to rebase a PR ""each week"" in a year, without any interest from the approvers/reviewers in the sig. ",never,,,,,,,,,2,3,5,7,6,4,1,,4,5: everyday,1: never,2,5: everyday,1: never,2,4,kubernetes-dev@ mailing list,,,"#kubernetes-dev, #sig-foo, #sig-contribex slack",,,,,Yes,no - didn't know this was a thing,I would like to but I don't have the time / employer doesn't support it,0,"Funding (no work support, or cannot afford to individually go)",,,,
+11262549247,252143207,01/08/2020 12:38:34 PM,01/08/2020 12:47:55 PM,198.208.46.83,,,,,two to three years,subproject owner,"no, already a subproject owner (highest level on the ladder)",North America,this is my first open source project!,4,2,2,2,3,5: the most challenging part,1: not challenging at all,3,3,1: not challenging at all,,4,2,2,1: strongly disagree,it's complicated.,every day,,"Code inside of another repo in the Kubernetes GitHub Org (example: /kubernetes-sigs, kubernetes/website, etc)",Documentation,Testing & Infrastructure,Community & Project management; SIG Chair etc.,,,,Release,,"up-to-date how-to's for various advanced topics within the community. Big animal pictures preferred :) More importantly, that documentation is accessible and easily located for everyone.",once a month,,Having a full agenda with descriptions posted several days ahead,,,Using the meeting to discuss project-wide development topics & roadblocks,Fewer meetings in my personal schedule,,,2,4,5,6,1,7,3,Supportable automation for tasks that can be.,4,5: everyday,3: several times a month,5: everyday,5: everyday,2,4,5: everyday,kubernetes-dev@ mailing list,,kubernetes-sig-contribex@ mailing list,,,Kubernetes blog,,,Yes,yes - it was helpful,I would like to but I don't have the time / employer doesn't support it,2,Not attending KubeCon,,,,
+11262262649,252143207,01/08/2020 10:35:34 AM,01/08/2020 10:40:52 AM,67.54.155.75,,,,,one to two years,member,if I had help/mentoring/support,North America,1 other,3,4,5: the most challenging part,3,3,4,4,5: the most challenging part,3,1: not challenging at all,,2,3,4,3,"yes, I can contribute on company time",a few times a year,Core code inside of kubernetes/kubernetes,"Code inside of another repo in the Kubernetes GitHub Org (example: /kubernetes-sigs, kubernetes/website, etc)",Documentation,,,,,,,,,try to make it to all of them (3-4 a month),,Having a full agenda with descriptions posted several days ahead,Eliminating the demo at the beginning,,Using the meeting to discuss project-wide development topics & roadblocks,,,,2,7,1,5,4,6,3,,2,5: everyday,2,5: everyday,4,2,2,4,,,,"#kubernetes-dev, #sig-foo, #sig-contribex slack",,,,,Yes,yes - it was helpful,I am already mentoring (you'll include your email in the last question because you want swag!),1,,,,,
+11262255626,252143207,01/08/2020 10:31:16 AM,01/08/2020 10:37:53 AM,213.61.95.74,,,,,one to two years,member,yes,Europe,2 or more,3,5: the most challenging part,2,4,2,2,5: the most challenging part,2,3,3,,3,3,1: strongly disagree,1: strongly disagree,"no, I need to use my own time",several times a week,,"Code inside of another repo in the Kubernetes GitHub Org (example: /kubernetes-sigs, kubernetes/website, etc)",,Testing & Infrastructure,,,"Related projects (Helm, container runtimes, other CNCF projects, etc.)",,Release,,mentoring,"rarely, but I frequently watch the video and/or read the notes",,,,,,Fewer meetings in my personal schedule,Different timeslot for the meeting,,1,4,7,5,2,6,3,na,5: everyday,5: everyday,2,4,5: everyday,1: never,3: several times a month,4,kubernetes-dev@ mailing list,,,"#kubernetes-dev, #sig-foo, #sig-contribex slack",@kubernetesio twitter,Kubernetes blog,kubernetes/community repo in GitHub (Issues and/or PRs),,Rarely (for reasons),no - didn't know this was a thing,"Yes, please contact me (you'll include your email in the last question)",0,Not attending KubeCon,,,,
+11262193505,252143207,01/08/2020 10:02:32 AM,01/08/2020 10:10:45 AM,178.148.25.234,,,,,two to three years,approver,if I had more free time,Europe,this is my first open source project!,2,2,3,1: not challenging at all,1: not challenging at all,3,4,2,1: not challenging at all,1: not challenging at all,,4,3,1: strongly disagree,2,"yes, I can contribute on company time",several times a month,,"Code inside of another repo in the Kubernetes GitHub Org (example: /kubernetes-sigs, kubernetes/website, etc)",,Testing & Infrastructure,,,,,Release,,,few times a year,,,,,,,Different timeslot for the meeting,,3,6,4,5,1,7,2,,3: several times a month,5: everyday,1: never,3: several times a month,4,1: never,2,2,kubernetes-dev@ mailing list,,,"#kubernetes-dev, #sig-foo, #sig-contribex slack",,,,,No,yes - it was helpful,I'm inexperienced and don't know enough to mentor,3+,"Funding (no work support, or cannot afford to individually go)",,,,
+11262122989,252143207,01/08/2020 9:29:15 AM,01/08/2020 9:41:16 AM,184.61.24.159,,,,,three+ years,subproject owner,"no, already a subproject owner (highest level on the ladder)",North America,2 or more,3,4,3,1: not challenging at all,2,4,1: not challenging at all,1: not challenging at all,4,3,,3,2,5: strongly agree,5: strongly agree,"yes, I can contribute on company time",several times a week,Core code inside of kubernetes/kubernetes,"Code inside of another repo in the Kubernetes GitHub Org (example: /kubernetes-sigs, kubernetes/website, etc)",Documentation,Testing & Infrastructure,Community & Project management; SIG Chair etc.,,,,,,Automating workflow pruning owners files,few times a year,,,,,,Fewer meetings in my personal schedule,,,4,2,7,6,5,1,3,,4,5: everyday,1: never,4,5: everyday,1: never,3: several times a month,4,kubernetes-dev@ mailing list,,,,,,,,Yes,"no - i don't need mentoring, guidance, or other resources",I am already mentoring (you'll include your email in the last question because you want swag!),3+,,,,,
+11262045693,252143207,01/08/2020 9:05:33 AM,01/08/2020 9:09:37 AM,64.79.119.130,,,,,one to two years,member,yes,North America,this is my first open source project!,3,2,2,3,4,4,4,4,2,1: not challenging at all,,1: strongly disagree,2,1: strongly disagree,2,"yes, I can contribute on company time",several times a month,,,Documentation,,,,,,,,,few times a year,,,,,,Fewer meetings in my personal schedule,,,1,4,5,6,2,7,3,,2,5: everyday,1: never,3: several times a month,2,1: never,1: never,3: several times a month,,,,"#kubernetes-dev, #sig-foo, #sig-contribex slack",@kubernetesio twitter,,,,Yes,"no - i don't need mentoring, guidance, or other resources","Yes, please contact me (you'll include your email in the last question)",2,Other (please specify),did attend,,,
+11261961958,252143207,01/08/2020 8:22:12 AM,01/08/2020 8:36:08 AM,108.51.136.34,,,,,three+ years,subproject owner,"no, already a subproject owner (highest level on the ladder)",North America,1 other,3,3,4,1: not challenging at all,1: not challenging at all,3,1: not challenging at all,1: not challenging at all,1: not challenging at all,3,,5: strongly agree,5: strongly agree,1: strongly disagree,1: strongly disagree,"yes, I can contribute on company time",every day,,"Code inside of another repo in the Kubernetes GitHub Org (example: /kubernetes-sigs, kubernetes/website, etc)",,,,,,,,,,never,,,,,,,,,1,3,4,5,6,7,2,,2,5: everyday,2,5: everyday,5: everyday,1: never,1: never,4,kubernetes-dev@ mailing list,,,,,,,,Yes,yes - it was helpful,"Yes, please contact me (you'll include your email in the last question)",3+,,,,,
+11261909301,252143207,01/08/2020 8:10:46 AM,01/08/2020 8:15:25 AM,73.145.165.189,,,,,one to two years,subproject owner,if I had more free time,North America,this is my first open source project!,2,3,3,2,2,4,4,3,2,3,,5: strongly agree,5: strongly agree,4,2,it's complicated.,every day,,"Code inside of another repo in the Kubernetes GitHub Org (example: /kubernetes-sigs, kubernetes/website, etc)",,Testing & Infrastructure,Community & Project management; SIG Chair etc.,,"Related projects (Helm, container runtimes, other CNCF projects, etc.)",,Release,,,try to make it to all of them (3-4 a month),,Having a full agenda with descriptions posted several days ahead,,Additional developer tips/news content,Using the meeting to discuss project-wide development topics & roadblocks,Fewer meetings in my personal schedule,,,3,6,5,7,4,2,1,,3: several times a month,5: everyday,3: several times a month,4,5: everyday,2,3: several times a month,5: everyday,,,,"#kubernetes-dev, #sig-foo, #sig-contribex slack",,,kubernetes/community repo in GitHub (Issues and/or PRs),,Yes,yes - it was helpful,I am already mentoring (you'll include your email in the last question because you want swag!),3+,,,,,
+11261900446,252143207,01/08/2020 7:42:07 AM,01/08/2020 8:11:52 AM,37.26.86.178,,,,,less than one year,not yet a member but working on it,if I had help/mentoring/support,Europe,2 or more,1: not challenging at all,1: not challenging at all,1: not challenging at all,3,3,4,2,1: not challenging at all,1: not challenging at all,1: not challenging at all,,3,3,3,3,"no, I need to use my own time",every day,,,,,,,,"Don’t contribute yet, hoping to start soon",,,A quick `how to` and i'll be on my way!,once a month,"Nothing, I attend and think they are great",,,,,,Different timeslot for the meeting,,1,2,3,7,6,5,4,Nothing specific to add as i'm just keen on starting!,2,5: everyday,3: several times a month,2,3: several times a month,1: never,4,3: several times a month,,,,"#kubernetes-dev, #sig-foo, #sig-contribex slack",,,,,No,yes - it was helpful,I'm inexperienced and don't know enough to mentor,0,"Funding (no work support, or cannot afford to individually go)",,,,
+11261871892,252143207,01/08/2020 7:52:58 AM,01/08/2020 8:00:41 AM,70.165.82.82,,,,,less than one year,there's a contributor ladder?,if I had help/mentoring/support,North America,this is my first open source project!,5: the most challenging part,3,2,2,2,3,3,3,2,3,,3,4,3,3,"no, I need to use my own time",a few times a year,,,Documentation,,,,,,,,,"rarely, but I frequently watch the video and/or read the notes",,,,,,Fewer meetings in my personal schedule,,,3,4,5,6,2,1,7,,1: never,3: several times a month,1: never,1: never,3: several times a month,1: never,1: never,1: never,kubernetes-dev@ mailing list,,kubernetes-sig-contribex@ mailing list,,,,,,Rarely (for reasons),no - didn't know this was a thing,I'm inexperienced and don't know enough to mentor,0,"Funding (no work support, or cannot afford to individually go)",,,,
+11261643920,252143207,01/08/2020 6:21:55 AM,01/08/2020 6:30:22 AM,5.69.232.19,,,,,two to three years,member,yes,Europe,2 or more,2,2,2,4,3,4,4,2,2,3,,3,4,4,3,"yes, I can contribute on company time",a few times a year,,"Code inside of another repo in the Kubernetes GitHub Org (example: /kubernetes-sigs, kubernetes/website, etc)",,Testing & Infrastructure,,,"Related projects (Helm, container runtimes, other CNCF projects, etc.)",,,,Not sure,never,,Having a full agenda with descriptions posted several days ahead,,,,Fewer meetings in my personal schedule,,,,,,,,,,,3: several times a month,5: everyday,2,2,4,1: never,1: never,4,,,,"#kubernetes-dev, #sig-foo, #sig-contribex slack",@kubernetesio twitter,,kubernetes/community repo in GitHub (Issues and/or PRs),,Rarely (for reasons),yes - it was helpful,I would like to but I don't have the time / employer doesn't support it,1,,,,,
+11261392691,252143207,01/08/2020 4:12:35 AM,01/08/2020 4:22:38 AM,90.92.203.75,,,,,less than one year,member,if I had help/mentoring/support,Europe,2 or more,3,4,2,4,4,4,4,3,3,4,,2,4,4,2,"no, I need to use my own time",a few times a year,,"Code inside of another repo in the Kubernetes GitHub Org (example: /kubernetes-sigs, kubernetes/website, etc)",Documentation,,,,"Related projects (Helm, container runtimes, other CNCF projects, etc.)",,,,Get a mentor to follow the KEP process with me,never,,Having a full agenda with descriptions posted several days ahead,,,,,Different timeslot for the meeting,,1,3,4,6,5,7,2,,,,,,,,,,kubernetes-dev@ mailing list,Dedicated discuss.k8s.io forum for contributors,,,,,,,No,no - didn't know this was a thing,I would like to but I don't have the time / employer doesn't support it,0,Not attending KubeCon,,,,
+11261114476,252143207,01/08/2020 12:44:55 AM,01/08/2020 12:54:49 AM,84.33.103.130,,,,,two to three years,subproject owner,"no, already a subproject owner (highest level on the ladder)",Europe,this is my first open source project!,3,4,4,2,2,4,3,3,2,2,,4,3,2,2,"yes, I can contribute on company time",every day,Core code inside of kubernetes/kubernetes,"Code inside of another repo in the Kubernetes GitHub Org (example: /kubernetes-sigs, kubernetes/website, etc)",Documentation,Testing & Infrastructure,Community & Project management; SIG Chair etc.,,,,,,,few times a year,,,,,,Fewer meetings in my personal schedule,,,7,2,4,3,5,6,1,,3: several times a month,5: everyday,1: never,5: everyday,5: everyday,1: never,3: several times a month,5: everyday,kubernetes-dev@ mailing list,,,,@kubernetesio twitter,Kubernetes blog,,,Yes,yes - it was helpful,I would like to but I don't have the time / employer doesn't support it,3+,"Funding (no work support, or cannot afford to individually go)",,,,
+11260754887,252143207,01/07/2020 6:01:40 PM,01/07/2020 6:58:27 PM,74.66.139.89,,,,,one to two years,reviewer,if I had more free time,North America,this is my first open source project!,3,2,1: not challenging at all,1: not challenging at all,1: not challenging at all,3,3,2,2,2,,4,3,3,2,"no, I need to use my own time",every day,Core code inside of kubernetes/kubernetes,,Documentation,,,,,,,,Really grateful for all the work and efforts! My top two value producers would be quick PR review and continuing the work to deflake CI.,never,,,,,,Fewer meetings in my personal schedule,,,1,5,6,7,3,4,2,,2,3: several times a month,1: never,2,5: everyday,1: never,2,2,kubernetes-dev@ mailing list,,,,,,,,No,no - didn't know this was a thing,I would like to but I don't have the time / employer doesn't support it,0,Not attending KubeCon,,,,
+11260692346,252143207,01/07/2020 5:52:50 PM,01/07/2020 6:08:03 PM,39.110.219.65,,,,,less than one year,not yet a member but working on it,yes,Asia,1 other,1: not challenging at all,2,1: not challenging at all,2,1: not challenging at all,1: not challenging at all,2,1: not challenging at all,1: not challenging at all,1: not challenging at all,,3,2,5: strongly agree,3,"no, I need to use my own time",several times a month,,,Documentation,,,,,,,,,never,,Having a full agenda with descriptions posted several days ahead,,Additional developer tips/news content,,,,,1,3,6,7,4,5,2,,5: everyday,5: everyday,1: never,1: never,3: several times a month,1: never,1: never,1: never,,,,,,,kubernetes/community repo in GitHub (Issues and/or PRs),,No,no - didn't know this was a thing,I'm inexperienced and don't know enough to mentor,0,Not attending KubeCon,,,,
+11260689276,252143207,01/07/2020 5:36:24 PM,01/07/2020 6:05:41 PM,126.112.246.230,,,,,less than one year,member,yes,Asia,this is my first open source project!,3,4,1: not challenging at all,2,1: not challenging at all,3,5: the most challenging part,2,5: the most challenging part,3,,3,3,4,2,"no, I need to use my own time",several times a month,,"Code inside of another repo in the Kubernetes GitHub Org (example: /kubernetes-sigs, kubernetes/website, etc)",Documentation,,,"Plugins & Drivers (CSI, CNI, cloud providers)",,,,,- I want to know the milestone of each sigs. - I want to know how to contribute to each sigs.,"rarely, but I frequently watch the video and/or read the notes",,,,Additional developer tips/news content,Using the meeting to discuss project-wide development topics & roadblocks,,,,2,4,5,6,3,7,1,I want to know how to communicate with the sig members I want to contribute,3: several times a month,4,2,2,3: several times a month,1: never,4,4,kubernetes-dev@ mailing list,,,"#kubernetes-dev, #sig-foo, #sig-contribex slack",,Kubernetes blog,,,Yes,yes - it was helpful,I'm inexperienced and don't know enough to mentor,1,"Funding (no work support, or cannot afford to individually go)",,,,
+11260688063,252143207,01/07/2020 5:50:34 PM,01/07/2020 6:04:43 PM,106.73.133.64,,,,,one to two years,member,yes,Asia,1 other,2,3,2,2,3,4,3,2,3,3,,3,4,3,2,"yes, I can contribute on company time",every day,,"Code inside of another repo in the Kubernetes GitHub Org (example: /kubernetes-sigs, kubernetes/website, etc)",Documentation,Testing & Infrastructure,,,,,,,,never,,,,,,,,,2,4,5,6,3,7,1,,3: several times a month,4,2,1: never,4,1: never,2,3: several times a month,kubernetes-dev@ mailing list,,,"#kubernetes-dev, #sig-foo, #sig-contribex slack",,Kubernetes blog,kubernetes/community repo in GitHub (Issues and/or PRs),,No,yes - it was helpful,I would like to but I don't have the time / employer doesn't support it,3+,,,,,
+11260606302,252143207,01/07/2020 4:55:53 PM,01/07/2020 5:01:56 PM,103.26.16.167,,,,,three+ years,reviewer,yes,Oceania,2 or more,2,2,3,2,1: not challenging at all,3,2,3,4,2,,3,4,2,3,"yes, I can contribute on company time",several times a week,Core code inside of kubernetes/kubernetes,,,Testing & Infrastructure,,,"Related projects (Helm, container runtimes, other CNCF projects, etc.)",,,,,few times a year,,Having a full agenda with descriptions posted several days ahead,,,,Fewer meetings in my personal schedule,,,2,5,1,6,7,4,3,,2,5: everyday,1: never,4,5: everyday,1: never,3: several times a month,4,kubernetes-dev@ mailing list,,,"#kubernetes-dev, #sig-foo, #sig-contribex slack",,,,,Rarely (for reasons),no - didn't know this was a thing,I am already mentoring (you'll include your email in the last question because you want swag!),3+,Other (please specify),attending,,,
+11260545472,252143207,01/07/2020 4:04:48 PM,01/07/2020 4:16:58 PM,174.206.23.200,,,,,three+ years,member,if I had help/mentoring/support,North America,2 or more,5: the most challenging part,1: not challenging at all,1: not challenging at all,2,1: not challenging at all,2,2,4,4,4,,5: strongly agree,4,3,3,"no, I need to use my own time",every day,Core code inside of kubernetes/kubernetes,,,Testing & Infrastructure,,,,,,,,try to make it to all of them (3-4 a month),"Nothing, I attend and think they are great",Having a full agenda with descriptions posted several days ahead,,,,,,,2,6,1,4,5,7,3,,5: everyday,5: everyday,5: everyday,3: several times a month,5: everyday,3: several times a month,3: several times a month,3: several times a month,kubernetes-dev@ mailing list,Dedicated discuss.k8s.io forum for contributors,kubernetes-sig-contribex@ mailing list,"#kubernetes-dev, #sig-foo, #sig-contribex slack",@kubernetesio twitter,Kubernetes blog,kubernetes/community repo in GitHub (Issues and/or PRs),,Yes,yes - it was helpful,I'm inexperienced and don't know enough to mentor,3+,"Funding (no work support, or cannot afford to individually go)",,,,
+11260466846,252143207,01/07/2020 3:09:42 PM,01/07/2020 3:21:56 PM,47.148.98.219,,,,,three+ years,member,no,North America,1 other,3,3,3,1: not challenging at all,2,3,1: not challenging at all,2,1: not challenging at all,1: not challenging at all,,4,4,1: strongly disagree,1: strongly disagree,"yes, I can contribute on company time",a few times a year,,,Documentation,,Community & Project management; SIG Chair etc.,"Plugins & Drivers (CSI, CNI, cloud providers)","Related projects (Helm, container runtimes, other CNCF projects, etc.)",,,,,once a month,"Nothing, I attend and think they are great",,,,,,,,2,4,1,5,6,7,3,,3: several times a month,4,2,4,4,1: never,2,3: several times a month,,,kubernetes-sig-contribex@ mailing list,"#kubernetes-dev, #sig-foo, #sig-contribex slack",,,,,No,no - didn't know this was a thing,"Yes, please contact me (you'll include your email in the last question)",3+,,,,,
+11260384117,252143207,01/07/2020 2:21:19 PM,01/07/2020 2:32:44 PM,163.116.198.115,,,,,less than one year,not yet a member but working on it,if I had help/mentoring/support,Oceania,2 or more,2,4,2,4,3,2,5: the most challenging part,1: not challenging at all,1: not challenging at all,2,,3,3,2,2,"no, I need to use my own time",a few times a year,,"Code inside of another repo in the Kubernetes GitHub Org (example: /kubernetes-sigs, kubernetes/website, etc)",Documentation,Testing & Infrastructure,,,"Related projects (Helm, container runtimes, other CNCF projects, etc.)",,,,"It is great to see the ecosystem offering lots of mentoring / support opportunities. But unfortunately it's quite heavily focussed towards US/EU timezones. For example, Most of the SIG meetings I want to join happen during quite early hours like 3 A.M for someone like in Australia. Also, It is great to see the meeting video uploads in youtube but I believe it would be great if there is some sort of community support during working hours in my timezone.","rarely, but I frequently watch the video and/or read the notes",,,,,,,Different timeslot for the meeting,,1,5,3,4,6,7,2,,3: several times a month,5: everyday,2,3: several times a month,4,1: never,3: several times a month,2,,,,"#kubernetes-dev, #sig-foo, #sig-contribex slack",@kubernetesio twitter,,,,Yes,no - didn't know this was a thing,"Yes, please contact me (you'll include your email in the last question)",0,"Funding (no work support, or cannot afford to individually go)",,,,
+11260181931,252143207,01/07/2020 12:50:29 PM,01/07/2020 12:56:44 PM,68.15.88.179,,,,,two to three years,approver,if I had more free time,North America,1 other,4,5: the most challenging part,1: not challenging at all,1: not challenging at all,1: not challenging at all,3,4,2,3,2,,2,2,4,3,"yes, I can contribute on company time",every day,,"Code inside of another repo in the Kubernetes GitHub Org (example: /kubernetes-sigs, kubernetes/website, etc)",,,,"Plugins & Drivers (CSI, CNI, cloud providers)","Related projects (Helm, container runtimes, other CNCF projects, etc.)",,,,,"rarely, but I frequently watch the video and/or read the notes",,,,,Using the meeting to discuss project-wide development topics & roadblocks,,,,1,4,3,5,7,6,2,,4,5: everyday,1: never,3: several times a month,3: several times a month,1: never,3: several times a month,4,kubernetes-dev@ mailing list,,,,,,,,Rarely (for reasons),"no - i don't need mentoring, guidance, or other resources",I would like to but I don't have the time / employer doesn't support it,3+,"Funding (no work support, or cannot afford to individually go)",,,,
+11259999994,252143207,01/07/2020 10:54:32 AM,01/07/2020 11:38:25 AM,65.242.180.186,,,,,one to two years,not yet a member but working on it,yes,North America,this is my first open source project!,2,2,2,2,2,4,3,2,1: not challenging at all,2,,4,3,2,2,it's complicated.,several times a month,Core code inside of kubernetes/kubernetes,"Code inside of another repo in the Kubernetes GitHub Org (example: /kubernetes-sigs, kubernetes/website, etc)",,,,,,,,,,few times a year,,Having a full agenda with descriptions posted several days ahead,,Additional developer tips/news content,,,,,5,3,4,2,1,6,7,,4,4,2,3: several times a month,4,1: never,3: several times a month,3: several times a month,kubernetes-dev@ mailing list,,,,,Kubernetes blog,,Last Week in Kubernetes Development (LWKD) newsletter,Yes,yes - it was helpful,I would like to but I don't have the time / employer doesn't support it,2,,,,,
+11259870965,252143207,01/07/2020 10:30:11 AM,01/07/2020 10:44:04 AM,204.209.177.50,,,,,less than one year,approver,if I had more free time,North America,2 or more,2,2,1: not challenging at all,2,5: the most challenging part,3,3,4,5: the most challenging part,3,,2,2,5: strongly agree,5: strongly agree,"yes, I can contribute on company time",a few times a year,,"Code inside of another repo in the Kubernetes GitHub Org (example: /kubernetes-sigs, kubernetes/website, etc)",,,,,"Related projects (Helm, container runtimes, other CNCF projects, etc.)",,,,I get the impression that contribution paths assume ~infinite cloud budgets for testing (before getting to your CI); I'm closer to the other end.,never,,,Eliminating the demo at the beginning,,,,,"I personally dislike synchronous meetings; post concise meeting minutes I can skim instead. Also, it's not a _meeting_ unless everybody is expected to participate; otherwise they're more presentations.",2,3,4,5,7,6,1,Free time.,4,4,1: never,1: never,3: several times a month,2,1: never,2,kubernetes-dev@ mailing list,,,,,,,,Rarely (for reasons),"no - i don't need mentoring, guidance, or other resources",I'm inexperienced and don't know enough to mentor,0,Not attending KubeCon,,,,
+11259792236,252143207,01/07/2020 10:03:10 AM,01/07/2020 10:10:34 AM,107.77.205.194,,,,,three+ years,subproject owner,"no, already a subproject owner (highest level on the ladder)",North America,1 other,4,4,2,2,3,5: the most challenging part,2,3,2,3,,5: strongly agree,3,4,2,"yes, I can contribute on company time",several times a week,Core code inside of kubernetes/kubernetes,"Code inside of another repo in the Kubernetes GitHub Org (example: /kubernetes-sigs, kubernetes/website, etc)",Documentation,Testing & Infrastructure,Community & Project management; SIG Chair etc.,,,,Release,,Faster feedback,try to make it to all of them (3-4 a month),,Having a full agenda with descriptions posted several days ahead,Eliminating the demo at the beginning,Additional developer tips/news content,Using the meeting to discuss project-wide development topics & roadblocks,Fewer meetings in my personal schedule,,,6,4,3,5,1,7,2,Test ownership. Tests fail for too long with no clear responsibility to fix,3: several times a month,5: everyday,1: never,3: several times a month,5: everyday,1: never,2,2,kubernetes-dev@ mailing list,,kubernetes-sig-contribex@ mailing list,"#kubernetes-dev, #sig-foo, #sig-contribex slack",,,,,Yes,yes - it was helpful,"Yes, please contact me (you'll include your email in the last question)",3+,,,,,
+11259782287,252143207,01/07/2020 9:59:52 AM,01/07/2020 10:06:38 AM,71.237.176.63,,,,,three+ years,approver,yes,North America,2 or more,4,3,1: not challenging at all,3,2,5: the most challenging part,3,3,2,2,,4,4,4,3,"yes, I can contribute on company time",several times a week,,"Code inside of another repo in the Kubernetes GitHub Org (example: /kubernetes-sigs, kubernetes/website, etc)",Documentation,Testing & Infrastructure,Community & Project management; SIG Chair etc.,,"Related projects (Helm, container runtimes, other CNCF projects, etc.)",,Release,,complete our overhaul of the test framework.,try to make it to all of them (3-4 a month),,Having a full agenda with descriptions posted several days ahead,Eliminating the demo at the beginning,,Using the meeting to discuss project-wide development topics & roadblocks,Fewer meetings in my personal schedule,,,1,6,5,2,4,7,3,,3: several times a month,5: everyday,4,4,5: everyday,2,2,5: everyday,kubernetes-dev@ mailing list,,,,,Kubernetes blog,,,Yes,yes - it was helpful,I am already mentoring (you'll include your email in the last question because you want swag!),3+,,,,,
+11259699766,252143207,01/07/2020 9:29:45 AM,01/07/2020 9:33:53 AM,24.71.112.36,,,,,three+ years,subproject owner,"no, already a subproject owner (highest level on the ladder)",North America,2 or more,1: not challenging at all,1: not challenging at all,1: not challenging at all,1: not challenging at all,1: not challenging at all,1: not challenging at all,1: not challenging at all,1: not challenging at all,1: not challenging at all,2,,5: strongly agree,5: strongly agree,3,1: strongly disagree,"yes, I can contribute on company time",every day,Core code inside of kubernetes/kubernetes,"Code inside of another repo in the Kubernetes GitHub Org (example: /kubernetes-sigs, kubernetes/website, etc)",,Testing & Infrastructure,Community & Project management; SIG Chair etc.,,,,,,,never,,Having a full agenda with descriptions posted several days ahead,Eliminating the demo at the beginning,,,Fewer meetings in my personal schedule,,,7,1,4,3,5,2,6,,5: everyday,5: everyday,2,4,5: everyday,1: never,2,4,kubernetes-dev@ mailing list,,kubernetes-sig-contribex@ mailing list,"#kubernetes-dev, #sig-foo, #sig-contribex slack",@kubernetesio twitter,,kubernetes/community repo in GitHub (Issues and/or PRs),,Yes,"no - i don't need mentoring, guidance, or other resources",I would like to but I don't have the time / employer doesn't support it,3+,,,,,
+11259582520,252143207,01/07/2020 8:35:09 AM,01/07/2020 8:50:01 AM,69.52.34.36,,,,,less than one year,not yet a member but working on it,yes,North America,2 or more,3,1: not challenging at all,1: not challenging at all,1: not challenging at all,1: not challenging at all,1: not challenging at all,4,5: the most challenging part,1: not challenging at all,1: not challenging at all,,5: strongly agree,5: strongly agree,2,3,"no, I need to use my own time",a few times a year,Core code inside of kubernetes/kubernetes,,,,,,"Related projects (Helm, container runtimes, other CNCF projects, etc.)",,,,,never,,,,,Using the meeting to discuss project-wide development topics & roadblocks,Fewer meetings in my personal schedule,,,1,,3,,,,2,,3: several times a month,2,1: never,1: never,2,1: never,1: never,1: never,kubernetes-dev@ mailing list,,kubernetes-sig-contribex@ mailing list,,@kubernetesio twitter,,,,Yes,no - didn't know this was a thing,I'm inexperienced and don't know enough to mentor,1,,,,,
+11259557337,252143207,01/07/2020 8:32:25 AM,01/07/2020 8:40:20 AM,192.101.103.171,,,,,two to three years,member,yes,North America,2 or more,2,3,2,4,1: not challenging at all,3,1: not challenging at all,2,4,1: not challenging at all,,3,3,3,1: strongly disagree,"yes, I can contribute on company time",a few times a year,Core code inside of kubernetes/kubernetes,"Code inside of another repo in the Kubernetes GitHub Org (example: /kubernetes-sigs, kubernetes/website, etc)",,,,"Plugins & Drivers (CSI, CNI, cloud providers)","Related projects (Helm, container runtimes, other CNCF projects, etc.)",,,,"A lot of things get done only in meetings. But doing cross project work, there are too many meetings to reasonably get to.","rarely, but I frequently watch the video and/or read the notes",,,,,,Fewer meetings in my personal schedule,,,1,4,2,3,7,5,6,"Question 14 is vague. Assuming 1 is the best, 7 is the worst?",3: several times a month,4,2,4,5: everyday,1: never,3: several times a month,2,kubernetes-dev@ mailing list,,,,,Kubernetes blog,,,No,no - didn't know this was a thing,I would like to but I don't have the time / employer doesn't support it,2,,,,,
+11259528817,252143207,01/07/2020 8:08:56 AM,01/07/2020 8:29:12 AM,88.130.55.79,,,,,one to two years,reviewer,yes,Europe,2 or more,2,2,3,1: not challenging at all,1: not challenging at all,4,1: not challenging at all,4,1: not challenging at all,2,"It's hard to allocate time aside from the dayjob. It would be great to work on Kubernetes full-time and I'm looking at options, but it could be easier. Some sort of sponsorship or funding for contributors.",4,4,3,4,it's complicated.,several times a week,Core code inside of kubernetes/kubernetes,"Code inside of another repo in the Kubernetes GitHub Org (example: /kubernetes-sigs, kubernetes/website, etc)",Documentation,,,,,,,,Make it easier to do this full-time without having to worry about another job. I'd totally love to do what I do all day but I can't and it's hard to find jobs that would allow me to.,few times a year,,,,,,Fewer meetings in my personal schedule,,,2,4,3,5,6,7,1,,3: several times a month,5: everyday,1: never,4,4,1: never,2,4,kubernetes-dev@ mailing list,,,"#kubernetes-dev, #sig-foo, #sig-contribex slack",,,,,Rarely (for reasons),yes - it was helpful,I would like to but I don't have the time / employer doesn't support it,0,"Funding (no work support, or cannot afford to individually go)",,,,
+11259436873,252143207,01/07/2020 7:46:52 AM,01/07/2020 7:54:20 AM,188.137.38.169,,,,,three+ years,subproject owner,"no, already a subproject owner (highest level on the ladder)",Europe,2 or more,1: not challenging at all,1: not challenging at all,1: not challenging at all,1: not challenging at all,1: not challenging at all,3,1: not challenging at all,1: not challenging at all,1: not challenging at all,1: not challenging at all,,5: strongly agree,5: strongly agree,5: strongly agree,4,"yes, I can contribute on company time",every day,Core code inside of kubernetes/kubernetes,"Code inside of another repo in the Kubernetes GitHub Org (example: /kubernetes-sigs, kubernetes/website, etc)",Documentation,,Community & Project management; SIG Chair etc.,,,,,,-,few times a year,,,,,,Fewer meetings in my personal schedule,,,1,7,2,5,3,6,4,-,5: everyday,5: everyday,1: never,4,5: everyday,1: never,4,4,kubernetes-dev@ mailing list,,,"#kubernetes-dev, #sig-foo, #sig-contribex slack",,,,,Rarely (for reasons),yes - it was helpful,I am already mentoring (you'll include your email in the last question because you want swag!),3+,Other (please specify),-,,,
+11259356772,252143207,01/07/2020 7:18:25 AM,01/07/2020 7:22:34 AM,104.132.96.79,,,,,one to two years,not yet a member but working on it,if I had help/mentoring/support,North America,1 other,5: the most challenging part,1: not challenging at all,1: not challenging at all,3,3,3,4,4,2,4,,3,3,3,3,it's complicated.,a few times a year,,,,,,,,"Don’t contribute yet, hoping to start soon",,,N/A,once a month,"Nothing, I attend and think they are great",,,,,,,,1,2,6,3,5,7,4,N/A,4,3: several times a month,2,3: several times a month,3: several times a month,3: several times a month,4,4,kubernetes-dev@ mailing list,,kubernetes-sig-contribex@ mailing list,,,,,,No,no - didn't know this was a thing,I'm inexperienced and don't know enough to mentor,0,Attending other conference,,,,
+11259293781,252143207,01/07/2020 6:50:20 AM,01/07/2020 6:56:49 AM,80.169.160.158,,,,,one to two years,member,if I had help/mentoring/support,Europe,this is my first open source project!,4,4,1: not challenging at all,3,3,4,5: the most challenging part,4,3,4,,2,2,3,1: strongly disagree,"yes, I can contribute on company time",several times a week,,"Code inside of another repo in the Kubernetes GitHub Org (example: /kubernetes-sigs, kubernetes/website, etc)",Documentation,Testing & Infrastructure,,,,,Release,,,never,,Having a full agenda with descriptions posted several days ahead,,Additional developer tips/news content,Using the meeting to discuss project-wide development topics & roadblocks,,Different timeslot for the meeting,,1,5,4,,3,6,2,,5: everyday,5: everyday,2,4,5: everyday,1: never,3: several times a month,4,kubernetes-dev@ mailing list,,,"#kubernetes-dev, #sig-foo, #sig-contribex slack",,,,,Rarely (for reasons),no - didn't know this was a thing,I'm inexperienced and don't know enough to mentor,2,,,,,
+11259203235,252143207,01/07/2020 6:09:35 AM,01/07/2020 6:19:23 AM,104.132.228.17,,,,,three+ years,member,yes,Europe,1 other,5: the most challenging part,4,2,1: not challenging at all,1: not challenging at all,2,1: not challenging at all,1: not challenging at all,1: not challenging at all,3,,4,4,4,2,"yes, I can contribute on company time",several times a month,Core code inside of kubernetes/kubernetes,,,,,,,,,,Most of my time in spent blocked on responses from a small number of approvers.,never,,Having a full agenda with descriptions posted several days ahead,,,,,Different timeslot for the meeting,,3,4,5,6,7,2,1,"Staff the ""KEP Editor Role"" described in the KEP process",5: everyday,4,2,3: several times a month,4,,1: never,3: several times a month,kubernetes-dev@ mailing list,,,,,,,,Yes,no - didn't know this was a thing,I would like to but I don't have the time / employer doesn't support it,1,,,,,
+11259200208,252143207,01/07/2020 6:12:56 AM,01/07/2020 6:18:01 AM,66.207.217.98,,,,,less than one year,member,yes,North America,2 or more,4,4,1: not challenging at all,2,1: not challenging at all,2,3,2,1: not challenging at all,1: not challenging at all,,5: strongly agree,5: strongly agree,5: strongly agree,1: strongly disagree,"yes, I can contribute on company time",several times a week,,"Code inside of another repo in the Kubernetes GitHub Org (example: /kubernetes-sigs, kubernetes/website, etc)",,,,,,,,,better communication in the community,once a month,,Having a full agenda with descriptions posted several days ahead,,,,Fewer meetings in my personal schedule,,,2,3,4,5,6,7,1,,3: several times a month,5: everyday,1: never,5: everyday,5: everyday,1: never,4,4,kubernetes-dev@ mailing list,,,"#kubernetes-dev, #sig-foo, #sig-contribex slack",,,,,Yes,no - didn't know this was a thing,I'm inexperienced and don't know enough to mentor,1,,,,,
+11259051348,252143207,01/07/2020 5:00:36 AM,01/07/2020 5:06:12 AM,67.4.211.249,,,,,two to three years,approver,if I had more free time,North America,1 other,3,3,1: not challenging at all,1: not challenging at all,3,4,2,3,2,1: not challenging at all,,5: strongly agree,4,4,4,"yes, I can contribute on company time",several times a week,,"Code inside of another repo in the Kubernetes GitHub Org (example: /kubernetes-sigs, kubernetes/website, etc)",,Testing & Infrastructure,,,"Related projects (Helm, container runtimes, other CNCF projects, etc.)",,,,,few times a year,,Having a full agenda with descriptions posted several days ahead,Eliminating the demo at the beginning,Additional developer tips/news content,Using the meeting to discuss project-wide development topics & roadblocks,,Different timeslot for the meeting,,1,4,3,5,6,7,2,,3: several times a month,5: everyday,1: never,3: several times a month,5: everyday,1: never,2,4,kubernetes-dev@ mailing list,,,,,,,,Rarely (for reasons),,I'm inexperienced and don't know enough to mentor,2,,,,,
+11259030570,252143207,01/07/2020 4:43:19 AM,01/07/2020 4:54:30 AM,94.228.56.27,,,,,two to three years,reviewer,if I had help/mentoring/support,Europe,1 other,5: the most challenging part,5: the most challenging part,1: not challenging at all,3,2,3,2,2,2,4,,5: strongly agree,5: strongly agree,2,3,it's complicated.,several times a week,Core code inside of kubernetes/kubernetes,"Code inside of another repo in the Kubernetes GitHub Org (example: /kubernetes-sigs, kubernetes/website, etc)",,Testing & Infrastructure,,,,,,,"Have more approvers, especially in sig-node, and don't take 4-5 months to get a PR merged! I want to help here.","rarely, but I frequently watch the video and/or read the notes",,,,,,Fewer meetings in my personal schedule,,,2,1,5,7,6,3,4,"Monitoring the velocity of issue resolution, per SIG, and take action.",2,4,1: never,1: never,5: everyday,1: never,3: several times a month,3: several times a month,kubernetes-dev@ mailing list,,,"#kubernetes-dev, #sig-foo, #sig-contribex slack",,,,,Yes,no - didn't know this was a thing,I would like to but I don't have the time / employer doesn't support it,1,,,,,
+11258974260,252143207,01/07/2020 4:10:51 AM,01/07/2020 4:20:23 AM,144.212.3.4,,,,,less than one year,member,yes,North America,this is my first open source project!,4,2,2,1: not challenging at all,1: not challenging at all,5: the most challenging part,3,4,3,3,,1: strongly disagree,3,3,4,it's complicated.,several times a month,,"Code inside of another repo in the Kubernetes GitHub Org (example: /kubernetes-sigs, kubernetes/website, etc)",Documentation,,,,,,,,,"rarely, but I frequently watch the video and/or read the notes",,Having a full agenda with descriptions posted several days ahead,,Additional developer tips/news content,,Fewer meetings in my personal schedule,,,1,6,4,5,3,7,2,,2,5: everyday,2,5: everyday,5: everyday,1: never,2,2,kubernetes-dev@ mailing list,,kubernetes-sig-contribex@ mailing list,"#kubernetes-dev, #sig-foo, #sig-contribex slack",,,,,Yes,no - didn't know this was a thing,"Yes, please contact me (you'll include your email in the last question)",1,,,,,
+11258958065,252143207,01/07/2020 4:05:59 AM,01/07/2020 4:10:07 AM,200.104.76.87,,,,,three+ years,subproject owner,if I had more free time,South America,2 or more,1: not challenging at all,2,2,2,2,3,2,1: not challenging at all,1: not challenging at all,2,,5: strongly agree,5: strongly agree,4,5: strongly agree,"no, I need to use my own time",every day,,"Code inside of another repo in the Kubernetes GitHub Org (example: /kubernetes-sigs, kubernetes/website, etc)",,,,,,,,,,try to make it to all of them (3-4 a month),,,,,,,,,,,,,,,,,5: everyday,5: everyday,5: everyday,2,4,1: never,4,3: several times a month,kubernetes-dev@ mailing list,Dedicated discuss.k8s.io forum for contributors,,"#kubernetes-dev, #sig-foo, #sig-contribex slack",,,kubernetes/community repo in GitHub (Issues and/or PRs),,Yes,"no - i don't need mentoring, guidance, or other resources",I would like to but I don't have the time / employer doesn't support it,3+,,,,,
+11258926226,252143207,01/07/2020 3:40:38 AM,01/07/2020 3:49:25 AM,78.45.134.79,,,,,three+ years,approver,if I had more free time,Europe,2 or more,3,3,2,2,2,5: the most challenging part,1: not challenging at all,2,4,3,,3,3,5: strongly agree,4,"yes, I can contribute on company time",several times a week,Core code inside of kubernetes/kubernetes,"Code inside of another repo in the Kubernetes GitHub Org (example: /kubernetes-sigs, kubernetes/website, etc)",Documentation,,,"Plugins & Drivers (CSI, CNI, cloud providers)",,,,,,few times a year,,,,Additional developer tips/news content,,Fewer meetings in my personal schedule,,,4,5,1,6,7,3,2,,5: everyday,5: everyday,1: never,4,5: everyday,2,2,4,kubernetes-dev@ mailing list,,,,,Kubernetes blog,,,Rarely (for reasons),"no - i don't need mentoring, guidance, or other resources",I would like to but I don't have the time / employer doesn't support it,3+,"Funding (no work support, or cannot afford to individually go)",,,,
+11258892390,252143207,01/07/2020 3:16:23 AM,01/07/2020 3:26:56 AM,81.2.91.99,,,,,less than one year,reviewer,yes,Europe,2 or more,5: the most challenging part,3,3,1: not challenging at all,3,3,2,2,2,2,Finding other contributors with time to review my PRs,3,5: strongly agree,1: strongly disagree,3,it's complicated.,several times a week,,,Documentation,,,,,,Release,,"(More discoverable?) tooling to help reviewers & approvers select a subset of PRs to consider, out of all the ones they might look at.",never,,,,,,Fewer meetings in my personal schedule,,,1,6,4,7,2,5,3,,2,3: several times a month,2,3: several times a month,4,1: never,2,2,,,,,,Kubernetes blog,,,Yes,no - didn't know this was a thing,"Yes, please contact me (you'll include your email in the last question)",1,Other (please specify),Environmental impact of travel,,,
+11258764058,252143207,01/07/2020 1:40:28 AM,01/07/2020 1:58:01 AM,196.203.109.250,,,,,less than one year,member,yes,Africa,1 other,3,3,3,4,2,3,5: the most challenging part,4,4,3,,4,4,4,2,"no, I need to use my own time",several times a week,,"Code inside of another repo in the Kubernetes GitHub Org (example: /kubernetes-sigs, kubernetes/website, etc)",Documentation,,,,,,Release,,,few times a year,,,,,,,Different timeslot for the meeting,,,,,,,,,,2,4,1: never,2,3: several times a month,1: never,1: never,1: never,kubernetes-dev@ mailing list,,,,,,,,Yes,no - didn't know this was a thing,"Yes, please contact me (you'll include your email in the last question)",0,"Funding (no work support, or cannot afford to individually go)",,,,
+11258747078,252143207,01/07/2020 1:28:49 AM,01/07/2020 1:44:32 AM,80.169.160.158,,,,,one to two years,reviewer,if I had help/mentoring/support,Europe,1 other,3,3,2,2,5: the most challenging part,4,,2,3,2,,2,2,5: strongly agree,4,"yes, I can contribute on company time",every day,Core code inside of kubernetes/kubernetes,"Code inside of another repo in the Kubernetes GitHub Org (example: /kubernetes-sigs, kubernetes/website, etc)",,Testing & Infrastructure,,,,,Release,,"- More focus on proper testing - Not reinventing all the things (e.g. CI, release & packaging tooling, ...) - Not pushing everything to bazel (or make bazel better) - Splitting things that belong together across multiple repos - Not writing proper (ba)sh (writing terrible/untested/untestable scripts) and then complaining about it",few times a year,"Nothing, I attend and think they are great",Having a full agenda with descriptions posted several days ahead,,,,,,,2,3,6,4,7,5,1,,4,5: everyday,1: never,4,5: everyday,1: never,2,3: several times a month,kubernetes-dev@ mailing list,,,"#kubernetes-dev, #sig-foo, #sig-contribex slack",,,,,No,"no - i don't need mentoring, guidance, or other resources",,2,,,,,
+11258727829,252143207,01/07/2020 12:38:44 AM,01/07/2020 1:29:05 AM,90.68.126.75,,,,,one to two years,member,yes,Europe,2 or more,1: not challenging at all,4,2,2,3,2,4,1: not challenging at all,1: not challenging at all,2,,4,4,1: strongly disagree,3,"yes, I can contribute on company time",every day,Core code inside of kubernetes/kubernetes,"Code inside of another repo in the Kubernetes GitHub Org (example: /kubernetes-sigs, kubernetes/website, etc)",Documentation,Testing & Infrastructure,,"Plugins & Drivers (CSI, CNI, cloud providers)","Related projects (Helm, container runtimes, other CNCF projects, etc.)",,,,Be more time-zone friendly with Europe,never,,,,,,Fewer meetings in my personal schedule,,,7,4,6,5,3,1,2,,5: everyday,5: everyday,2,3: several times a month,5: everyday,1: never,1: never,3: several times a month,kubernetes-dev@ mailing list,,,"#kubernetes-dev, #sig-foo, #sig-contribex slack",@kubernetesio twitter,,,,No,no - didn't know this was a thing,I would like to but I don't have the time / employer doesn't support it,1,"Funding (no work support, or cannot afford to individually go)",,,,
+11258694531,252143207,01/07/2020 12:55:07 AM,01/07/2020 1:02:09 AM,2.85.13.140,,,,,one to two years,approver,yes,Europe,2 or more,3,3,2,2,2,4,3,1: not challenging at all,1: not challenging at all,3,,5: strongly agree,5: strongly agree,2,2,"yes, I can contribute on company time",every day,Core code inside of kubernetes/kubernetes,,,Testing & Infrastructure,,,,,,,,few times a year,,Having a full agenda with descriptions posted several days ahead,,,,Fewer meetings in my personal schedule,,,1,4,2,5,6,7,3,,2,5: everyday,2,4,5: everyday,2,3: several times a month,1: never,kubernetes-dev@ mailing list,,,"#kubernetes-dev, #sig-foo, #sig-contribex slack",,,kubernetes/community repo in GitHub (Issues and/or PRs),,Yes,yes - it was helpful,I would like to but I don't have the time / employer doesn't support it,3+,Attending other conference,,,,
+11258645483,252143207,01/07/2020 12:06:08 AM,01/07/2020 12:18:23 AM,213.226.246.113,,,,,two to three years,approver,yes,Europe,1 other,4,3,2,1: not challenging at all,1: not challenging at all,2,1: not challenging at all,2,1: not challenging at all,3,,4,4,4,5: strongly agree,"yes, I can contribute on company time",several times a week,Core code inside of kubernetes/kubernetes,,,,,,"Related projects (Helm, container runtimes, other CNCF projects, etc.)",,,,"getting rid of Bazel which is most frequent source of conflicts on PRs, and golang doesn't need those files",few times a year,,Having a full agenda with descriptions posted several days ahead,Eliminating the demo at the beginning,,Using the meeting to discuss project-wide development topics & roadblocks,,Different timeslot for the meeting,,6,3,1,4,2,7,5,"Sig chair reelection process, or retirement when e.g. helm got moved out of Sig Apps and 2 of the Sig chairs working only on that still remain after >year",5: everyday,4,1: never,3: several times a month,4,1: never,2,3: several times a month,kubernetes-dev@ mailing list,,,,,,,,No,"no - i don't need mentoring, guidance, or other resources",I would like to but I don't have the time / employer doesn't support it,2,Not attending KubeCon,,,,
+11258612201,252143207,01/06/2020 11:38:04 PM,01/06/2020 11:47:12 PM,24.134.36.61,,,,,less than one year,approver,yes,Europe,2 or more,2,1: not challenging at all,2,4,1: not challenging at all,4,3,2,3,2,,4,4,2,2,"yes, I can contribute on company time",every day,,"Code inside of another repo in the Kubernetes GitHub Org (example: /kubernetes-sigs, kubernetes/website, etc)",Documentation,Testing & Infrastructure,,,"Related projects (Helm, container runtimes, other CNCF projects, etc.)",,Release,,,"rarely, but I frequently watch the video and/or read the notes",,,,,Using the meeting to discuss project-wide development topics & roadblocks,,Different timeslot for the meeting,,7,3,1,4,2,5,6,,5: everyday,5: everyday,1: never,4,5: everyday,1: never,3: several times a month,4,kubernetes-dev@ mailing list,,,"#kubernetes-dev, #sig-foo, #sig-contribex slack",,,,,No,yes - it was helpful,"Yes, please contact me (you'll include your email in the last question)",1,Not attending KubeCon,,,,
+11258575062,252143207,01/06/2020 10:57:13 PM,01/06/2020 11:07:52 PM,65.50.172.135,,,,,less than one year,not yet a member but working on it,yes,North America,this is my first open source project!,4,1: not challenging at all,1: not challenging at all,1: not challenging at all,1: not challenging at all,4,1: not challenging at all,2,,2,,3,3,3,1: strongly disagree,"no, I need to use my own time",a few times a year,,,,,,,,"Don’t contribute yet, hoping to start soon",,,,"rarely, but I frequently watch the video and/or read the notes",,Having a full agenda with descriptions posted several days ahead,,Additional developer tips/news content,Using the meeting to discuss project-wide development topics & roadblocks,Fewer meetings in my personal schedule,,,2,7,3,5,4,6,1,,5: everyday,5: everyday,3: several times a month,2,3: several times a month,1: never,4,3: several times a month,kubernetes-dev@ mailing list,,,"#kubernetes-dev, #sig-foo, #sig-contribex slack",@kubernetesio twitter,,,,Yes,no - didn't know this was a thing,I'm inexperienced and don't know enough to mentor,1,,,,,
+11258567437,252143207,01/06/2020 10:53:00 PM,01/06/2020 10:59:42 PM,176.186.115.246,,,,,one to two years,member,if I had more free time,Europe,this is my first open source project!,4,4,3,,5: the most challenging part,5: the most challenging part,5: the most challenging part,1: not challenging at all,2,4,,1: strongly disagree,1: strongly disagree,1: strongly disagree,2,it's complicated.,several times a month,,,,Testing & Infrastructure,Community & Project management; SIG Chair etc.,,,,Release,,,once a month,,,,Additional developer tips/news content,,Fewer meetings in my personal schedule,,,2,5,4,6,3,7,1,,4,5: everyday,2,4,4,1: never,2,3: several times a month,kubernetes-dev@ mailing list,,kubernetes-sig-contribex@ mailing list,"#kubernetes-dev, #sig-foo, #sig-contribex slack",,Kubernetes blog,,,Rarely (for reasons),"no - i don't need mentoring, guidance, or other resources",I would like to but I don't have the time / employer doesn't support it,3+,,,,,
+11258432135,252143207,01/06/2020 8:10:12 PM,01/06/2020 8:16:54 PM,139.167.30.187,,,,,one to two years,not yet a member but working on it,yes,Asia,2 or more,2,1: not challenging at all,2,2,3,2,2,1: not challenging at all,2,1: not challenging at all,,4,4,4,4,"yes, I can contribute on company time",several times a week,Core code inside of kubernetes/kubernetes,,Documentation,,Community & Project management; SIG Chair etc.,,"Related projects (Helm, container runtimes, other CNCF projects, etc.)",,,,Its the best structured,once a month,"Nothing, I attend and think they are great",,,,,,,,3,1,2,4,5,6,7,N/A,5: everyday,3: several times a month,2,3: several times a month,4,1: never,3: several times a month,3: several times a month,kubernetes-dev@ mailing list,Dedicated discuss.k8s.io forum for contributors,kubernetes-sig-contribex@ mailing list,"#kubernetes-dev, #sig-foo, #sig-contribex slack",,,kubernetes/community repo in GitHub (Issues and/or PRs),,Yes,"no - i don't need mentoring, guidance, or other resources","Yes, please contact me (you'll include your email in the last question)",0,"Funding (no work support, or cannot afford to individually go)",,,,
+11258414010,252143207,01/06/2020 7:46:44 PM,01/06/2020 7:56:29 PM,73.189.40.219,,,,,one to two years,member,yes,North America,1 other,4,3,3,2,3,4,3,3,4,3,,4,3,4,4,"yes, I can contribute on company time",several times a week,Core code inside of kubernetes/kubernetes,"Code inside of another repo in the Kubernetes GitHub Org (example: /kubernetes-sigs, kubernetes/website, etc)",Documentation,,,,,,,,"Better documentation, especially around development processes",never,,Having a full agenda with descriptions posted several days ahead,,,,Fewer meetings in my personal schedule,,,3,6,4,7,5,2,1,Reducing noise,4,5: everyday,2,3: several times a month,4,1: never,2,4,kubernetes-dev@ mailing list,,,,,,,,Rarely (for reasons),no - didn't know this was a thing,I'm inexperienced and don't know enough to mentor,1,,,,,
+11258412258,252143207,01/06/2020 7:50:17 PM,01/06/2020 7:54:32 PM,49.255.79.202,,,,,one to two years,member,yes,Oceania,2 or more,3,3,3,3,3,3,3,3,3,3,,1: strongly disagree,3,3,3,"no, I need to use my own time",every day,,,,,Community & Project management; SIG Chair etc.,,,,,,,never,,,,,,,Different timeslot for the meeting,,,,,,,,,,5: everyday,5: everyday,2,2,3: several times a month,1: never,2,2,kubernetes-dev@ mailing list,,,,,,,,No,no - didn't know this was a thing,I'm inexperienced and don't know enough to mentor,0,Not attending KubeCon,,,,
+11258372463,252143207,01/06/2020 6:41:52 PM,01/06/2020 7:13:37 PM,24.128.225.52,,,,,one to two years,subproject owner,"no, already a subproject owner (highest level on the ladder)",North America,2 or more,3,4,3,1: not challenging at all,2,3,1: not challenging at all,2,1: not challenging at all,1: not challenging at all,"Separate from Code/Docs review itself - finding reviewers/approvers can be very difficult. Also GitHub notification hell makes things very hard to track, gmail filters are pretty much essential to get any use of them.",5: strongly agree,3,3,2,it's complicated.,several times a week,Core code inside of kubernetes/kubernetes,"Code inside of another repo in the Kubernetes GitHub Org (example: /kubernetes-sigs, kubernetes/website, etc)",,,Community & Project management; SIG Chair etc.,,"Related projects (Helm, container runtimes, other CNCF projects, etc.)",,Release,,"Less meetings, more async communication.",try to make it to all of them (3-4 a month),,Having a full agenda with descriptions posted several days ahead,Eliminating the demo at the beginning,Additional developer tips/news content,Using the meeting to discuss project-wide development topics & roadblocks,Fewer meetings in my personal schedule,,,3,4,5,6,7,1,2,,5: everyday,5: everyday,2,4,5: everyday,2,1: never,4,kubernetes-dev@ mailing list,,,"#kubernetes-dev, #sig-foo, #sig-contribex slack",,,kubernetes/community repo in GitHub (Issues and/or PRs),LWKD,Rarely (for reasons),yes - it was helpful,I would like to but I don't have the time / employer doesn't support it,3+,,,,,
+11258364195,252143207,01/06/2020 6:56:35 PM,01/06/2020 7:05:27 PM,201.81.177.61,,,,,less than one year,member,if I had help/mentoring/support,South America,1 other,4,2,1: not challenging at all,2,1: not challenging at all,3,4,1: not challenging at all,2,1: not challenging at all,,4,3,2,2,it's complicated.,several times a month,Core code inside of kubernetes/kubernetes,"Code inside of another repo in the Kubernetes GitHub Org (example: /kubernetes-sigs, kubernetes/website, etc)",,,,,"Related projects (Helm, container runtimes, other CNCF projects, etc.)",,,,"I think the project lacks some good first issues to new contributors and also generating and motivating non-Go contributions. A lot of ppl willing to contribute are not even Go developers but want to start to, and its pretty hard to find a way inside k/k code without mentorship and/or good first issues",never,,,,,,Fewer meetings in my personal schedule,,,3,5,2,6,4,7,1,,4,5: everyday,1: never,4,4,1: never,2,4,kubernetes-dev@ mailing list,,,"#kubernetes-dev, #sig-foo, #sig-contribex slack",@kubernetesio twitter,,,,No,no - didn't know this was a thing,I'm inexperienced and don't know enough to mentor,1,,,,,
+11258363012,252143207,01/06/2020 6:53:57 PM,01/06/2020 7:04:22 PM,175.138.71.25,,,,,less than one year,not yet a member but working on it,yes,Asia,2 or more,3,3,2,3,3,,2,2,3,4,,4,3,3,3,"yes, I can contribute on company time",a few times a year,,,,,,,,"Don’t contribute yet, hoping to start soon",,,,"rarely, but I frequently watch the video and/or read the notes",,,Eliminating the demo at the beginning,Additional developer tips/news content,,,Different timeslot for the meeting,,1,6,3,4,5,7,2,,1: never,5: everyday,3: several times a month,2,3: several times a month,2,3: several times a month,4,,,,"#kubernetes-dev, #sig-foo, #sig-contribex slack",,,,,No,yes - it was helpful,I'm inexperienced and don't know enough to mentor,0,Not attending KubeCon,,,,
+11258358731,252143207,01/06/2020 6:49:59 PM,01/06/2020 7:00:32 PM,84.43.230.244,,,,,two to three years,subproject owner,"no, already a subproject owner (highest level on the ladder)",Europe,2 or more,3,4,2,1: not challenging at all,5: the most challenging part,4,1: not challenging at all,1: not challenging at all,2,3,,2,2,4,3,"yes, I can contribute on company time",every day,Core code inside of kubernetes/kubernetes,"Code inside of another repo in the Kubernetes GitHub Org (example: /kubernetes-sigs, kubernetes/website, etc)",Documentation,Testing & Infrastructure,Community & Project management; SIG Chair etc.,,,,Release,,De-flake the CI.,try to make it to all of them (3-4 a month),,Having a full agenda with descriptions posted several days ahead,,,Using the meeting to discuss project-wide development topics & roadblocks,,,,6,3,2,5,4,7,1,Unsure,5: everyday,5: everyday,2,5: everyday,5: everyday,1: never,4,4,kubernetes-dev@ mailing list,,kubernetes-sig-contribex@ mailing list,"#kubernetes-dev, #sig-foo, #sig-contribex slack",,,,,Yes,yes - it was helpful,I would like to but I don't have the time / employer doesn't support it,2,Not attending KubeCon,,,,
+11258346568,252143207,01/06/2020 6:33:34 PM,01/06/2020 6:48:58 PM,172.58.36.140,,,,,one to two years,subproject owner,"no, already a subproject owner (highest level on the ladder)",North America,this is my first open source project!,4,2,4,3,4,5: the most challenging part,3,5: the most challenging part,2,3,,4,1: strongly disagree,5: strongly agree,5: strongly agree,"yes, I can contribute on company time",every day,,"Code inside of another repo in the Kubernetes GitHub Org (example: /kubernetes-sigs, kubernetes/website, etc)",,Testing & Infrastructure,,,,,,,"Get rid of the CI notifications! Also: less flaky tests, easier to debug infra failures",few times a year,,,,,,,,I don’t think a meeting at such a high level in such a large project will ever be useful and valuable for an average contributor.,,,,,,,,,1: never,5: everyday,1: never,3: several times a month,5: everyday,1: never,1: never,3: several times a month,,,,,,,,#announcements on slack,Rarely (for reasons),yes - it wasn't helpful,I'm inexperienced and don't know enough to mentor,2,"Funding (no work support, or cannot afford to individually go)",,,,
+11258339539,252143207,01/06/2020 6:23:16 PM,01/06/2020 6:42:29 PM,211.95.26.70,,,,,one to two years,not yet a member but working on it,if I had more free time,Asia,1 other,3,3,3,3,3,4,3,1: not challenging at all,1: not challenging at all,1: not challenging at all,,2,2,2,2,"no, I need to use my own time",several times a week,Core code inside of kubernetes/kubernetes,,,Testing & Infrastructure,,"Plugins & Drivers (CSI, CNI, cloud providers)",,,,,Kubecon new contributor introduction workshop is a good scenario,never,,,,,Using the meeting to discuss project-wide development topics & roadblocks,,,,7,6,5,4,2,3,1,,5: everyday,3: several times a month,3: several times a month,3: several times a month,2,2,2,3: several times a month,kubernetes-dev@ mailing list,,,,,,,,Yes,yes - it was helpful,"Yes, please contact me (you'll include your email in the last question)",1,"Funding (no work support, or cannot afford to individually go)",,,,
+11258333495,252143207,01/06/2020 6:30:05 PM,01/06/2020 6:37:02 PM,73.92.122.77,,,,,three+ years,member,yes,North America,2 or more,1: not challenging at all,1: not challenging at all,1: not challenging at all,1: not challenging at all,2,3,2,1: not challenging at all,1: not challenging at all,1: not challenging at all,,5: strongly agree,5: strongly agree,1: strongly disagree,1: strongly disagree,"yes, I can contribute on company time",every day,Core code inside of kubernetes/kubernetes,"Code inside of another repo in the Kubernetes GitHub Org (example: /kubernetes-sigs, kubernetes/website, etc)",Documentation,,Community & Project management; SIG Chair etc.,,"Related projects (Helm, container runtimes, other CNCF projects, etc.)",,,,No,try to make it to all of them (3-4 a month),"Nothing, I attend and think they are great",,,,,,,,1,6,2,5,3,7,4,N/A,5: everyday,5: everyday,4,5: everyday,5: everyday,1: never,3: several times a month,5: everyday,,,,"#kubernetes-dev, #sig-foo, #sig-contribex slack",,,,,Yes,yes - it was helpful,I am already mentoring (you'll include your email in the last question because you want swag!),3+,Other (please specify),N/A,,,
+11258328736,252143207,01/06/2020 6:26:09 PM,01/06/2020 6:32:43 PM,71.65.242.110,,,,,three+ years,subproject owner,"no, already a subproject owner (highest level on the ladder)",North America,2 or more,3,4,1: not challenging at all,2,2,5: the most challenging part,1: not challenging at all,2,1: not challenging at all,2,,5: strongly agree,3,2,5: strongly agree,"yes, I can contribute on company time",every day,Core code inside of kubernetes/kubernetes,"Code inside of another repo in the Kubernetes GitHub Org (example: /kubernetes-sigs, kubernetes/website, etc)",Documentation,Testing & Infrastructure,Community & Project management; SIG Chair etc.,,,,Release,,Stabilize CI tests,few times a year,,Having a full agenda with descriptions posted several days ahead,Eliminating the demo at the beginning,,Using the meeting to discuss project-wide development topics & roadblocks,Fewer meetings in my personal schedule,,,4,1,2,7,6,5,3,,3: several times a month,5: everyday,1: never,3: several times a month,5: everyday,1: never,2,4,kubernetes-dev@ mailing list,,,"#kubernetes-dev, #sig-foo, #sig-contribex slack",,,,,Rarely (for reasons),"no - i don't need mentoring, guidance, or other resources",I am already mentoring (you'll include your email in the last question because you want swag!),3+,,,,,
\ No newline at end of file diff --git a/sig-contributor-experience/surveys/contribex-survey-2019.md b/sig-contributor-experience/surveys/2019/contribex-survey-2019.md index cc05f805..cc05f805 100644 --- a/sig-contributor-experience/surveys/contribex-survey-2019.md +++ b/sig-contributor-experience/surveys/2019/contribex-survey-2019.md diff --git a/sig-contributor-experience/surveys/README.md b/sig-contributor-experience/surveys/README.md new file mode 100644 index 00000000..0276762a --- /dev/null +++ b/sig-contributor-experience/surveys/README.md @@ -0,0 +1,16 @@ +# Survey Analysis + +This directory contains the analysis of surveys given to the contributor community. +Each individual survey's data and corresponding analysis are found in the directory +named after the corresponding year. The README.md in those directories contains the +full analysis done. For space reasons, the notebooks from which the README.md files +are derived have been cleared of output. + +In addition to the individual year analysis, multi-year comparisons can be found +in `multi_year_comparisons`. + +To run the notebooks on your own, the following packages are required: + +* pandas +* plotnine +* numpy diff --git a/sig-contributor-experience/surveys/k8s_survey_analysis/__init__.py b/sig-contributor-experience/surveys/k8s_survey_analysis/__init__.py new file mode 100644 index 00000000..e69de29b --- /dev/null +++ b/sig-contributor-experience/surveys/k8s_survey_analysis/__init__.py diff --git a/sig-contributor-experience/surveys/k8s_survey_analysis/plot_utils.py b/sig-contributor-experience/surveys/k8s_survey_analysis/plot_utils.py new file mode 100644 index 00000000..ef2c436b --- /dev/null +++ b/sig-contributor-experience/surveys/k8s_survey_analysis/plot_utils.py @@ -0,0 +1,1028 @@ +from textwrap import wrap +import math +import plotnine as p9 +import pandas as pd +import textwrap +from textwrap import shorten +from matplotlib import pyplot as plt +from copy import copy + + +from mizani.palettes import brewer_pal +from plotnine.scales.scale import scale_discrete + +# Custom scales for plotnine that reverse the direction of the colors +class reverse_scale_color_brewer(p9.scale_color_brewer): + def __init__(self, type="seq", palette=1, direction=-1, **kwargs): + self.palette = brewer_pal(type, palette, direction) + scale_discrete.__init__(self, **kwargs) + + +class reverse_scale_fill_brewer(p9.scale_fill_brewer): + def __init__(self, type="seq", palette=1, direction=-1, **kwargs): + self.palette = brewer_pal(type, palette, direction) + scale_discrete.__init__(self, **kwargs) + + +def split_for_likert(topic_data_long, mid_point): + """ + Returns the aggregated counts for ratings in the top and bottom halves of + the of each category, necssary for making offset bar charts + + Args: + topic_data_long (pandas.Dataframe): A pandas Dataframe storing each respondents + ratings for a given topic, in long format + mid_point (int): The midpoint to use to split the into two halves, based on ratings + + Returns: + (tuple): Tuple containing: + (pandas.DataFrame): Aggregated counts for ratings greater than or equal to the midpoinnt + (pandas.DataFrame): Aggregated counts for ratings less than or equal to the midpoinnt + """ + x = topic_data_long.columns.tolist() + x.remove("level_1") + + top_cutoff = topic_data_long["rating"] >= mid_point + bottom_cutoff = topic_data_long["rating"] <= mid_point + + top_scores = ( + topic_data_long[top_cutoff] + .groupby(x) + .count() + .reindex( + pd.MultiIndex.from_product( + [topic_data_long[y].unique().tolist() for y in x], names=x + ), + fill_value=0, + ) + .reset_index() + .sort_index(ascending=False) + ) + + # The mid point is in both the top and bottom halves, so divide by two + top_scores.loc[top_scores["rating"] == mid_point, "level_1"] = ( + top_scores[top_scores["rating"] == mid_point]["level_1"] / 2.0 + ) + + bottom_scores = ( + topic_data_long[bottom_cutoff] + .groupby(x) + .count() + .reindex( + pd.MultiIndex.from_product( + [topic_data_long[y].unique().tolist() for y in x], names=x + ), + fill_value=0, + ) + .reset_index() + ) + + # The mid point is in both the top and bottom halves, so divide by two + bottom_scores.loc[bottom_scores["rating"] == mid_point, "level_1"] = ( + bottom_scores[bottom_scores["rating"] == mid_point]["level_1"] / 2.0 + ) + + return top_scores, bottom_scores + + +def make_long(data, facets, multi_year=False): + """Converts a wide dataframe with columns for each topic's rating into a long dataframe + + Args: + data (pandas.DataFrame): A wide dataframe + facets (list): List of columns to keep as their own column + mulit_year (bool, optional) Defaults to False. If True, add the "year" column to the list of facets + + Returns: + (pandas.DataFrame): Long dataframe + + """ + + facets = copy(facets) + if multi_year: + facets.append("year") + long_data = data.set_index(facets, append=True).stack().reset_index() + + # Rename so Level_0 always has the values of the topic we are interested in + long_data = long_data.rename( + columns={ + "level_0": "level_1", + "level_4": "level_0", + "level_3": "level_0", + "level_2": "level_0", + 0: "rating", + } + ) + long_data = long_data.assign( + level_0=pd.Categorical(long_data.level_0, ordered=True) + ) + return long_data + + +def get_data_subset( + survey_data, topic, facets=[], exclude_new_contributors=False, include_year=False +): + """Get only the relevant columns from the data + + Args: + survey_data (pandas.DataFrame): Raw data read in from Kubernetes Survey + topic (str): String that all questions of interest start with + facets (list, optional): List of columns use for grouping + exclude_new_contributors: (bool, optional) Defaults to False. If True, remove + all responses from contributors who have been involved a year or less. + include_year: (bool, optional) Defaults to False. If True, include the year column + in the output + + Returns: + (pandas.DataFrame): Survey dataframe with only columns relevant to the topics + and facets remaining. + """ + + og_cols = [x for x in survey_data.columns if x.startswith(topic)] + facets = copy(facets) + if include_year: + facets.append("year") + if facets: + if "." in facets: + facets.remove(".") + cols = og_cols + facets + facets.append(".") + else: + cols = og_cols + facets + else: + cols = og_cols + + if exclude_new_contributors: + topic_data = survey_data[ + survey_data["Contributing_Length"] != "less than one year" + ][cols] + else: + topic_data = survey_data[cols] + + return topic_data + + +def get_multi_year_data_subset( + survey_data, topic, facet_by=[], exclude_new_contributors=False +): + """Get appropriate data for multi-year plots and convert it to long form + + Args: + survey_data (pandas.DataFrame): Raw data read in from Kubernetes Survey + topic (str): String that all questions of interest start with + facet_by (list, optional): List of columns use for grouping + exclude_new_contributors (bool, optional) Defaults to False. If True, remove + all responses from contributors who have been involved a year or less. + + Returns: + (pandas.DataFrame): Long dataframe + """ + topic_data = get_data_subset( + survey_data, topic, facet_by, exclude_new_contributors, include_year=True + ) + + if facet_by: + if "." in facet_by: + facet_by.remove(".") + topic_data_long = make_long(topic_data, facet_by, multi_year=True) + facet_by.append(".") + else: + topic_data_long = make_long(topic_data, facet_by, multi_year=True) + + else: + topic_data_long = make_long(topic_data, [], multi_year=True) + + return topic_data_long + + +def get_single_year_data_subset(survey_data, topic, facet_by=[]): + """Get appropriate data for single-year plots and convert it to long form + + Args: + survey_data (pandas.DataFrame): Raw data read in from Kubernetes Survey + topic (str): String that all questions of interest start with + facet_by (list, optional): List of columns use for grouping + + Returns: + (pandas.DataFrame): Long dataframe + + """ + topic_data = get_data_subset(survey_data, topic, facet_by) + + if facet_by: + if "." in facet_by: + facet_by.remove(".") + topic_data_long = make_long(topic_data, facet_by) + facet_by.append(".") + else: + topic_data_long = make_long(topic_data, facet_by) + else: + + topic_data_long = ( + topic_data.unstack().reset_index().rename(columns={0: "rating"}) + ) + topic_data_long = topic_data_long.assign( + level_0=pd.Categorical(topic_data_long.level_0, ordered=True) + ) + + return topic_data_long + + +def make_bar_chart_multi_year( + survey_data, topic, facet_by=[], exclude_new_contributors=False +): + """Make a barchart showing proportions of respondents listing each + column that starts with topic. Bars are colored by which year of + the survey they correspond to. If facet_by is not empty, the resulting + plot will be faceted into subplots by the variables given. + + Args: + survey_data (pandas.DataFrame): Raw data read in from Kubernetes Survey + topic (str): String that all questions of interest start with + facet_by (list,optional): List of columns use for grouping + exclude_new_contributors (bool, optiona ): Defaults to False. If True, + do not include any responses from contributors with less than + one year of experience + + Returns: + (plotnine.ggplot): Plot object which can be displayed in a notebook or saved out to a file + + """ + topic_data = get_data_subset( + survey_data, topic, facet_by, exclude_new_contributors, include_year=True + ) + + if facet_by: + fix = False + if "." in facet_by: + facet_by.remove(".") + fix = True + agg = ( + topic_data.groupby(facet_by + ["year"]) + .sum() + .reset_index() + .melt(id_vars=facet_by + ["year"]) + ) + totals = ( + topic_data.groupby(facet_by + ["year"]) + .count() + .reset_index() + .melt(id_vars=facet_by + ["year"]) + ) + percent = agg.merge(totals, on=facet_by + ["year", "variable"]) + + if fix: + facet_by.append(".") + + else: + agg = topic_data.groupby(["year"]).sum().reset_index().melt(id_vars=["year"]) + totals = ( + topic_data.groupby(["year"]).count().reset_index().melt(id_vars=["year"]) + ) + percent = agg.merge(totals, on=["year", "variable"]) + + # This plot is always done proportionally + percent = percent.assign(value=percent["value_x"] / percent["value_y"]) + percent = percent.assign(variable=pd.Categorical(percent.variable, ordered=True)) + + br = ( + p9.ggplot(percent, p9.aes(x="variable", fill="factor(year)", y="value")) + + p9.geom_bar(show_legend=True, position="dodge", stat="identity") + + p9.theme( + axis_text_x=p9.element_text(angle=45, ha="right"), + strip_text_y=p9.element_text(angle=0, ha="left"), + ) + + p9.scale_x_discrete( + limits=sorted(percent["variable"].unique().tolist()), + labels=[ + shorten( + x.replace(topic, "").replace("_", " "), placeholder="...", width=30 + ) + for x in sorted(percent["variable"].unique().tolist()) + ], + ) + ) + + # Uncomment to return dataframe instead of plot + # return percent + + if facet_by: + br = ( + br + + p9.facet_grid( + facet_by, + shrink=False, + labeller=lambda x: "\n".join(wrap(x.replace("/", "/ "), 15)), + ) + + p9.theme( + strip_text_x=p9.element_text(wrap=True, va="bottom", margin={"b": -0.5}) + ) + ) + return br + + +def make_single_bar_chart_multi_year(survey_data, column, facet, proportionally=False): + """Make a barchart showing the number of respondents responding to a single column. + Bars are colored by which year of the survey they correspond to. If facet + is not empty, the resulting plot will be faceted into subplots by the variables + given. + + Args: + survey_data (pandas.DataFrame): Raw data read in from Kubernetes Survey + column (str): Column to plot responses to + facet (list,optional): List of columns use for grouping + proportionally (bool, optiona ): Defaults to False. If True, + the bars heights are determined proportionally to the + total number of responses in that facet. + + Returns: + (plotnine.ggplot): Plot object which can be displayed in a notebook or saved out to a file + + """ + cols = [column, facet] + show_legend = False + topic_data = survey_data[cols + ["year"]] + + topic_data_long = make_long(topic_data, facet, multi_year=True) + + if proportionally: + proportions = ( + topic_data_long[topic_data_long.rating == 1].groupby(facet + ["year"]).sum() + / topic_data_long.groupby(facet + ["year"]).sum() + ).reset_index() + else: + proportions = ( + topic_data_long[topic_data_long.rating == 1] + .groupby(facet + ["year"]) + .count() + .reset_index() + ) + + x = topic_data_long.columns.tolist() + x.remove("level_1") + + ## Uncomment to return dataframe instead of plot + # return proportions + + return ( + p9.ggplot(proportions, p9.aes(x=facet, fill="year", y="level_1")) + + p9.geom_bar(show_legend=show_legend, stat="identity") + + p9.theme( + axis_text_x=p9.element_text(angle=45, ha="right"), + strip_text_y=p9.element_text(angle=0, ha="left"), + ) + + p9.scale_x_discrete( + limits=topic_data_long[facet].unique().tolist(), + labels=[ + x.replace("_", " ") for x in topic_data_long[facet].unique().tolist() + ], + ) + ) + + +def make_likert_chart_multi_year( + survey_data, + topic, + labels, + facet_by=[], + five_is_high=False, + exclude_new_contributors=False, +): + """Make an offset stacked barchart showing the number of respondents at each rank or value for + all columns in the topic. Each column in the topic is a facet, with the years displayed + along the x-axis. + + Args: + survey_data (pandas.DataFrame): Raw data read in from Kubernetes Survey + topic (str): String that all questions of interest start with + labels (list): List of strings to use as labels, corresponding + to the numerical values given by the respondents. + facet_by (list,optional): List of columns use for grouping + five_is_high (bool, optiona ): Defaults to False. If True, + five is considered the highest value in a ranking, otherwise + it is taken as the lowest value. + exclude_new_contributors (bool, optional): Defaults to False. If True, + do not include any responses from contributors with less than + one year of experience + + Returns: + (plotnine.ggplot): Offset stacked barchart plot object which + can be displayed in a notebook or saved out to a file + """ + + facet_by = copy(facet_by) + og_cols = [x for x in survey_data.columns if x.startswith(topic)] + show_legend = True + + topic_data_long = get_multi_year_data_subset( + survey_data, topic, facet_by, exclude_new_contributors + ) + + if not five_is_high: + topic_data_long = topic_data_long.assign(rating=topic_data_long.rating * -1.0) + + mid_point = 3 if five_is_high else -3 + top_scores, bottom_scores = split_for_likert(topic_data_long, mid_point) + + if facet_by: + fix = False + if "." in facet_by: + facet_by.remove(".") + fix = True + + # Calculate proportion for each rank + top_scores = top_scores.merge( + topic_data_long.groupby(facet_by + ["year"]).count().reset_index(), + on=facet_by + ["year"], + ).rename(columns={"rating_x": "rating", "level_0_x": "level_0"}) + top_scores = top_scores.assign( + level_1=top_scores.level_1_x / (top_scores.level_1_y / len(og_cols)) + ) + + bottom_scores = bottom_scores.merge( + topic_data_long.groupby(facet_by + ["year"]).count().reset_index(), + on=facet_by + ["year"], + ).rename(columns={"rating_x": "rating", "level_0_x": "level_0"}) + bottom_scores = bottom_scores.assign( + level_1=bottom_scores.level_1_x + * -1 + / (bottom_scores.level_1_y / len(og_cols)) + ) + + if fix: + facet_by.append(".") + else: + # Calculate proportion for each rank + top_scores = top_scores.merge( + topic_data_long.groupby(["year"]).count().reset_index(), on=["year"] + ).rename(columns={"rating_x": "rating", "level_0_x": "level_0"}) + top_scores = top_scores.assign( + level_1=top_scores.level_1_x / (top_scores.level_1_y / len(og_cols)) + ) + + bottom_scores = bottom_scores.merge( + topic_data_long.groupby(["year"]).count().reset_index(), on=["year"] + ).rename(columns={"rating_x": "rating", "level_0_x": "level_0"}) + bottom_scores = bottom_scores.assign( + level_1=bottom_scores.level_1_x + * -1 + / (bottom_scores.level_1_y / len(og_cols)) + ) + + vp = ( + p9.ggplot( + topic_data_long, + p9.aes(x="factor(year)", fill="factor(rating)", color="factor(rating)"), + ) + + p9.geom_col( + data=top_scores, + mapping=p9.aes(y="level_1"), + show_legend=show_legend, + size=0.25, + position=p9.position_stack(reverse=True), + ) + + p9.geom_col( + data=bottom_scores, + mapping=p9.aes(y="level_1"), + show_legend=show_legend, + size=0.25, + position=p9.position_stack(), + ) + + p9.geom_hline(yintercept=0, color="white") + ) + + if five_is_high: + vp = ( + vp + + p9.scale_color_brewer( + "div", "RdBu", limits=[1, 2, 3, 4, 5], labels=labels + ) + + p9.scale_fill_brewer("div", "RdBu", limits=[1, 2, 3, 4, 5], labels=labels) + + p9.theme( + axis_text_x=p9.element_text(angle=45, ha="right"), + strip_text_y=p9.element_text(angle=0, ha="left"), + ) + ) + else: + vp = ( + vp + + p9.scale_color_brewer( + "div", "RdBu", limits=[-5, -4, -3, -2, -1], labels=labels + ) + + p9.scale_fill_brewer( + "div", "RdBu", limits=[-5, -4, -3, -2, -1], labels=labels + ) + + p9.theme(strip_text_y=p9.element_text(angle=0, ha="left")) + ) + + if facet_by: + facet_by.remove(".") + + else: + facet_by.append(".") + + vp = ( + vp + + p9.facet_grid( + facet_by + ["level_0"], + labeller=lambda x: "\n".join( + wrap( + x.replace(topic, "").replace("_", " ").replace("/", "/ ").strip(), + 15, + ) + ), + ) + + p9.theme( + strip_text_x=p9.element_text(wrap=True, ma="left"), panel_spacing_x=0.1 + ) + ) + + return vp + + +def make_bar_chart(survey_data, topic, facet_by=[], proportional=False): + """Make a barchart showing the number of respondents listing each + column that starts with topic for a single year. If facet_by is + not empty, the resulting plot will be faceted into subplots + by the variables given. + + Args: + survey_data (pandas.DataFrame): Raw data read in from Kubernetes Survey + topic (str): String that all questions of interest start with + facet_by (list,optional): List of columns use for grouping + proportional (bool, optiona ): Defaults to False. If True, + the bars heights are determined proportionally to the + total number of responses in that facet. + + Returns: + (plotnine.ggplot): Plot object which can be displayed in a notebook or saved out to a file + """ + show_legend = False + if facet_by: + show_legend = True + + topic_data_long = get_single_year_data_subset(survey_data, topic, facet_by) + + x = topic_data_long.columns.tolist() + x.remove("level_1") + + if facet_by: + period = False + if "." in facet_by: + facet_by.remove(".") + period = True + + aggregate_data = ( + topic_data_long[topic_data_long.rating == 1] + .dropna() + .groupby(["level_0"] + facet_by) + .count() + .reset_index() + ) + + if period: + facet_by.append(".") + + else: + aggregate_data = ( + topic_data_long[topic_data_long.rating == 1] + .dropna() + .groupby("level_0") + .count() + .reset_index() + ) + + if proportional and facet_by: + period = False + if "." in facet_by: + facet_by.remove(".") + period = True + + facet_sums = ( + topic_data_long[topic_data_long.rating == 1] + .dropna() + .groupby(facet_by) + .count() + .reset_index() + ) + + aggregate_data = aggregate_data.merge(facet_sums, on=facet_by).rename( + columns={"level_0_x": "level_0"} + ) + aggregate_data = aggregate_data.assign( + rating=aggregate_data.rating_x / aggregate_data.rating_y + ) + + if period: + facet_by.append(".") + + br = ( + p9.ggplot(aggregate_data, p9.aes(x="level_0", fill="level_0", y="rating")) + + p9.geom_bar(show_legend=show_legend, stat="identity") + + p9.theme( + axis_text_x=p9.element_text(angle=45, ha="right"), + strip_text_y=p9.element_text(angle=0, ha="left"), + ) + + p9.scale_x_discrete( + limits=topic_data_long["level_0"].unique().tolist(), + labels=[ + "\n".join( + textwrap.wrap(x.replace(topic, "").replace("_", " "), width=35)[0:2] + ) + for x in topic_data_long["level_0"].unique().tolist() + ], + ) + ) + + if facet_by: + br = ( + br + + p9.facet_grid( + facet_by, shrink=False, labeller=lambda x: "\n".join(wrap(x, 15)) + ) + + p9.theme( + axis_text_x=p9.element_blank(), + strip_text_x=p9.element_text( + wrap=True, va="bottom", margin={"b": -0.5} + ), + ) + + p9.scale_fill_discrete( + limits=topic_data_long["level_0"].unique().tolist(), + labels=[ + "\n".join( + wrap( + x.replace(topic, "") + .replace("_", " ") + .replace("/", "/ ") + .strip(), + 30, + ) + ) + for x in topic_data_long["level_0"].unique().tolist() + ], + ) + ) + return br + + +def make_likert_chart( + survey_data, + topic, + labels, + facet_by=[], + max_value=5, + max_is_high=False, + wrap_facets=True, + sort_x=False, +): + """Make an offset stacked barchart showing the number of respondents at each rank or value for + all columns in the topic. Each column in the original data is a tick on the x-axis + + Args: + survey_data (pandas.DataFrame): Raw data read in from Kubernetes Survey + topic (str): String that all questions of interest start with + labels (list): List of strings to use as labels, corresponding + to the numerical values given by the respondents. + facet_by (list,optional): List of columns use for grouping + max_value (int, optional): Defaults to 5. The maximuum value a respondent can assign. + max_is_high (bool, optiona ): Defaults to False. If True, + the max_value is considered the highest value in a ranking, otherwise + it is taken as the lowest value. + wrap_facets (bool, optional): Defaults to True. If True, the facet labels are + wrapped + sort_x (bool, optional): Defaults to False. If True, the x-axis is sorted by the + mean value for each column in the original data + + Returns: + (plotnine.ggplot): Offset stacked barchart plot object which + can be displayed in a notebook or saved out to a file + """ + + mid_point = math.ceil(max_value / 2) + + og_cols = [x for x in survey_data.columns if x.startswith(topic)] + show_legend = True + + topic_data_long = get_single_year_data_subset(survey_data, topic, facet_by) + + if not max_is_high: + topic_data_long = topic_data_long.assign(rating=topic_data_long.rating * -1.0) + + mid_point = -1 * mid_point + + top_scores, bottom_scores = split_for_likert(topic_data_long, mid_point) + + if facet_by: + fix = False + if "." in facet_by: + facet_by.remove(".") + fix = True + + top_scores = top_scores.merge( + topic_data_long.groupby(facet_by).count().reset_index(), on=facet_by + ).rename(columns={"rating_x": "rating", "level_0_x": "level_0"}) + top_scores = top_scores.assign( + level_1=top_scores.level_1_x / (top_scores.level_1_y / len(og_cols)) + ) + + bottom_scores = bottom_scores.merge( + topic_data_long.groupby(facet_by).count().reset_index(), on=facet_by + ).rename(columns={"rating_x": "rating", "level_0_x": "level_0"}) + bottom_scores = bottom_scores.assign( + level_1=bottom_scores.level_1_x + * -1 + / (bottom_scores.level_1_y / len(og_cols)) + ) + + if fix: + facet_by.append(".") + + else: + bottom_scores = bottom_scores.assign(level_1=bottom_scores.level_1 * -1) + + if sort_x: + x_sort_order = ( + topic_data_long.groupby("level_0") + .mean() + .sort_values("rating") + .reset_index()["level_0"] + .values.tolist() + ) + x_sort_order.reverse() + else: + x_sort_order = topic_data_long["level_0"].unique().tolist() + + vp = ( + p9.ggplot( + topic_data_long, + p9.aes(x="level_0", fill="factor(rating)", color="factor(rating)"), + ) + + p9.geom_col( + data=top_scores, + mapping=p9.aes(y="level_1"), + show_legend=show_legend, + size=0.25, + position=p9.position_stack(reverse=True), + ) + + p9.geom_col( + data=bottom_scores, + mapping=p9.aes(y="level_1"), + show_legend=show_legend, + size=0.25, + position=p9.position_stack(), + ) + + p9.geom_hline(yintercept=0, color="white") + + p9.theme( + axis_text_x=p9.element_text(angle=45, ha="right"), + strip_text_y=p9.element_text(angle=0, ha="left"), + ) + + p9.scale_x_discrete( + limits=x_sort_order, + labels=[ + "\n".join( + textwrap.wrap(x.replace(topic, "").replace("_", " "), width=35)[0:2] + ) + for x in x_sort_order + ], + ) + ) + + if max_is_high: + vp = ( + vp + + p9.scale_color_brewer( + "div", "RdBu", limits=list(range(1, max_value + 1)), labels=labels + ) + + p9.scale_fill_brewer( + "div", "RdBu", limits=list(range(1, max_value + 1)), labels=labels + ) + ) + + else: + vp = ( + vp + + reverse_scale_fill_brewer( + "div", + "RdBu", + limits=list(reversed(range(-max_value, 0))), + labels=labels, + ) + + reverse_scale_color_brewer( + "div", + "RdBu", + limits=list(reversed(range(-max_value, 0))), + labels=labels, + ) + ) + + if facet_by: + if wrap_facets: + vp = ( + vp + + p9.facet_grid(facet_by, labeller=lambda x: "\n".join(wrap(x, 15))) + + p9.theme( + strip_text_x=p9.element_text( + wrap=True, va="bottom", margin={"b": -0.5} + ) + ) + ) + else: + vp = vp + p9.facet_grid(facet_by, space="free", labeller=lambda x: x) + return vp + + +def make_single_likert_chart(survey_data, column, facet, labels, five_is_high=False): + """Make an offset stacked barchart showing the number of respondents at each rank + or value for a single columns in the original data. Each facet is shown as + a tick on the x-axis + + Args: + survey_data (pandas.DataFrame): Raw data read in from Kubernetes Survey + topic (str): String that all questions of interest start with + labels (list): List of strings to use as labels, corresponding + to the numerical values given by the respondents. + facet (str): Column used for grouping + five_is_high (bool, optionalc): Defaults to False. If True, + 5 is considered the highest value in a ranking, otherwise + it is taken as the lowest value. + + Returns: + (plotnine.ggplot): Offset stacked barchart plot object which + can be displayed in a notebook or saved out to a file + """ + mid_point = 3 + cols = [column, facet] + show_legend = True + topic_data = survey_data[cols] + + topic_data_long = make_long(topic_data, facet) + + if not five_is_high: + topic_data_long = topic_data_long.assign(rating=topic_data_long.rating * -1.0) + x = topic_data_long.columns.tolist() + x.remove("level_1") + x.remove("level_0") + + if not five_is_high: + mid_point *= -1 + + top_cutoff = topic_data_long["rating"] >= mid_point + bottom_cutoff = topic_data_long["rating"] <= mid_point + + top_scores = ( + topic_data_long[top_cutoff] + .groupby(x) + .count() + .reset_index() + .sort_index(ascending=False) + ) + + top_scores.loc[top_scores["rating"] == mid_point, "level_1"] = ( + top_scores[top_scores["rating"] == mid_point]["level_1"] / 2.0 + ) + top_scores = top_scores.merge( + topic_data_long.groupby(facet).count().reset_index(), on=facet + ) + top_scores = top_scores.assign(level_1=top_scores.level_1_x / top_scores.level_1_y) + + bottom_scores = topic_data_long[bottom_cutoff].groupby(x).count().reset_index() + bottom_scores.loc[bottom_scores["rating"] == mid_point, "level_1"] = ( + bottom_scores[bottom_scores["rating"] == mid_point]["level_1"] / 2.0 + ) + bottom_scores = bottom_scores.merge( + topic_data_long.groupby(facet).count().reset_index(), on=facet + ) + bottom_scores = bottom_scores.assign( + level_1=bottom_scores.level_1_x * -1 / bottom_scores.level_1_y + ) + + vp = ( + p9.ggplot( + topic_data_long, + p9.aes(x=facet, fill="factor(rating_x)", color="factor(rating_x)"), + ) + + p9.geom_col( + data=top_scores, + mapping=p9.aes(y="level_1"), + show_legend=show_legend, + size=0.25, + position=p9.position_stack(reverse=True), + ) + + p9.geom_col( + data=bottom_scores, + mapping=p9.aes(y="level_1"), + show_legend=show_legend, + size=0.25, + ) + + p9.geom_hline(yintercept=0, color="white") + + p9.theme( + axis_text_x=p9.element_text(angle=45, ha="right"), + strip_text_y=p9.element_text(angle=0, ha="left"), + ) + + p9.scale_x_discrete( + limits=topic_data_long[facet].unique().tolist(), + labels=[ + x.replace("_", " ") for x in topic_data_long[facet].unique().tolist() + ], + ) + ) + + if five_is_high: + vp = ( + vp + + p9.scale_color_brewer( + "div", + "RdBu", + limits=[1, 2, 3, 4, 5], + labels=["\n".join(wrap(x, 15)) for x in labels], + ) + + p9.scale_fill_brewer( + "div", + "RdBu", + limits=[1, 2, 3, 4, 5], + labels=["\n".join(wrap(x, 15)) for x in labels], + ) + ) + else: + vp = ( + vp + + reverse_scale_fill_brewer( + "div", + "RdBu", + limits=[-1, -2, -3, -4, -5], + labels=["\n".join(wrap(x, 15)) for x in labels], + ) + + reverse_scale_color_brewer( + "div", + "RdBu", + limits=[-1, -2, -3, -4, -5], + labels=["\n".join(wrap(x, 15)) for x in labels], + ) + ) + + return vp + + +def make_single_bar_chart( + survey_data, column, facet, proportionally=False, facet2=None +): + """Make a barchart showing the number of respondents marking + a certain column in the original dataset as True. The facet + variable values are used as ticks on the x-axis + + Args: + survey_data (pandas.DataFrame): Raw data read in from Kubernetes Survey + topic (str): String that all questions of interest start with + facet (str): Column use for grouping + proportional (bool, optiona ): Defaults to False. If True, + the bars heights are determined proportionally to the + total number of responses in that facet. + facet2 (str, optional): If provided, a second variable to facet against. + + Returns: + (plotnine.ggplot): Plot object which can be displayed in a notebook or saved out to a file + """ + cols = [column, facet] + if facet2: + cols.append(facet2) + show_legend = False + topic_data = survey_data[cols] + + grouper = [facet, facet2] if facet2 else facet + topic_data_long = make_long(topic_data, grouper) + + if proportionally: + proportions = ( + topic_data_long[topic_data_long.rating == 1].groupby(grouper).sum() + / topic_data_long.groupby(grouper).sum() + ).reset_index() + else: + proportions = ( + topic_data_long[topic_data_long.rating == 1] + .groupby(grouper) + .count() + .reset_index() + ) + + x = topic_data_long.columns.tolist() + x.remove("level_1") + + br = ( + p9.ggplot(proportions, p9.aes(x=facet, fill=facet, y="level_1")) + + p9.geom_bar(show_legend=show_legend, stat="identity") + + p9.theme( + axis_text_x=p9.element_text(angle=45, ha="right"), + strip_text_y=p9.element_text(angle=0, ha="left"), + ) + + p9.scale_x_discrete( + limits=topic_data_long[facet].unique().tolist(), + labels=[ + x.replace("_", " ") for x in topic_data_long[facet].unique().tolist() + ], + ) + ) + + if facet2: + br = br + p9.facet_grid([facet2, "."]) + + return br diff --git a/sig-contributor-experience/surveys/k8s_survey_analysis/prepare_2018.py b/sig-contributor-experience/surveys/k8s_survey_analysis/prepare_2018.py new file mode 100644 index 00000000..1a9e3aba --- /dev/null +++ b/sig-contributor-experience/surveys/k8s_survey_analysis/prepare_2018.py @@ -0,0 +1,118 @@ +import pandas as pd +import numpy as np + + +convert_2018_to_2019 = { + 'Blocker:_Code/Doc_review':'Blocker:_Code/Documentation_review', + 'Blocker:_GH_tools&processes_(not_our_customized_tooling)': 'Blocker:_GitHub_tools_and_processes_(not_our_customized_tooling)', + 'Blocker:_Finding_a/the_right_SIG': 'Blocker:_Finding_the_right_SIG_for_your_contributions', + 'Blocker:_Finding_issues_to_work_on': 'Blocker:_Finding_appropriate_issues_to_work_on', + 'Blocker:_Setting_up_dev_env': 'Blocker:_Setting_up_development_environment', + 'Use_freq:_Zoom_Mtgs': 'Use_freq:_Zoom_video_conferencing/meetings', + 'Use_freq:_GH_(comments,_issues,_prs)': 'Use_freq:_Discussions_on_Github_Issues_and_PRs', + 'Use_freq:_Unofficial(Twitter,_Reddit,_etc.)':'Use_freq:_Unofficial_channels_(IRC,_WeChat,_etc.)', + 'Use_freq:_YT_Recordings': 'Use_freq:_YouTube_recordings_(community_meetings,_SIG/WG_meetings,_etc.)', + 'Use_freq:_GDocs/Forms/Sheets,_etc_(meeting_agendas,_etc)': 'Use_freq:_Google_Docs/Forms/Sheets,_etc_(meeting_agendas,_etc)', + 'Contribute:_code_to_k/k': 'Contribute:_Core_code_inside_of_kubernetes/kubernetes', + 'Contribute:_code_in_a_k/*_GH_org': 'Contribute:_Code_inside_of_another_repo_in_the_Kubernetes_GitHub_Org_(example:_/kubernetes-sigs,_kubernetes/website,_etc)', + 'Contribute:_Docs':'Contribute:_Documentation', + 'Contribute:_Testing_and_CI':'Contribute:_Testing_&_Infrastructure', + 'Contribute:_Related_projects_(Kubeadm,_Helm,_container_runtimes,_etc.)': 'Contribute:_Related_projects_(Helm,_container_runtimes,_other_CNCF_projects,_etc.)', + 'Contribute:_Not_yet': 'Contribute:_Don’t_contribute_yet,_hoping_to_start_soon', + 'Contribute:_Other': 'Contribute:_Other_(please_specify)', + 'Level_of_Contributor_Laddor':'Level_of_Contributor', + 'Most_Important_Proj:_Mentoring_programs':'Most_Important_Proj:_Mentoring_programs_for_all_contributor_levels/roles\xa0(https://git.k8s.io/community/community-membership.md)', + 'Most_Important_Proj:_GH_Mgmt':'Most_Important_Proj:_GitHub_Management', + 'Most_Important_Proj:_Contributor_Summits':'Most_Important_Proj:_Delivering_valuable_contributor_summits_at_relevant_events', + 'Most_Important_Proj:_Keeping_community_safe': 'Most_Important_Proj:_Keeping_our_community_safe_on_our_various_communication_platforms_through_moderation_guidelines_and_new_approaches', + 'Check_for_news:_k-dev_ML':'Check_for_news:_kubernetes-dev@_mailing_list', + 'Check_for_news:_discuss.kubernetes.io':'Check_for_news:_Dedicated_discuss.k8s.io_forum_for_contributors', + 'Check_for_news:_contribex_ML':'Check_for_news:_kubernetes-sig-contribex@\xa0mailing_list', + 'Check_for_news:_Slack':'Check_for_news:_#kubernetes-dev,_#sig-foo,_#sig-contribex_slack', + 'Check_for_news:_Twitter_read_first_':'Check_for_news:_@kubernetesio_twitter', + 'Check_for_news:_Kubernetes_blog_read_first_':'Check_for_news:_Kubernetes_blog', + 'Check_for_news:_k/community_repo_in_GH_(Issues_and/or_PRs)_read_first':'Check_for_news:_kubernetes/community_repo_in_GitHub_(Issues_and/or_PRs)', + 'Check_for_news:_Other':'Check_for_news:_Other_(please_specify)', + 'Attended:_#_of_ContribSummits':'How_many_Kubernetes_Contributor_Summits_have_you_attended', + 'HelpWanted_&/or_GoodFirstIssue_label_usage':'Do_you_use_the\xa0Help_Wanted_and/or_Good_First_Issue_labels_on_issues_you_file_to_find_contributors', + 'Watched_or_participated_in_MoC':'Have_you_watched_or_participated_in_an_episode_of_our_YouTube_mentoring_series_Meet_Our_Contributors_If_you_have_specific_suggestions,_leave_them_at_the_end_of_the_survey.', + 'Make_project_easier_to_contribute':'Are_there_specific_ways_the_project_could_make_contributing_easier_for_you' +} + +contrib_length_2018_to_2019 = { + '1-2 years': 'one to two years', + '2-3 years': 'two to three years', + '3+ years': 'three+ years', + '6 months-1 year':'less than one year', + 'Just started': 'less than one year' +} + +ladder_level_2018_to_2019 = { + "Approver": "approver", + "Had no idea this was even a thing": "there's a contributor ladder?", + "Org Member": "member", + "Reviewer": "reviewer", + "I’m not an org member yet, but working on it": "not yet a member but working on it", + "Subproject Owner": "subproject owner" +} + +employer_2018_to_2019 = { + "It’s complicated": "it's complicated.", + "It’s entirely on my own time": "no, I need to use my own time", + "Yes, it’s part of my job": "yes, I can contribute on company time", + 'No, but I’m able to use “free” time at work': "yes, I can contribute on company time" +} + +oss_projects_2018_to_2019 = { + 'None, Kubernetes is my first one!': 'this is my first open source project!', + 'One more':'1 other', + '2-4' : '2 or more', + '4+': '2 or more' +} + +help_wanted_2018_to_2019 = { + "No, because I didn't know they were there": "No", + "No, because I don't think my issues qualify": "No", + 'Not as much as I should because I forget' : "Rarely (for reasons)" +} + +next_level_interest_2018_2019 = { + 'Yes, but would like mentorship.': 'if I had help/mentoring/support', + 'Yes, but not sure I have time.': 'if I had more free time', + 'Yes, doing it on my own.': 'yes', + "No, I'm already an owner": 'no, already a subproject owner (highest level on the ladder)', + 'Not really': 'no' +} + +def get_df(path): + + survey_data = pd.read_csv(path) + + #Clean Data + for x in survey_data.columns: + if x.startswith("Useful:"): + survey_data = survey_data.assign(**{x: survey_data[x].fillna(0)}) + if x.startswith("Contribute:") or x.startswith("Check for news:") or x.startswith("Attended:") or x.startswith("Attending:") or x.startswith("Most Important Pr"): + survey_data = survey_data.assign(**{x: np.where(survey_data[x].isna(),0,1)}) + if x.startswith('Upstream'): + survey_data = survey_data.assign(**{x: survey_data[x].fillna("Didn't Answer")}) + + + + survey_data = survey_data.rename(columns= {x:x.replace(" ","_").replace("?", "").replace('Most_Important_Project','Most_Important_Proj').replace('Most_Important_Prj','Most_Important_Proj') for x in survey_data.columns}) + + survey_data = survey_data.drop('Use_freq:_discuss.kubernetes.io',axis=1) + + x = pd.to_datetime(survey_data.End_Date) + survey_data = survey_data.assign(date_taken = x.dt.date) + survey_data = survey_data.assign(Contributing_Length = survey_data['Contributing_Length'].apply(contrib_length_2018_to_2019.get)) + + survey_data = survey_data.rename(columns=convert_2018_to_2019) + + survey_data = survey_data.assign(Level_of_Contributor = survey_data['Level_of_Contributor'].apply(lambda x: ladder_level_2018_to_2019.get(x,x))) + survey_data = survey_data.assign(Upstream_supported_at_employer = survey_data['Upstream_supported_at_employer'].apply(lambda x: employer_2018_to_2019.get(x,x))) + survey_data = survey_data.assign(Interested_in_next_level = survey_data['Interested_in_next_level'].apply(lambda x: next_level_interest_2018_2019.get(x,x) )) + survey_data = survey_data.assign(Contribute_to_other_OSS = survey_data['Contribute_to_other_OSS'].apply(lambda x: oss_projects_2018_to_2019.get(x,x))) + survey_data.loc[:,'Do_you_use_the\xa0Help_Wanted_and/or_Good_First_Issue_labels_on_issues_you_file_to_find_contributors'] = survey_data['Do_you_use_the\xa0Help_Wanted_and/or_Good_First_Issue_labels_on_issues_you_file_to_find_contributors'].apply(lambda x: help_wanted_2018_to_2019.get(x,x)) + + return survey_data diff --git a/sig-contributor-experience/surveys/k8s_survey_analysis/prepare_2019.py b/sig-contributor-experience/surveys/k8s_survey_analysis/prepare_2019.py new file mode 100644 index 00000000..ca8e6787 --- /dev/null +++ b/sig-contributor-experience/surveys/k8s_survey_analysis/prepare_2019.py @@ -0,0 +1,117 @@ +import pandas as pd +import numpy as np + +fn = '2019_survey/2019 Kubernetes Contributor Experience Survey PUBLIC.csv' + +contribute_header = "What areas of Kubernetes do you contribute to? Please check all that apply." +blockers_header = "Please rate any challenges to the listed steps of the contribution process" +agree_header = "Do you agree with the following statements (1 - strongly disagree, 5 - strongly agree):" +attend_header = "Which of the below would make you likely to attend more of the Community Meetings? Check all that apply." +most_important_proj_header = "Some of the major projects SIG Contributor Experience is working on are listed below, rank the ones that are most important to you (and/or your SIG)" +use_freq_header = "Of our various communications channels, please rate which ones you use and/or check most frequently on a 1-5 scale, where 1 is “never”, 3 is “several times a month” and 5 is “every day”." +news_header = "Which of these channels is most likely to reach you first for news about decisions, changes, additions, and/or announcements to the contributor process or community matters?" + +def map_blocker_and_usefreq_vals(val): + try: + return int(val) + except ValueError: + return int(val[0]) + +def process_header(df): + columns = list(df.columns) + new_columns = [None]*len(columns) + for i, col in enumerate(columns): + if col[1].startswith("Unnamed") or col[1] == "Response": + new_columns[i] = col[0] + continue + + # Find the starting column for the multilabel responses (checkboxes) + # that were also in the 2018 survey + if col[0] == blockers_header: + blockers_i = i + elif col[0] == contribute_header: + contribute_i = i + elif col[0] == news_header: + news_i = i + elif col[0] == use_freq_header: + use_freq_i = i + elif col[0] == most_important_proj_header: + most_important_proj_i = i + elif col[0] == agree_header: # Starting columns for multilabel responses that weren't in the 2018 survey. + agree_i = i + elif col[0] == attend_header: + attend_i = i + #elif col[0] == unattendance_header: + # unattendance_i = i + else: # Handle open ended responses + new_columns[i] = col[0] + + def prefix_cols(header, header_i, prefix): + i = header_i + while i < len(columns) and (columns[i][0].startswith("Unnamed") or columns[i][0] == header): + new_columns[i] = "{} {}".format(prefix, columns[i][1]) + i += 1 + + prefix_cols(contribute_header, contribute_i, "Contribute:") + prefix_cols(blockers_header, blockers_i, "Blocker:") + prefix_cols(news_header, news_i, "Check for news:") + prefix_cols(use_freq_header, use_freq_i, "Use freq:") + prefix_cols(most_important_proj_header, most_important_proj_i, "Most Important Project:") + + prefix_cols(agree_header, agree_i, "Agree:") + prefix_cols(attend_header, attend_i, "Would attend if:") + + df.columns = new_columns + +def get_df(file_name=None): + fn = '2019_survey/2019 Kubernetes Contributor Experience Survey PUBLIC.csv' + if file_name: + fn = file_name + + df = pd.read_csv(fn, header=[0,1], skipinitialspace=True) + process_header(df) + + df = df.rename(columns={ + "How long have you been contributing to Kubernetes?": "Contributing_Length", + "What level of the Contributor Ladder do you consider yourself to be on? (pick the highest if you are in multiple OWNERs files)": "Level_of_Contributor", + "What level of the Contributor Ladder do you consider yourself to be on? (pick the highest if you are in multiple OWNERs files)": "Level_of_Contributor", + "What region of the world are you in?": "World_Region", + "Are you interested in advancing to the next level of the Contributor Ladder?": "Interested_in_next_level", + "How many other open source projects not in the Kubernetes ecosystem do you contribute to? (example: nodejs, debian)":"Contribute_to_other_OSS", + "Does your employer support your contributions to Kubernetes?":"Upstream_supported_at_employer", + "Blocker: Other (please specify)": "Other blockers (please specify)", + "What region of the world are you in?": "World Region", + }) + + def map_blocker_and_usefreq_vals(val): + try: + return int(val) + except ValueError: + return int(val[0]) + + #Clean Data + for x in df.columns: + if x.startswith("Useful:"): + df = df.assign(**{x: df[x].fillna(0)}) + if x.startswith("Contribute:") or x.startswith("Check for news:") or x.startswith("Attended:") or x.startswith("Attending:") or x.startswith("Would attend if:"): + df = df.assign(**{x: np.where(df[x].isna(),0,1)}) + if x.startswith('Upstream'): + df = df.assign(**{x: df[x].fillna("Didn't Answer")}) + if x.startswith("Blocker:") and x != "Blocker: Other (please specify)": + df[x] = df[x].map(map_blocker_and_usefreq_vals, na_action="ignore") + if x.startswith("Use freq:") or x.startswith("Agree:"): + df[x] = df[x].map(map_blocker_and_usefreq_vals, na_action="ignore") + + + df = df.rename(columns= {x:x.replace(" ","_").replace("?", "").replace('Most_Important_Project','Most_Important_Proj').replace('Most_Important_Prj','Most_Important_Proj') for x in df.columns}) + + x = pd.to_datetime(df.End_Date) + df = df.assign(date_taken = x.dt.date) + + return df + +# TODO NOTE I should only be dropping these at plot time +#df.dropna(subset=["Level_of_Contributor", +# "Interested_in_next_level", +# "Upstream_supported_at_employer"], inplace=True) + diff --git a/sig-contributor-experience/surveys/multi_year_comparisons/README.md b/sig-contributor-experience/surveys/multi_year_comparisons/README.md new file mode 100644 index 00000000..c5616969 --- /dev/null +++ b/sig-contributor-experience/surveys/multi_year_comparisons/README.md @@ -0,0 +1,1559 @@ +```python +import pandas as pd +import plotnine as p9 +from textwrap import wrap +import sys +sys.path.append("../") + +from k8s_survey_analysis.plot_utils import ( + make_likert_chart_multi_year, + make_bar_chart_multi_year +) + +from k8s_survey_analysis import prepare_2019, prepare_2018 +``` + + +```python +pd.options.display.max_columns = 999 +pd.options.display.max_rows = 999 +``` + + +```python +# Match Field Names and Multiple Choice Options as much as possible +df_2019 = prepare_2019.get_df('../2019/contribex-survey-2019.csv').assign(year=2019) +df_2018 = prepare_2018.get_df('../2018/contribex-survey-2018.csv').assign(year=2018) +``` + +## Build a single dataset for comparison + +In this notebook we will compare responses between the 2018 and 2019 surveys. Only those questions which appeared in both surveys are useful to compare. Some questions that appeared in both surveys were different enough in their format to make comparisons not useful. + + +```python +shared_columns = set(df_2019.columns).intersection(df_2018.columns) +survey_data = pd.concat([df_2019[shared_columns], df_2018[shared_columns]]) +``` + +## Compare univariate data between 2018 and 2019 + + +```python +length_year_totals = ( + survey_data[survey_data["Contributing_Length"].notnull()] + .groupby(["year"]) + .count()["Collector_ID"] + .reset_index() +) + +length_counts = ( + survey_data.groupby(["Contributing_Length", "year"]) + .count()["Collector_ID"] + .reset_index() +) + +length_percents = length_counts.merge(length_year_totals, on="year") + +length_percents = length_percents.assign( + percent=length_percents["Collector_ID_x"] / length_percents["Collector_ID_y"] +) +``` + + +```python +( + p9.ggplot( + length_percents, + p9.aes(x="Contributing_Length", fill="factor(year)", y="percent"), + ) + + p9.geom_bar(position="dodge", stat="identity") + + p9.theme(axis_text_x=p9.element_text(angle=45)) + + p9.scale_x_discrete( + limits=[ + "less than one year", + "one to two years", + "two to three years", + "three+ years", + ] + ) + + p9.ggtitle("Number of Contributors by Length of Contribution") + + p9.xlab("Length of Contribution") + + p9.ylab("Number of Contributors") +) +``` + + + + + +As expected, due to the advertisement of the survey on Twitter, a higher proportion of respondents are newer contributors this year. + + +```python +level_year_totals = survey_data[survey_data['Level_of_Contributor'].notnull()].groupby(['year']).count()['Collector_ID'].reset_index() +level_counts = survey_data.groupby(['Level_of_Contributor','year']).count()['Collector_ID'].reset_index() +level_percents = level_counts.merge(level_year_totals,on='year') +level_percents = level_percents.assign(percent = level_percents['Collector_ID_x']/level_percents['Collector_ID_y']) + + +``` + + +```python +( + p9.ggplot( + level_percents, + p9.aes(x="Level_of_Contributor", fill="factor(year)", y="percent"), + ) + + p9.geom_bar(position="dodge", stat="identity") + + p9.theme(axis_text_x=p9.element_text(angle=45, ha="right")) + + p9.ggtitle("Number of Contributors by Contributor Level") + + p9.xlab("Contributor Level") + + p9.ylab("Proportion of Contributors") +) +``` + + + + + + +A larger proportion of respondents this year are in higher roles in the contributor ladder. It appears most of these are due to the smaller proportion of respondents who are not a member for one reason or another. + + +```python +oss_counts = ( + survey_data.groupby(["year", "Contribute_to_other_OSS"]) + .count()["Collector_ID"] + .reset_index() +) +oss_year_totals = ( + survey_data[survey_data["Contribute_to_other_OSS"].notnull()] + .groupby(["year"]) + .count()["Collector_ID"] + .reset_index() +) + +oss_percents = oss_counts.merge(oss_year_totals, on="year") +oss_percents = oss_percents.assign( + percent=oss_percents["Collector_ID_x"] / oss_percents["Collector_ID_y"] +) +``` + + +```python +( + p9.ggplot( + oss_percents, + p9.aes(x="Contribute_to_other_OSS", fill="factor(year)", y="percent"), + ) + + p9.geom_bar(position="dodge", stat="identity") + + p9.theme(axis_text_x=p9.element_text(angle=45, ha="right")) + + p9.scale_x_discrete( + limits=["this is my first open source project!", "1 other", "2 or more"] + ) + + p9.ggtitle("Participation in Other Open Source Projects") + + p9.xlab("Number of other OSS Projects") + + p9.ylab("Number of Contributors") +) +``` + + + + + +There is a small increase in the proportion of contributors for whom Kuberetes is their first open source project. Because the change is so small, no major changes should be based on this finding. + + +```python +counts = survey_data.groupby(["Upstream_supported_at_employer", "year"]).count()[ + "Respondent_ID" +] + +total = survey_data.groupby(["year"]).count()["Respondent_ID"] + +employee_percents = ( + counts.to_frame().reset_index().merge(total.to_frame().reset_index(), on="year") +) + +employee_percents = employee_percents.assign( + percent=employee_percents["Respondent_ID_x"] / employee_percents["Respondent_ID_y"] +) + +( + p9.ggplot( + employee_percents, + p9.aes(x="Upstream_supported_at_employer", fill="factor(year)", y="percent"), + ) + + p9.geom_bar(position=p9.position_dodge(preserve="single"), stat="identity") + + p9.labs( + title="Support at Employer", fill="Year", y="Proportion", x="Support Level" + ) + + p9.theme(axis_text_x=p9.element_text(angle=45, ha="right")) +) +``` + + + + + + + +This question was a required question in 2019 but not in 2018. In addition, the student option was not present in this year's survey. Nonetheless, the proportion of contributors supported by their employer dropped slightly this year. It is difficult to make any conclusions due to the change in the question, but this is a trend to keep a close eye on in future surveys. + +## Cross-tabulations + + +```python +pd.crosstab( + survey_data.World_Region, [survey_data.Level_of_Contributor, survey_data.year] +) +``` + + + + +<div> +<table border="1" class="dataframe"> + <thead> + <tr> + <th>Level_of_Contributor</th> + <th colspan="2" halign="left">approver</th> + <th colspan="2" halign="left">member</th> + <th colspan="2" halign="left">not yet a member but working on it</th> + <th colspan="2" halign="left">reviewer</th> + <th colspan="2" halign="left">subproject owner</th> + <th colspan="2" halign="left">there's a contributor ladder?</th> + </tr> + <tr> + <th>year</th> + <th>2018</th> + <th>2019</th> + <th>2018</th> + <th>2019</th> + <th>2018</th> + <th>2019</th> + <th>2018</th> + <th>2019</th> + <th>2018</th> + <th>2019</th> + <th>2018</th> + <th>2019</th> + </tr> + <tr> + <th>World_Region</th> + <th></th> + <th></th> + <th></th> + <th></th> + <th></th> + <th></th> + <th></th> + <th></th> + <th></th> + <th></th> + <th></th> + <th></th> + </tr> + </thead> + <tbody> + <tr> + <th>Africa</th> + <td>0</td> + <td>0</td> + <td>0</td> + <td>2</td> + <td>0</td> + <td>2</td> + <td>0</td> + <td>0</td> + <td>0</td> + <td>0</td> + <td>0</td> + <td>0</td> + </tr> + <tr> + <th>Asia</th> + <td>2</td> + <td>2</td> + <td>4</td> + <td>5</td> + <td>8</td> + <td>15</td> + <td>3</td> + <td>5</td> + <td>2</td> + <td>0</td> + <td>1</td> + <td>3</td> + </tr> + <tr> + <th>Europe</th> + <td>5</td> + <td>8</td> + <td>11</td> + <td>15</td> + <td>21</td> + <td>23</td> + <td>2</td> + <td>9</td> + <td>2</td> + <td>6</td> + <td>4</td> + <td>10</td> + </tr> + <tr> + <th>North America</th> + <td>10</td> + <td>12</td> + <td>19</td> + <td>22</td> + <td>26</td> + <td>27</td> + <td>8</td> + <td>5</td> + <td>16</td> + <td>22</td> + <td>14</td> + <td>11</td> + </tr> + <tr> + <th>Oceania</th> + <td>0</td> + <td>0</td> + <td>0</td> + <td>1</td> + <td>0</td> + <td>1</td> + <td>0</td> + <td>1</td> + <td>0</td> + <td>0</td> + <td>0</td> + <td>1</td> + </tr> + <tr> + <th>South America</th> + <td>0</td> + <td>0</td> + <td>0</td> + <td>1</td> + <td>0</td> + <td>0</td> + <td>0</td> + <td>0</td> + <td>1</td> + <td>1</td> + <td>1</td> + <td>0</td> + </tr> + </tbody> +</table> +</div> + + + + +```python +pd.crosstab( + survey_data.Contributing_Length, + [survey_data.Level_of_Contributor, survey_data.year], +).loc[["less than one year", "one to two years", "two to three years", "three+ years"]] +``` + + + + +<div> +<table border="1" class="dataframe"> + <thead> + <tr> + <th>Level_of_Contributor</th> + <th colspan="2" halign="left">approver</th> + <th colspan="2" halign="left">member</th> + <th colspan="2" halign="left">not yet a member but working on it</th> + <th colspan="2" halign="left">reviewer</th> + <th colspan="2" halign="left">subproject owner</th> + <th colspan="2" halign="left">there's a contributor ladder?</th> + </tr> + <tr> + <th>year</th> + <th>2018</th> + <th>2019</th> + <th>2018</th> + <th>2019</th> + <th>2018</th> + <th>2019</th> + <th>2018</th> + <th>2019</th> + <th>2018</th> + <th>2019</th> + <th>2018</th> + <th>2019</th> + </tr> + <tr> + <th>Contributing_Length</th> + <th></th> + <th></th> + <th></th> + <th></th> + <th></th> + <th></th> + <th></th> + <th></th> + <th></th> + <th></th> + <th></th> + <th></th> + </tr> + </thead> + <tbody> + <tr> + <th>less than one year</th> + <td>0</td> + <td>3</td> + <td>1</td> + <td>15</td> + <td>24</td> + <td>42</td> + <td>1</td> + <td>4</td> + <td>0</td> + <td>0</td> + <td>9</td> + <td>18</td> + </tr> + <tr> + <th>one to two years</th> + <td>2</td> + <td>8</td> + <td>10</td> + <td>19</td> + <td>1</td> + <td>18</td> + <td>5</td> + <td>7</td> + <td>5</td> + <td>5</td> + <td>5</td> + <td>4</td> + </tr> + <tr> + <th>two to three years</th> + <td>3</td> + <td>6</td> + <td>6</td> + <td>5</td> + <td>4</td> + <td>6</td> + <td>2</td> + <td>4</td> + <td>7</td> + <td>8</td> + <td>0</td> + <td>2</td> + </tr> + <tr> + <th>three+ years</th> + <td>9</td> + <td>5</td> + <td>0</td> + <td>7</td> + <td>0</td> + <td>2</td> + <td>0</td> + <td>5</td> + <td>9</td> + <td>16</td> + <td>1</td> + <td>1</td> + </tr> + </tbody> +</table> +</div> + + + + +```python +pd.crosstab( + survey_data.Contributing_Length, + [survey_data.Contribute_to_other_OSS, survey_data.year], +).loc[ + ["less than one year", "one to two years", "two to three years", "three+ years"], + ["this is my first open source project!", "1 other", "2 or more"], +] +``` + + + + +<div> +<table border="1" class="dataframe"> + <thead> + <tr> + <th>Contribute_to_other_OSS</th> + <th colspan="2" halign="left">1 other</th> + <th colspan="2" halign="left">2 or more</th> + <th colspan="2" halign="left">this is my first open source project!</th> + </tr> + <tr> + <th>year</th> + <th>2018</th> + <th>2019</th> + <th>2018</th> + <th>2019</th> + <th>2018</th> + <th>2019</th> + </tr> + <tr> + <th>Contributing_Length</th> + <th></th> + <th></th> + <th></th> + <th></th> + <th></th> + <th></th> + </tr> + </thead> + <tbody> + <tr> + <th>less than one year</th> + <td>9</td> + <td>16</td> + <td>12</td> + <td>39</td> + <td>14</td> + <td>27</td> + </tr> + <tr> + <th>one to two years</th> + <td>7</td> + <td>13</td> + <td>15</td> + <td>33</td> + <td>6</td> + <td>15</td> + </tr> + <tr> + <th>two to three years</th> + <td>5</td> + <td>6</td> + <td>15</td> + <td>17</td> + <td>2</td> + <td>8</td> + </tr> + <tr> + <th>three+ years</th> + <td>3</td> + <td>8</td> + <td>14</td> + <td>24</td> + <td>2</td> + <td>4</td> + </tr> + </tbody> +</table> +</div> + + + + +```python +pd.crosstab( + survey_data.Level_of_Contributor, + [survey_data.Upstream_supported_at_employer, survey_data.year], +) +``` + + + + +<div> +<table border="1" class="dataframe"> + <thead> + <tr> + <th>Upstream_supported_at_employer</th> + <th colspan="2" halign="left">Didn't Answer</th> + <th>I’m a student</th> + <th colspan="2" halign="left">it's complicated.</th> + <th colspan="2" halign="left">no, I need to use my own time</th> + <th colspan="2" halign="left">yes, I can contribute on company time</th> + </tr> + <tr> + <th>year</th> + <th>2018</th> + <th>2019</th> + <th>2018</th> + <th>2018</th> + <th>2019</th> + <th>2018</th> + <th>2019</th> + <th>2018</th> + <th>2019</th> + </tr> + <tr> + <th>Level_of_Contributor</th> + <th></th> + <th></th> + <th></th> + <th></th> + <th></th> + <th></th> + <th></th> + <th></th> + <th></th> + </tr> + </thead> + <tbody> + <tr> + <th>approver</th> + <td>3</td> + <td>0</td> + <td>0</td> + <td>1</td> + <td>5</td> + <td>0</td> + <td>3</td> + <td>13</td> + <td>14</td> + </tr> + <tr> + <th>member</th> + <td>9</td> + <td>0</td> + <td>1</td> + <td>0</td> + <td>11</td> + <td>4</td> + <td>13</td> + <td>20</td> + <td>22</td> + </tr> + <tr> + <th>not yet a member but working on it</th> + <td>22</td> + <td>0</td> + <td>1</td> + <td>1</td> + <td>10</td> + <td>4</td> + <td>26</td> + <td>27</td> + <td>32</td> + </tr> + <tr> + <th>reviewer</th> + <td>0</td> + <td>0</td> + <td>1</td> + <td>0</td> + <td>4</td> + <td>2</td> + <td>5</td> + <td>10</td> + <td>11</td> + </tr> + <tr> + <th>subproject owner</th> + <td>3</td> + <td>0</td> + <td>0</td> + <td>0</td> + <td>5</td> + <td>0</td> + <td>1</td> + <td>18</td> + <td>23</td> + </tr> + <tr> + <th>there's a contributor ladder?</th> + <td>8</td> + <td>1</td> + <td>0</td> + <td>2</td> + <td>0</td> + <td>2</td> + <td>10</td> + <td>8</td> + <td>14</td> + </tr> + </tbody> +</table> +</div> + + + + +```python +pd.crosstab( + survey_data.Contributing_Length, + [survey_data.Upstream_supported_at_employer, survey_data.year], +) +``` + + + + +<div> +<table border="1" class="dataframe"> + <thead> + <tr> + <th>Upstream_supported_at_employer</th> + <th colspan="2" halign="left">Didn't Answer</th> + <th>I’m a student</th> + <th colspan="2" halign="left">it's complicated.</th> + <th colspan="2" halign="left">no, I need to use my own time</th> + <th colspan="2" halign="left">yes, I can contribute on company time</th> + </tr> + <tr> + <th>year</th> + <th>2018</th> + <th>2019</th> + <th>2018</th> + <th>2018</th> + <th>2019</th> + <th>2018</th> + <th>2019</th> + <th>2018</th> + <th>2019</th> + </tr> + <tr> + <th>Contributing_Length</th> + <th></th> + <th></th> + <th></th> + <th></th> + <th></th> + <th></th> + <th></th> + <th></th> + <th></th> + </tr> + </thead> + <tbody> + <tr> + <th>less than one year</th> + <td>18</td> + <td>2</td> + <td>1</td> + <td>1</td> + <td>10</td> + <td>6</td> + <td>37</td> + <td>9</td> + <td>34</td> + </tr> + <tr> + <th>one to two years</th> + <td>2</td> + <td>0</td> + <td>2</td> + <td>0</td> + <td>12</td> + <td>2</td> + <td>16</td> + <td>22</td> + <td>33</td> + </tr> + <tr> + <th>three+ years</th> + <td>4</td> + <td>0</td> + <td>0</td> + <td>0</td> + <td>5</td> + <td>0</td> + <td>4</td> + <td>15</td> + <td>27</td> + </tr> + <tr> + <th>two to three years</th> + <td>6</td> + <td>0</td> + <td>0</td> + <td>0</td> + <td>8</td> + <td>1</td> + <td>1</td> + <td>15</td> + <td>22</td> + </tr> + </tbody> +</table> +</div> + + + + +```python +pd.crosstab( + survey_data.Interested_in_next_level, + [survey_data.Level_of_Contributor, survey_data.year], +) +``` + + + + +<div> + +<table border="1" class="dataframe"> + <thead> + <tr> + <th>Level_of_Contributor</th> + <th colspan="2" halign="left">approver</th> + <th colspan="2" halign="left">member</th> + <th colspan="2" halign="left">not yet a member but working on it</th> + <th colspan="2" halign="left">reviewer</th> + <th colspan="2" halign="left">subproject owner</th> + <th colspan="2" halign="left">there's a contributor ladder?</th> + </tr> + <tr> + <th>year</th> + <th>2018</th> + <th>2019</th> + <th>2018</th> + <th>2019</th> + <th>2018</th> + <th>2019</th> + <th>2018</th> + <th>2019</th> + <th>2018</th> + <th>2019</th> + <th>2018</th> + <th>2019</th> + </tr> + <tr> + <th>Interested_in_next_level</th> + <th></th> + <th></th> + <th></th> + <th></th> + <th></th> + <th></th> + <th></th> + <th></th> + <th></th> + <th></th> + <th></th> + <th></th> + </tr> + </thead> + <tbody> + <tr> + <th>if I had help/mentoring/support</th> + <td>2</td> + <td>1</td> + <td>8</td> + <td>13</td> + <td>31</td> + <td>18</td> + <td>4</td> + <td>3</td> + <td>2</td> + <td>0</td> + <td>6</td> + <td>3</td> + </tr> + <tr> + <th>if I had more free time</th> + <td>4</td> + <td>8</td> + <td>9</td> + <td>8</td> + <td>12</td> + <td>13</td> + <td>2</td> + <td>3</td> + <td>3</td> + <td>4</td> + <td>8</td> + <td>6</td> + </tr> + <tr> + <th>no</th> + <td>2</td> + <td>1</td> + <td>3</td> + <td>3</td> + <td>2</td> + <td>3</td> + <td>2</td> + <td>0</td> + <td>0</td> + <td>0</td> + <td>4</td> + <td>2</td> + </tr> + <tr> + <th>no, already a subproject owner (highest level on the ladder)</th> + <td>5</td> + <td>0</td> + <td>1</td> + <td>0</td> + <td>0</td> + <td>0</td> + <td>0</td> + <td>0</td> + <td>13</td> + <td>25</td> + <td>0</td> + <td>0</td> + </tr> + <tr> + <th>yes</th> + <td>4</td> + <td>11</td> + <td>13</td> + <td>22</td> + <td>10</td> + <td>34</td> + <td>5</td> + <td>14</td> + <td>3</td> + <td>0</td> + <td>2</td> + <td>14</td> + </tr> + </tbody> +</table> +</div> + + + +## Challenges/Blockers Faced + + +```python +blocker_ratings = ["A frequent blocker",'Often a problem','Sometimes a problem','Rarely a problem','Not a problem'] + +``` + + +```python +( + make_likert_chart_multi_year(survey_data, "Blocker:", blocker_ratings) + + p9.labs( + x="Year", + y="", + fill="Rating", + color="Rating", + title="Blockers (New Contributors Included)", + ) + + p9.theme( + legend_margin=5, + figure_size=(12, (9 / 4) * 3), + strip_text_x=p9.element_text( + margin={"t": 0.35, "b": 0.35, "l": 1, "r": 1, "units": "in"} + ), + ) + + p9.ylim(-1, 1) +) +``` + + + + + + + +```python +( + make_likert_chart_multi_year(survey_data, "Blocker:", blocker_ratings) + + p9.labs( + x="Year", + y="", + fill="Rating", + color="Rating", + title="Blockers (New Contributors Included)", + ) + + p9.theme( + legend_margin=5, + figure_size=(12, (9 / 4) * 3), + strip_text_x=p9.element_text( + margin={"t": 0.35, "b": 0.35, "l": 1, "r": 1, "units": "in"} + ), + ) + + p9.ylim(-1, 1) +) +``` + + + + + + + +Respondents across the board reported feeling more blocked this past year than in 2018. The only exception is GitHub tooling. To ensure this was not due to a higher proportion of new contributors we looked at the data without them. This is show below. + + +```python +( + make_likert_chart_multi_year( + survey_data, "Blocker:", blocker_ratings, exclude_new_contributors=True + ) + + p9.labs( + x="Blocker", + y="Count", + fill="Rating", + color="Rating", + title="Blockers (New Contributors Excluded)", + ) + + p9.theme( + legend_margin=5, + figure_size=(12, (9 / 4) * 3), + strip_text_x=p9.element_text( + margin={"t": 0.35, "b": 0.35, "l": 1, "r": 1, "units": "in"} + ), + ) + + p9.ylim(-1, 1) +) +``` + + //anaconda3/lib/python3.7/site-packages/plotnine/layer.py:433: PlotnineWarning: position_stack : Removed 1 rows containing missing values. + data = self.position.setup_data(self.data, params) + + + + + + + + +After removing contributors who reported having being involved for less than a year, the overall trend holds. One concern in comparing these two datasets is that this year respondents were asked how challenging these areas were, not how much they are blocked by them. Consistent wording will make these more comparable between future surveys. + + +```python +( + make_likert_chart_multi_year( + survey_data, "Blocker:", blocker_ratings, ["Contributing_Length", "."] + ) + + p9.labs( + x="Year", + y="", + fill="Rating", + color="Rating", + title="Blockers by Length of Contribution", + ) + + p9.theme( + figure_size=(12, (9 / 4) * 3), + strip_text_x=p9.element_text( + margin={"t": 0.35, "b": 0.35, "l": 1, "r": 1, "units": "in"} + ), + strip_text_y=p9.element_text(margin={"r": 0.8, "units": "in"}), + ) +) +``` + + //anaconda3/lib/python3.7/site-packages/plotnine/layer.py:433: PlotnineWarning: position_stack : Removed 20 rows containing missing values. + data = self.position.setup_data(self.data, params) + + + + + + + + +Contributors who have been contributing for two years or more are more rate the areas as being as difficult or slightly less of an issue than in 2018. The trend is reversed for contributors with less than two years of experience. They rate items as being more difficult in 2019, suggesting potential for outreach and improvement among this group. + + +```python +( + make_likert_chart_multi_year( + survey_data, "Blocker:", blocker_ratings, ["Level_of_Contributor", "."] + ) + + p9.labs( + x="Blocker", + y="Count", + fill="Rating", + color="Rating", + title="Blockers by Level on Ladder", + ) + + p9.theme( + figure_size=(12, (9 / 4) * 3), + strip_text_x=p9.element_text( + margin={"t": 0.35, "b": 0.35, "l": 1, "r": 1, "units": "in"} + ), + strip_text_y=p9.element_text(margin={"r": 0.9, "units": "in"}), + ) +) +``` + + //anaconda3/lib/python3.7/site-packages/plotnine/layer.py:433: PlotnineWarning: position_stack : Removed 7 rows containing missing values. + data = self.position.setup_data(self.data, params) + //anaconda3/lib/python3.7/site-packages/plotnine/layer.py:433: PlotnineWarning: position_stack : Removed 38 rows containing missing values. + data = self.position.setup_data(self.data, params) + + + + + + + + +Subproject owners report less challenges in 2019 than in 2018. This is contrast to other cohorts whose challenges have increased or stayed level. This is especially clear in the columns for finding the right SIG, and code/documentation review to a lesser extent. + + +```python +( + make_likert_chart_multi_year( + survey_data, "Blocker:", blocker_ratings, ["Interested_in_next_level", "."] + ) + + p9.labs( + x="Blocker", + y="Count", + fill="Rating", + color="Rating", + title="Blockers by Interest in Next Level", + ) + + p9.theme( + figure_size=(12, (9 / 4) * 3), + strip_text_x=p9.element_text( + margin={"t": 0.35, "b": 0.35, "l": 1, "r": 1, "units": "in"} + ), + strip_text_y=p9.element_text(margin={"r": 0.9, "units": "in"}), + ) +) +``` + + //anaconda3/lib/python3.7/site-packages/plotnine/layer.py:433: PlotnineWarning: position_stack : Removed 3 rows containing missing values. + data = self.position.setup_data(self.data, params) + //anaconda3/lib/python3.7/site-packages/plotnine/layer.py:433: PlotnineWarning: position_stack : Removed 39 rows containing missing values. + data = self.position.setup_data(self.data, params) + + + + + + + +This plot shows an interesting difference between contributors interested in the next level not conditional on support, and those whose interest is conditioned on further support. In contrast to what we would expect, those who are interested irrespective of the support available report more challenges in 2019 than in 2018 with finding issues to work on and finding the right SIG. Combining this finding with the cross tabulation above showing contributors across the spectrum responding more with unconditional interest suggests several things. One is that what the mentoring program is and how it could help may need more publication. The other may be that there is a sense of pride in not needing mentoring, and so finding a way to break down that stigma may lead to happier contributors in the long run. + +## Sources Checked for News + + +```python +make_bar_chart_multi_year(survey_data, "Check_for_news:") + p9.labs( + title="Sources Checked for News", fill="Year", x="Source" +) +``` + + + + + + +This question does not require users to choose only one option, so the proportions add up to more than 1. Most news sources see an increase in use. The largest jump is the kubernetes-dev mailing list, with over 60% of respondents checking the mailing list. + + +```python +make_bar_chart_multi_year( + survey_data, "Check_for_news:", exclude_new_contributors=True +) + p9.labs( + title="Sources Checked for News (Excluding New Contributors)", + fill="Year", + x="Source", +) +``` + + + + + + +After excluding newer contributors, an even larger percent of contributors get their news from the mailing list, suggesting it is important for new users to be introduced to the mailing list. The other change from the previous plot is that the use of Twitter now shows a downward trend from 2018 to 2019. This confirms that advertising the survey on Twitter may have skewed the results slightly. + + +```python +( + make_bar_chart_multi_year( + survey_data, "Check_for_news:", facet_by=[".", "Contributing_Length"] + ) + + p9.theme(strip_text_y=p9.element_text(margin={"r": 0.8, "units": "in"})) + + p9.labs(title="Sources Checked for News", fill="Year", x="Source", y="Count") +) +``` + + + + + + + +In addition to the large increase in the use of Twitter by new contributors, there are a few other changes in new consumption in relation to the length of participation in Kubernetes. The proportion of new contributors using Slack has increased greatly. There is a consistent pattern across contributors who have been involved for one to two years, with many of the resources seeing decreased use. It is not clear why this is, but it not a large concern, as the most widely used resources are the same among all groups: the mailing list, Slack, and the blog. + + +```python +( + make_bar_chart_multi_year( + survey_data, "Check_for_news:", facet_by=[".", "Interested_in_next_level"] + ) + + p9.theme(strip_text_y=p9.element_text(margin={"r": 0.9, "units": "in"})) + + p9.labs(title="Sources Checked for News", fill="Year", x="Source", y="Proportion") +) +``` + + + + + +## Resource Usage + + +```python +use_ratings = [ + "Every Day", + "Several Times a Week", + "Several Times a Month", + "Occasionally", + "Never", +] +use_ratings.reverse() +( + make_likert_chart_multi_year( + survey_data, "Use_freq:", use_ratings, five_is_high=True + ) + + p9.labs(x="Resource", y="", fill="Rating", color="Rating", title="Resource Use") + + p9.theme( + figure_size=(12, (9 / 4) * 3), + strip_text_x=p9.element_text( + margin={"t": 0.35, "b": 0.35, "l": 1, "r": 1, "units": "in"} + ), + strip_text_y=p9.element_text(margin={"r": 0.9, "units": "in"}), + ) +) +``` + + + + + + + +The frequency of use across communication channels has fallen from 2018 to 2019 for most options. The only two with a positive trend are Slack and Google Groups/Mailing List. GitHub discussions saw a slight decrease, but is still a very heavily used tool. The decrease is due to the higher number of new contributors as shown in the plot below. + + +```python +use_ratings = [ + "Every Day", + "Several Times a Week", + "Several Times a Month", + "Occasionally", + "Never", +] +use_ratings.reverse() +( + make_likert_chart_multi_year( + survey_data, + "Use_freq:", + use_ratings, + five_is_high=True, + exclude_new_contributors=True, + ) + + p9.labs( + x="Resource", + y="", + fill="Rating", + color="Rating", + title="Resource Use (First Year Contributors Excluded)", + ) + + p9.theme( + figure_size=(12, (9 / 4) * 3), + strip_text_x=p9.element_text( + margin={"t": 0.35, "b": 0.35, "l": 1, "r": 1, "units": "in"} + ), + strip_text_y=p9.element_text(margin={"r": 0.9, "units": "in"}), + ) +) +``` + + + + + + +After excluding contributors with less than one year of experience, GitHub use no longer decreases. With this smaller data, we can see that out of all options and all respondents in 2018 and 2019, the use of GitHub in 2019 is the only resource to have no contributors report they never used the service. + + +```python +( + make_likert_chart_multi_year( + survey_data, + "Use_freq:", + use_ratings, + facet_by=["Level_of_Contributor", "."], + five_is_high=True, + ) + + p9.labs( + x="Resource", + y="Count", + fill="Rating", + color="Rating", + title="Resource Use by Contributor Level", + ) + + p9.theme( + figure_size=(12, (9 / 4) * 3), + strip_text_x=p9.element_text( + margin={"t": 0.35, "b": 0.35, "l": 1, "r": 1, "units": "in"} + ), + strip_text_y=p9.element_text(margin={"r": 0.9, "units": "in"}), + ) +) +``` + + + + + + + + + +Most trends are consistent across levels of the contributor ladder. The one exception is that subproject owners, and especially reviewers, used the mailing list and Google Groups less frequently in 2019 than in 2018. + +## Contribution Areas + + +```python +( + make_bar_chart_multi_year(survey_data, "Contribute:") + + p9.labs(x="Contribution", y="Count", title="Areas Contributed To", fill="Year") +) +``` + + + + + +Most areas saw increases in contributors, with the exception of code inside Kubernetes/Kubernetes and other. This reflects the continuing effort to only keep core code in the Kubernetes/Kuberenetes repository, moving other contributions to additional repositories in the Kubernetes organization. + + +```python +( + make_bar_chart_multi_year( + survey_data, "Contribute:", facet_by=["Contributing_Length", "."] + ) + + p9.labs( + x="Contribution", y="Proportion", title="Areas Contributed To", fill="Year" + ) + + p9.theme( + figure_size=(12, (9 / 4) * 3), + strip_text_y=p9.element_text(margin={"r": 0.9, "units": "in"}), + ) +) +``` + + + + + + + +Contributors who have less than one year of experience saw the greatest increase in their contributions. The largest gains were seen in the areas of Documentation and related projects. Other cohorts saw the proportions contributing to documentation slightly decrease. This isn't a bad thing if all necessary documentation is getting done, but a trend to keep an eye on if it falls below the desired standard. + + +```python +( + make_bar_chart_multi_year( + survey_data[ + survey_data.Upstream_supported_at_employer.isin( + ["Didn't Answer", "I’m a student"] + ) + == False + ], + "Contribute:", + facet_by=["Upstream_supported_at_employer", "."], + ) + + p9.labs( + x="Contribution", + y="Count", + title="Areas Contributed To by Employer Support", + fill="Proportion", + ) + + p9.theme( + figure_size=(12, (9 / 4) * 3), + strip_text_y=p9.element_text(margin={"r": 1, "units": "in"}), + ) +) +``` + + + + +The plot above shows the proportion of each cohort that contributes to a certain area. A large drop is seen among those who use their own time in their contribution to the core repository. This is matched by an almost equal increase in the same group's contributions to other repositories owned by the Kubernetes project. + +Contributions from those who can use company time decreased in all areas. As contributors can select more than on area, this suggests that each person is contributing to less areas. This is confirmed in the table below. + + +```python +survey_data.groupby(["Upstream_supported_at_employer", "year"]).apply( + lambda x: x[x.columns[x.columns.str.startswith("Contribute")]].sum(axis=1).mean() +).reset_index().rename(columns={0: "Average Number of Areas"}) +``` + + + + +<div> +<table border="1" class="dataframe"> + <thead> + <tr style="text-align: right;"> + <th></th> + <th>Upstream_supported_at_employer</th> + <th>year</th> + <th>Average Number of Areas</th> + </tr> + </thead> + <tbody> + <tr> + <th>0</th> + <td>Didn't Answer</td> + <td>2018</td> + <td>0.133333</td> + </tr> + <tr> + <th>1</th> + <td>Didn't Answer</td> + <td>2019</td> + <td>0.000000</td> + </tr> + <tr> + <th>2</th> + <td>I’m a student</td> + <td>2018</td> + <td>2.000000</td> + </tr> + <tr> + <th>3</th> + <td>it's complicated.</td> + <td>2018</td> + <td>1.750000</td> + </tr> + <tr> + <th>4</th> + <td>it's complicated.</td> + <td>2019</td> + <td>2.200000</td> + </tr> + <tr> + <th>5</th> + <td>no, I need to use my own time</td> + <td>2018</td> + <td>1.833333</td> + </tr> + <tr> + <th>6</th> + <td>no, I need to use my own time</td> + <td>2019</td> + <td>1.896552</td> + </tr> + <tr> + <th>7</th> + <td>yes, I can contribute on company time</td> + <td>2018</td> + <td>2.812500</td> + </tr> + <tr> + <th>8</th> + <td>yes, I can contribute on company time</td> + <td>2019</td> + <td>2.551724</td> + </tr> + </tbody> +</table> +</div> + + + + +```python +( + make_bar_chart_multi_year( + survey_data, "Contribute:", facet_by=["Interested_in_next_level", "."] + ) + + p9.labs( + x="Contribution", + y="Count", + title="Areas Contributed To by Interest in Next Level", + fill="Year", + ) + + p9.theme( + figure_size=(12, (9 / 4) * 3), + strip_text_y=p9.element_text(margin={"r": 1, "units": "in"}), + ) +) +``` + + + + + + +Core code contributions dropped from 2018 to 2019 among all groups except subproject owners. Those who want support to reach the next level contributed more across all areas. Those who want to move to the next level but do not condition their interest on receiving help contributed less across most areas than in 2018. This again suggests that more clarification is needed around the mentorship program, as many of those who think they need more support contribute widely, while those that don't contribute as much don't feel they need support. + +## Use of Help Wanted and Good First Issue Labels + + +```python +help_wanted = survey_data[ + survey_data[ + "Do_you_use_the\xa0Help_Wanted_and/or_Good_First_Issue_labels_on_issues_you_file_to_find_contributors" + ].isna() + == False +] +``` + + +```python +help_counts = ( + help_wanted.rename( + columns={ + "Do_you_use_the\xa0Help_Wanted_and/or_Good_First_Issue_labels_on_issues_you_file_to_find_contributors": "help" + } + ) + .groupby(["year", "help"]) + .count()["Collector_ID"] + .reset_index() +) +``` + + +```python +help_year_counts = help_counts.groupby("year").sum().reset_index() +help_percents = help_year_counts.merge(help_counts, on="year") +``` + + +```python +help_percents = help_percents.assign( + percent=help_percents["Collector_ID_y"] / help_percents["Collector_ID_x"] +) +``` + + +```python +help_plot = ( + p9.ggplot(help_percents, p9.aes(x="help", y="percent", fill="factor(year)")) + + p9.geom_bar(position=p9.position_dodge(preserve="single"), stat="identity") + + p9.theme(axis_text_x=p9.element_text(angle=45, ha="right")) + + p9.labs( + x="Used Label", + title="Use of Help Wanted and/or Good First Issue Labels", + y="Proportion", + fill="Year", + ) +) + +help_plot +``` + + + + + +Use of the help wanted and good first labels clearly increased from 2018 to 2019. diff --git a/sig-contributor-experience/surveys/multi_year_comparisons/multi_year_2019.ipynb b/sig-contributor-experience/surveys/multi_year_comparisons/multi_year_2019.ipynb new file mode 100644 index 00000000..7f496f40 --- /dev/null +++ b/sig-contributor-experience/surveys/multi_year_comparisons/multi_year_2019.ipynb @@ -0,0 +1,1008 @@ +{ + "cells": [ + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "import pandas as pd\n", + "import plotnine as p9\n", + "from textwrap import wrap\n", + "import sys\n", + "sys.path.append(\"../\")\n", + "\n", + "from k8s_survey_analysis.plot_utils import (\n", + " make_likert_chart_multi_year,\n", + " make_bar_chart_multi_year\n", + ")\n", + "\n", + "from k8s_survey_analysis import prepare_2019, prepare_2018" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "pd.options.display.max_columns = 999\n", + "pd.options.display.max_rows = 999" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "# Match Field Names and Multiple Choice Options as much as possible\n", + "df_2019 = prepare_2019.get_df('../2019/contribex-survey-2019.csv').assign(year=2019)\n", + "df_2018 = prepare_2018.get_df('../2018/contribex-survey-2018.csv').assign(year=2018)" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## Build a single dataset for comparison\n", + "\n", + "In this notebook we will compare responses between the 2018 and 2019 surveys. Only those questions which appeared in both surveys are useful to compare. Some questions that appeared in both surveys were different enough in their format to make comparisons not useful." + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "shared_columns = set(df_2019.columns).intersection(df_2018.columns)\n", + "survey_data = pd.concat([df_2019[shared_columns], df_2018[shared_columns]])" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## Compare univariate data between 2018 and 2019" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "length_year_totals = (\n", + " survey_data[survey_data[\"Contributing_Length\"].notnull()]\n", + " .groupby([\"year\"])\n", + " .count()[\"Collector_ID\"]\n", + " .reset_index()\n", + ")\n", + "\n", + "length_counts = (\n", + " survey_data.groupby([\"Contributing_Length\", \"year\"])\n", + " .count()[\"Collector_ID\"]\n", + " .reset_index()\n", + ")\n", + "\n", + "length_percents = length_counts.merge(length_year_totals, on=\"year\")\n", + "\n", + "length_percents = length_percents.assign(\n", + " percent=length_percents[\"Collector_ID_x\"] / length_percents[\"Collector_ID_y\"]\n", + ")" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "(\n", + " p9.ggplot(\n", + " length_percents,\n", + " p9.aes(x=\"Contributing_Length\", fill=\"factor(year)\", y=\"percent\"),\n", + " )\n", + " + p9.geom_bar(position=\"dodge\", stat=\"identity\")\n", + " + p9.theme(axis_text_x=p9.element_text(angle=45))\n", + " + p9.scale_x_discrete(\n", + " limits=[\n", + " \"less than one year\",\n", + " \"one to two years\",\n", + " \"two to three years\",\n", + " \"three+ years\",\n", + " ]\n", + " )\n", + " + p9.ggtitle(\"Number of Contributors by Length of Contribution\")\n", + " + p9.xlab(\"Length of Contribution\")\n", + " + p9.ylab(\"Number of Contributors\")\n", + ")" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "As expected, due to the advertisement of the survey on Twitter, a higher proportion of respondents are newer contributors this year." + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "level_year_totals = survey_data[survey_data['Level_of_Contributor'].notnull()].groupby(['year']).count()['Collector_ID'].reset_index()\n", + "level_counts = survey_data.groupby(['Level_of_Contributor','year']).count()['Collector_ID'].reset_index()\n", + "level_percents = level_counts.merge(level_year_totals,on='year')\n", + "level_percents = level_percents.assign(percent = level_percents['Collector_ID_x']/level_percents['Collector_ID_y'])\n", + "\n" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "(\n", + " p9.ggplot(\n", + " level_percents,\n", + " p9.aes(x=\"Level_of_Contributor\", fill=\"factor(year)\", y=\"percent\"),\n", + " )\n", + " + p9.geom_bar(position=\"dodge\", stat=\"identity\")\n", + " + p9.theme(axis_text_x=p9.element_text(angle=45, ha=\"right\"))\n", + " + p9.ggtitle(\"Number of Contributors by Contributor Level\")\n", + " + p9.xlab(\"Contributor Level\")\n", + " + p9.ylab(\"Proportion of Contributors\")\n", + ")" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "A larger proportion of respondents this year are in higher roles in the contributor ladder. It appears most of these are due to the smaller proportion of respondents who are not a member for one reason or another." + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "oss_counts = (\n", + " survey_data.groupby([\"year\", \"Contribute_to_other_OSS\"])\n", + " .count()[\"Collector_ID\"]\n", + " .reset_index()\n", + ")\n", + "oss_year_totals = (\n", + " survey_data[survey_data[\"Contribute_to_other_OSS\"].notnull()]\n", + " .groupby([\"year\"])\n", + " .count()[\"Collector_ID\"]\n", + " .reset_index()\n", + ")\n", + "\n", + "oss_percents = oss_counts.merge(oss_year_totals, on=\"year\")\n", + "oss_percents = oss_percents.assign(\n", + " percent=oss_percents[\"Collector_ID_x\"] / oss_percents[\"Collector_ID_y\"]\n", + ")" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "(\n", + " p9.ggplot(\n", + " oss_percents,\n", + " p9.aes(x=\"Contribute_to_other_OSS\", fill=\"factor(year)\", y=\"percent\"),\n", + " )\n", + " + p9.geom_bar(position=\"dodge\", stat=\"identity\")\n", + " + p9.theme(axis_text_x=p9.element_text(angle=45, ha=\"right\"))\n", + " + p9.scale_x_discrete(\n", + " limits=[\"this is my first open source project!\", \"1 other\", \"2 or more\"]\n", + " )\n", + " + p9.ggtitle(\"Participation in Other Open Source Projects\")\n", + " + p9.xlab(\"Number of other OSS Projects\")\n", + " + p9.ylab(\"Number of Contributors\")\n", + ")" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "There is a small increase in the proportion of contributors for whom Kuberetes is their first open source project. Because the change is so small, no major changes should be based on this finding." + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "counts = survey_data.groupby([\"Upstream_supported_at_employer\", \"year\"]).count()[\n", + " \"Respondent_ID\"\n", + "]\n", + "\n", + "total = survey_data.groupby([\"year\"]).count()[\"Respondent_ID\"]\n", + "\n", + "employee_percents = (\n", + " counts.to_frame().reset_index().merge(total.to_frame().reset_index(), on=\"year\")\n", + ")\n", + "\n", + "employee_percents = employee_percents.assign(\n", + " percent=employee_percents[\"Respondent_ID_x\"] / employee_percents[\"Respondent_ID_y\"]\n", + ")\n", + "\n", + "(\n", + " p9.ggplot(\n", + " employee_percents,\n", + " p9.aes(x=\"Upstream_supported_at_employer\", fill=\"factor(year)\", y=\"percent\"),\n", + " )\n", + " + p9.geom_bar(position=p9.position_dodge(preserve=\"single\"), stat=\"identity\")\n", + " + p9.labs(\n", + " title=\"Support at Employer\", fill=\"Year\", y=\"Proportion\", x=\"Support Level\"\n", + " )\n", + " + p9.theme(axis_text_x=p9.element_text(angle=45, ha=\"right\"))\n", + ")" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "This question was a required question in 2019 but not in 2018. In addition, the student option was not present in this year's survey. Nonetheless, the proportion of contributors supported by their employer dropped slightly this year. It is difficult to make any conclusions due to the change in the question, but this is a trend to keep a close eye on in future surveys." + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## Cross-tabulations" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "pd.crosstab(\n", + " survey_data.World_Region, [survey_data.Level_of_Contributor, survey_data.year]\n", + ")" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "pd.crosstab(\n", + " survey_data.Contributing_Length,\n", + " [survey_data.Level_of_Contributor, survey_data.year],\n", + ").loc[[\"less than one year\", \"one to two years\", \"two to three years\", \"three+ years\"]]" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "pd.crosstab(\n", + " survey_data.Contributing_Length,\n", + " [survey_data.Contribute_to_other_OSS, survey_data.year],\n", + ").loc[\n", + " [\"less than one year\", \"one to two years\", \"two to three years\", \"three+ years\"],\n", + " [\"this is my first open source project!\", \"1 other\", \"2 or more\"],\n", + "]" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "pd.crosstab(\n", + " survey_data.Level_of_Contributor,\n", + " [survey_data.Upstream_supported_at_employer, survey_data.year],\n", + ")" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "pd.crosstab(\n", + " survey_data.Contributing_Length,\n", + " [survey_data.Upstream_supported_at_employer, survey_data.year],\n", + ")" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "pd.crosstab(\n", + " survey_data.Interested_in_next_level,\n", + " [survey_data.Level_of_Contributor, survey_data.year],\n" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## Challenges/Blockers Faced" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "blocker_ratings = [\"A frequent blocker\",'Often a problem','Sometimes a problem','Rarely a problem','Not a problem']\n" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "(\n", + " make_likert_chart_multi_year(survey_data, \"Blocker:\", blocker_ratings)\n", + " + p9.labs(\n", + " x=\"Year\",\n", + " y=\"\",\n", + " fill=\"Rating\",\n", + " color=\"Rating\",\n", + " title=\"Blockers (New Contributors Included)\",\n", + " )\n", + " + p9.theme(\n", + " legend_margin=5,\n", + " figure_size=(12, (9 / 4) * 3),\n", + " strip_text_x=p9.element_text(\n", + " margin={\"t\": 0.35, \"b\": 0.35, \"l\": 1, \"r\": 1, \"units\": \"in\"}\n", + " ),\n", + " )\n", + " + p9.ylim(-1, 1)\n", + ")" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "(\n", + " make_likert_chart_multi_year(survey_data, \"Blocker:\", blocker_ratings)\n", + " + p9.labs(\n", + " x=\"Year\",\n", + " y=\"\",\n", + " fill=\"Rating\",\n", + " color=\"Rating\",\n", + " title=\"Blockers (New Contributors Included)\",\n", + " )\n", + " + p9.theme(\n", + " legend_margin=5,\n", + " figure_size=(12, (9 / 4) * 3),\n", + " strip_text_x=p9.element_text(\n", + " margin={\"t\": 0.35, \"b\": 0.35, \"l\": 1, \"r\": 1, \"units\": \"in\"}\n", + " ),\n", + " )\n", + " + p9.ylim(-1, 1)\n", + ")" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "Respondents across the board reported feeling more blocked this past year than in 2018. The only exception is GitHub tooling. To ensure this was not due to a higher proportion of new contributors we looked at the data without them. This is show below." + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "(\n", + " make_likert_chart_multi_year(\n", + " survey_data, \"Blocker:\", blocker_ratings, exclude_new_contributors=True\n", + " )\n", + " + p9.labs(\n", + " x=\"Blocker\",\n", + " y=\"Count\",\n", + " fill=\"Rating\",\n", + " color=\"Rating\",\n", + " title=\"Blockers (New Contributors Excluded)\",\n", + " )\n", + " + p9.theme(\n", + " legend_margin=5,\n", + " figure_size=(12, (9 / 4) * 3),\n", + " strip_text_x=p9.element_text(\n", + " margin={\"t\": 0.35, \"b\": 0.35, \"l\": 1, \"r\": 1, \"units\": \"in\"}\n", + " ),\n", + " )\n", + " + p9.ylim(-1, 1)\n", + ")" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "After removing contributors who reported having being involved for less than a year, the overall trend holds. One concern in comparing these two datasets is that this year respondents were asked how challenging these areas were, not how much they are blocked by them. Consistent wording will make these more comparable between future surveys. " + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "(\n", + " make_likert_chart_multi_year(\n", + " survey_data, \"Blocker:\", blocker_ratings, [\"Contributing_Length\", \".\"]\n", + " )\n", + " + p9.labs(\n", + " x=\"Year\",\n", + " y=\"\",\n", + " fill=\"Rating\",\n", + " color=\"Rating\",\n", + " title=\"Blockers by Length of Contribution\",\n", + " )\n", + " + p9.theme(\n", + " figure_size=(12, (9 / 4) * 3),\n", + " strip_text_x=p9.element_text(\n", + " margin={\"t\": 0.35, \"b\": 0.35, \"l\": 1, \"r\": 1, \"units\": \"in\"}\n", + " ),\n", + " strip_text_y=p9.element_text(margin={\"r\": 0.8, \"units\": \"in\"}),\n", + " )\n", + ")" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "Contributors who have been contributing for two years or more are more rate the areas as being as difficult or slightly less of an issue than in 2018. The trend is reversed for contributors with less than two years of experience. They rate items as being more difficult in 2019, suggesting potential for outreach and improvement among this group." + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "(\n", + " make_likert_chart_multi_year(\n", + " survey_data, \"Blocker:\", blocker_ratings, [\"Level_of_Contributor\", \".\"]\n", + " )\n", + " + p9.labs(\n", + " x=\"Blocker\",\n", + " y=\"Count\",\n", + " fill=\"Rating\",\n", + " color=\"Rating\",\n", + " title=\"Blockers by Level on Ladder\",\n", + " )\n", + " + p9.theme(\n", + " figure_size=(12, (9 / 4) * 3),\n", + " strip_text_x=p9.element_text(\n", + " margin={\"t\": 0.35, \"b\": 0.35, \"l\": 1, \"r\": 1, \"units\": \"in\"}\n", + " ),\n", + " strip_text_y=p9.element_text(margin={\"r\": 0.9, \"units\": \"in\"}),\n", + " )\n", + ")" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "Subproject owners report less challenges in 2019 than in 2018. This is contrast to other cohorts whose challenges have increased or stayed level. This is especially clear in the columns for finding the right SIG, and code/documentation review to a lesser extent." + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "(\n", + " make_likert_chart_multi_year(\n", + " survey_data, \"Blocker:\", blocker_ratings, [\"Interested_in_next_level\", \".\"]\n", + " )\n", + " + p9.labs(\n", + " x=\"Blocker\",\n", + " y=\"Count\",\n", + " fill=\"Rating\",\n", + " color=\"Rating\",\n", + " title=\"Blockers by Interest in Next Level\",\n", + " )\n", + " + p9.theme(\n", + " figure_size=(12, (9 / 4) * 3),\n", + " strip_text_x=p9.element_text(\n", + " margin={\"t\": 0.35, \"b\": 0.35, \"l\": 1, \"r\": 1, \"units\": \"in\"}\n", + " ),\n", + " strip_text_y=p9.element_text(margin={\"r\": 0.9, \"units\": \"in\"}),\n", + " )\n", + ")" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "This plot shows an interesting difference between contributors interested in the next level not conditional on support, and those whose interest is conditioned on further support. In contrast to what we would expect, those who are interested irrespective of the support available report more challenges in 2019 than in 2018 with finding issues to work on and finding the right SIG. Combining this finding with the cross tabulation above showing contributors across the spectrum responding more with unconditional interest suggests several things. One is that what the mentoring program is and how it could help may need more publication. The other may be that there is a sense of pride in not needing mentoring, and so finding a way to break down that stigma may lead to happier contributors in the long run." + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## Sources Checked for News" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "make_bar_chart_multi_year(survey_data, \"Check_for_news:\") + p9.labs(\n", + " title=\"Sources Checked for News\", fill=\"Year\", x=\"Source\"\n", + ")" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "This question does not require users to choose only one option, so the proportions add up to more than 1. Most news sources see an increase in use. The largest jump is the kubernetes-dev mailing list, with over 60% of respondents checking the mailing list. " + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "make_bar_chart_multi_year(\n", + " survey_data, \"Check_for_news:\", exclude_new_contributors=True\n", + ") + p9.labs(\n", + " title=\"Sources Checked for News (Excluding New Contributors)\",\n", + " fill=\"Year\",\n", + " x=\"Source\",\n", + ")" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "After excluding newer contributors, an even larger percent of contributors get their news from the mailing list, suggesting it is important for new users to be introduced to the mailing list. The other change from the previous plot is that the use of Twitter now shows a downward trend from 2018 to 2019. This confirms that advertising the survey on Twitter may have skewed the results slightly. " + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "(\n", + " make_bar_chart_multi_year(\n", + " survey_data, \"Check_for_news:\", facet_by=[\".\", \"Contributing_Length\"]\n", + " )\n", + " + p9.theme(strip_text_y=p9.element_text(margin={\"r\": 0.8, \"units\": \"in\"}))\n", + " + p9.labs(title=\"Sources Checked for News\", fill=\"Year\", x=\"Source\", y=\"Count\")\n", + ")" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "In addition to the large increase in the use of Twitter by new contributors, there are a few other changes in new consumption in relation to the length of participation in Kubernetes. The proportion of new contributors using Slack has increased greatly. There is a consistent pattern across contributors who have been involved for one to two years, with many of the resources seeing decreased use. It is not clear why this is, but it not a large concern, as the most widely used resources are the same among all groups: the mailing list, Slack, and the blog. " + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "(\n", + " make_bar_chart_multi_year(\n", + " survey_data, \"Check_for_news:\", facet_by=[\".\", \"Interested_in_next_level\"]\n", + " )\n", + " + p9.theme(strip_text_y=p9.element_text(margin={\"r\": 0.9, \"units\": \"in\"}))\n", + " + p9.labs(title=\"Sources Checked for News\", fill=\"Year\", x=\"Source\", y=\"Proportion\")\n", + ")" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## Resource Usage" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "use_ratings = [\n", + " \"Every Day\",\n", + " \"Several Times a Week\",\n", + " \"Several Times a Month\",\n", + " \"Occasionally\",\n", + " \"Never\",\n", + "]\n", + "use_ratings.reverse()\n", + "(\n", + " make_likert_chart_multi_year(\n", + " survey_data, \"Use_freq:\", use_ratings, five_is_high=True\n", + " )\n", + " + p9.labs(x=\"Resource\", y=\"\", fill=\"Rating\", color=\"Rating\", title=\"Resource Use\")\n", + " + p9.theme(\n", + " figure_size=(12, (9 / 4) * 3),\n", + " strip_text_x=p9.element_text(\n", + " margin={\"t\": 0.35, \"b\": 0.35, \"l\": 1, \"r\": 1, \"units\": \"in\"}\n", + " ),\n", + " strip_text_y=p9.element_text(margin={\"r\": 0.9, \"units\": \"in\"}),\n", + " )\n", + ")" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "The frequency of use across communication channels has fallen from 2018 to 2019 for most options. The only two with a positive trend are Slack and Google Groups/Mailing List. GitHub discussions saw a slight decrease, but is still a very heavily used tool. The decrease is due to the higher number of new contributors as shown in the plot below." + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "use_ratings = [\n", + " \"Every Day\",\n", + " \"Several Times a Week\",\n", + " \"Several Times a Month\",\n", + " \"Occasionally\",\n", + " \"Never\",\n", + "]\n", + "use_ratings.reverse()\n", + "(\n", + " make_likert_chart_multi_year(\n", + " survey_data,\n", + " \"Use_freq:\",\n", + " use_ratings,\n", + " five_is_high=True,\n", + " exclude_new_contributors=True,\n", + " )\n", + " + p9.labs(\n", + " x=\"Resource\",\n", + " y=\"\",\n", + " fill=\"Rating\",\n", + " color=\"Rating\",\n", + " title=\"Resource Use (First Year Contributors Excluded)\",\n", + " )\n", + " + p9.theme(\n", + " figure_size=(12, (9 / 4) * 3),\n", + " strip_text_x=p9.element_text(\n", + " margin={\"t\": 0.35, \"b\": 0.35, \"l\": 1, \"r\": 1, \"units\": \"in\"}\n", + " ),\n", + " strip_text_y=p9.element_text(margin={\"r\": 0.9, \"units\": \"in\"}),\n", + " )\n", + ")" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "After excluding contributors with less than one year of experience, GitHub use no longer decreases. With this smaller data, we can see that out of all options and all respondents in 2018 and 2019, the use of GitHub in 2019 is the only resource to have no contributors report they never used the service." + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "(\n", + " make_likert_chart_multi_year(\n", + " survey_data,\n", + " \"Use_freq:\",\n", + " use_ratings,\n", + " facet_by=[\"Level_of_Contributor\", \".\"],\n", + " five_is_high=True,\n", + " )\n", + " + p9.labs(\n", + " x=\"Resource\",\n", + " y=\"Count\",\n", + " fill=\"Rating\",\n", + " color=\"Rating\",\n", + " title=\"Resource Use by Contributor Level\",\n", + " )\n", + " + p9.theme(\n", + " figure_size=(12, (9 / 4) * 3),\n", + " strip_text_x=p9.element_text(\n", + " margin={\"t\": 0.35, \"b\": 0.35, \"l\": 1, \"r\": 1, \"units\": \"in\"}\n", + " ),\n", + " strip_text_y=p9.element_text(margin={\"r\": 0.9, \"units\": \"in\"}),\n", + " )\n", + ")" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "Most trends are consistent across levels of the contributor ladder. The one exception is that subproject owners, and especially reviewers, used the mailing list and Google Groups less frequently in 2019 than in 2018." + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## Contribution Areas" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "(\n", + " make_bar_chart_multi_year(survey_data, \"Contribute:\")\n", + " + p9.labs(x=\"Contribution\", y=\"Count\", title=\"Areas Contributed To\", fill=\"Year\")\n", + ")" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "Most areas saw increases in contributors, with the exception of code inside Kubernetes/Kubernetes and other. This reflects the continuing effort to only keep core code in the Kubernetes/Kuberenetes repository, moving other contributions to additional repositories in the Kubernetes organization. " + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "(\n", + " make_bar_chart_multi_year(\n", + " survey_data, \"Contribute:\", facet_by=[\"Contributing_Length\", \".\"]\n", + " )\n", + " + p9.labs(\n", + " x=\"Contribution\", y=\"Proportion\", title=\"Areas Contributed To\", fill=\"Year\"\n", + " )\n", + " + p9.theme(\n", + " figure_size=(12, (9 / 4) * 3),\n", + " strip_text_y=p9.element_text(margin={\"r\": 0.9, \"units\": \"in\"}),\n", + " )\n", + ")" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "Contributors who have less than one year of experience saw the greatest increase in their contributions. The largest gains were seen in the areas of Documentation and related projects. Other cohorts saw the proportions contributing to documentation slightly decrease. This isn't a bad thing if all necessary documentation is getting done, but a trend to keep an eye on if it falls below the desired standard. " + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "(\n", + " make_bar_chart_multi_year(\n", + " survey_data[\n", + " survey_data.Upstream_supported_at_employer.isin(\n", + " [\"Didn't Answer\", \"I’m a student\"]\n", + " )\n", + " == False\n", + " ],\n", + " \"Contribute:\",\n", + " facet_by=[\"Upstream_supported_at_employer\", \".\"],\n", + " )\n", + " + p9.labs(\n", + " x=\"Contribution\",\n", + " y=\"Count\",\n", + " title=\"Areas Contributed To by Employer Support\",\n", + " fill=\"Proportion\",\n", + " )\n", + " + p9.theme(\n", + " figure_size=(12, (9 / 4) * 3),\n", + " strip_text_y=p9.element_text(margin={\"r\": 1, \"units\": \"in\"}),\n", + " )\n", + ")" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "The plot above shows the proportion of each cohort that contributes to a certain area. A large drop is seen among those who use their own time in their contribution to the core repository. This is matched by an almost equal increase in the same group's contributions to other repositories owned by the Kubernetes project. \n", + "\n", + "Contributions from those who can use company time decreased in all areas. As contributors can select more than on area, this suggests that each person is contributing to less areas. This is confirmed in the table below." + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "survey_data.groupby([\"Upstream_supported_at_employer\", \"year\"]).apply(\n", + " lambda x: x[x.columns[x.columns.str.startswith(\"Contribute\")]].sum(axis=1).mean()\n", + ").reset_index().rename(columns={0: \"Average Number of Areas\"})" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "(\n", + " make_bar_chart_multi_year(\n", + " survey_data, \"Contribute:\", facet_by=[\"Interested_in_next_level\", \".\"]\n", + " )\n", + " + p9.labs(\n", + " x=\"Contribution\",\n", + " y=\"Count\",\n", + " title=\"Areas Contributed To by Interest in Next Level\",\n", + " fill=\"Year\",\n", + " )\n", + " + p9.theme(\n", + " figure_size=(12, (9 / 4) * 3),\n", + " strip_text_y=p9.element_text(margin={\"r\": 1, \"units\": \"in\"}),\n", + " )\n", + ")" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "Core code contributions dropped from 2018 to 2019 among all groups except subproject owners. Those who want support to reach the next level contributed more across all areas. Those who want to move to the next level but do not condition their interest on receiving help contributed less across most areas than in 2018. This again suggests that more clarification is needed around the mentorship program, as many of those who think they need more support contribute widely, while those that don't contribute as much don't feel they need support. " + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## Use of Help Wanted and Good First Issue Labels" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "help_wanted = survey_data[\n", + " survey_data[\n", + " \"Do_you_use_the\\xa0Help_Wanted_and/or_Good_First_Issue_labels_on_issues_you_file_to_find_contributors\"\n", + " ].isna()\n", + " == False\n", + "]" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "help_counts = (\n", + " help_wanted.rename(\n", + " columns={\n", + " \"Do_you_use_the\\xa0Help_Wanted_and/or_Good_First_Issue_labels_on_issues_you_file_to_find_contributors\": \"help\"\n", + " }\n", + " )\n", + " .groupby([\"year\", \"help\"])\n", + " .count()[\"Collector_ID\"]\n", + " .reset_index()\n", + ")" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "help_year_counts = help_counts.groupby(\"year\").sum().reset_index()\n", + "help_percents = help_year_counts.merge(help_counts, on=\"year\")" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "help_percents = help_percents.assign(\n", + " percent=help_percents[\"Collector_ID_y\"] / help_percents[\"Collector_ID_x\"]\n", + ")" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "help_plot = (\n", + " p9.ggplot(help_percents, p9.aes(x=\"help\", y=\"percent\", fill=\"factor(year)\"))\n", + " + p9.geom_bar(position=p9.position_dodge(preserve=\"single\"), stat=\"identity\")\n", + " + p9.theme(axis_text_x=p9.element_text(angle=45, ha=\"right\"))\n", + " + p9.labs(\n", + " x=\"Used Label\",\n", + " title=\"Use of Help Wanted and/or Good First Issue Labels\",\n", + " y=\"Proportion\",\n", + " fill=\"Year\",\n", + " )\n", + ")\n", + "\n", + "help_plot" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "Use of the help wanted and good first labels clearly increased from 2018 to 2019." + ] + } + ], + "metadata": { + "kernelspec": { + "display_name": "Python 3", + "language": "python", + "name": "python3" + }, + "language_info": { + "codemirror_mode": { + "name": "ipython", + "version": 3 + }, + "file_extension": ".py", + "mimetype": "text/x-python", + "name": "python", + "nbconvert_exporter": "python", + "pygments_lexer": "ipython3", + "version": "3.7.3" + } + }, + "nbformat": 4, + "nbformat_minor": 4 +} |
