[PATCH 0/1] Website: Part 3 - Contributors - Guix user survey

  • Done
  • quality assurance status badge
Details
2 participants
  • Ludovic Courtès
  • Steve George
Owner
unassigned
Submitted by
Steve George
Severity
normal
S
S
Steve George wrote 3 days ago
(address . guix-patches@gnu.org)(name . Steve George)(address . steve@futurile.net)
cover.1737971516.git.steve@futurile.net
Final post, covering the contributor section.

Steve George (1):
website: add 3rd post covering the 2024 user survey.

...user-contributor-survey-results-post3.sxml | 559 ++++++++++++++++++
...24-guix-survey-gen-active-contributors.png | Bin 0 -> 30360 bytes
...2024-guix-survey-gen-contribution-type.png | Bin 0 -> 79646 bytes
...024-guix-survey-gen-contributor-improv.png | Bin 0 -> 94762 bytes
...ix-survey-gen-contributor-satisfaction.png | Bin 0 -> 49838 bytes
...rvey-gen-contributor-social-improv-all.png | Bin 0 -> 73762 bytes
...survey-gen-contributor-tech-improv-all.png | Bin 0 -> 103838 bytes
...uix-survey-gen-contributor-tech-improv.png | Bin 0 -> 115734 bytes
.../blog/img/2024-guix-survey-gen-dev-pay.png | Bin 0 -> 47448 bytes
...survey-gen-previous-contributor-reason.png | Bin 0 -> 136015 bytes
.../blog/img/2024-guix-survey-gen-q22.png | Bin 0 -> 30304 bytes
11 files changed, 559 insertions(+)
create mode 100644 website/posts/2024-guix-user-contributor-survey-results-post3.sxml
create mode 100644 website/static/blog/img/2024-guix-survey-gen-active-contributors.png
create mode 100644 website/static/blog/img/2024-guix-survey-gen-contribution-type.png
create mode 100644 website/static/blog/img/2024-guix-survey-gen-contributor-improv.png
create mode 100644 website/static/blog/img/2024-guix-survey-gen-contributor-satisfaction.png
create mode 100644 website/static/blog/img/2024-guix-survey-gen-contributor-social-improv-all.png
create mode 100644 website/static/blog/img/2024-guix-survey-gen-contributor-tech-improv-all.png
create mode 100644 website/static/blog/img/2024-guix-survey-gen-contributor-tech-improv.png
create mode 100644 website/static/blog/img/2024-guix-survey-gen-dev-pay.png
create mode 100644 website/static/blog/img/2024-guix-survey-gen-previous-contributor-reason.png
create mode 100644 website/static/blog/img/2024-guix-survey-gen-q22.png


base-commit: 619ebae4f7a8bcda0480694b74630db15dfa6deb
--
2.46.0
S
S
Steve George wrote 3 days ago
[PATCH 1/1] website: add 3rd post covering the 2024 user survey.
(address . 75891@debbugs.gnu.org)(name . Steve George)(address . steve@futurile.net)
db8abe3e9831a948a14d56440626ccdc32681233.1737972313.git.steve@futurile.net
* website/posts/2024-guix-user-contributor-survey-results-post3.sxml,
website/static/blog/img/2024-guix-survey-gen-q22.png,
website/static/blog/img/2024-guix-survey-gen-active-contributors.png,
website/static/blog/img/2024-guix-survey-gen-contribution-type.png,
website/static/blog/img/2024-guix-survey-gen-dev-pay.png,
website/static/blog/img/2024-guix-survey-gen-previous-contributors-reason.png,
website/static/blog/img/2024-guix-survey-gen-contributor-statisfaction.png,
website/static/blog/img/2024-guix-survey-gen-contributor-improv.png,
website/static/blog/img/2024-guix-survey-gen-contributor-social-improv.png,
website/static/blog/img/2024-guix-survey-gen-contributor-social-improv-all.png,
websitte/static/blog/img/2024-guix-survey-gen-contributor-tech-improv.png,
website/static/blog/img/2024-guix-survey-gen-contributor-tech-improv-all.png
---
...user-contributor-survey-results-post3.sxml | 559 ++++++++++++++++++
...24-guix-survey-gen-active-contributors.png | Bin 0 -> 30360 bytes
...2024-guix-survey-gen-contribution-type.png | Bin 0 -> 79646 bytes
...024-guix-survey-gen-contributor-improv.png | Bin 0 -> 94762 bytes
...ix-survey-gen-contributor-satisfaction.png | Bin 0 -> 49838 bytes
...rvey-gen-contributor-social-improv-all.png | Bin 0 -> 73762 bytes
...survey-gen-contributor-tech-improv-all.png | Bin 0 -> 103838 bytes
...uix-survey-gen-contributor-tech-improv.png | Bin 0 -> 115734 bytes
.../blog/img/2024-guix-survey-gen-dev-pay.png | Bin 0 -> 47448 bytes
...survey-gen-previous-contributor-reason.png | Bin 0 -> 136015 bytes
.../blog/img/2024-guix-survey-gen-q22.png | Bin 0 -> 30304 bytes
11 files changed, 559 insertions(+)
create mode 100644 website/posts/2024-guix-user-contributor-survey-results-post3.sxml
create mode 100644 website/static/blog/img/2024-guix-survey-gen-active-contributors.png
create mode 100644 website/static/blog/img/2024-guix-survey-gen-contribution-type.png
create mode 100644 website/static/blog/img/2024-guix-survey-gen-contributor-improv.png
create mode 100644 website/static/blog/img/2024-guix-survey-gen-contributor-satisfaction.png
create mode 100644 website/static/blog/img/2024-guix-survey-gen-contributor-social-improv-all.png
create mode 100644 website/static/blog/img/2024-guix-survey-gen-contributor-tech-improv-all.png
create mode 100644 website/static/blog/img/2024-guix-survey-gen-contributor-tech-improv.png
create mode 100644 website/static/blog/img/2024-guix-survey-gen-dev-pay.png
create mode 100644 website/static/blog/img/2024-guix-survey-gen-previous-contributor-reason.png
create mode 100644 website/static/blog/img/2024-guix-survey-gen-q22.png

Toggle diff (263 lines)
diff --git a/website/posts/2024-guix-user-contributor-survey-results-post3.sxml b/website/posts/2024-guix-user-contributor-survey-results-post3.sxml
new file mode 100644
index 0000000..b38a2bf
--- /dev/null
+++ b/website/posts/2024-guix-user-contributor-survey-results-post3.sxml
@@ -0,0 +1,559 @@
+(begin
+ (use-modules (apps base templates components) (srfi srfi-19))
+ `((title . "Guix User and Contributor Survey 2024: The Results (part 3)")
+ (author . "Steve George")
+ (date unquote (make-date 0 0 00 10 28 01 2025 7200))
+ (tags unquote (list "Community" "User Survey"))
+ (content
+ (p "Today we're looking at the results from the Contributor section of the Guix User and Contributor Survey (2024). The goal was to understand how people contribute to Guix and their overall development experience. A great development experience is important because a Free Software project's sustainability depends on happy contributors to continue the work!")
+ (p "See "
+ (a (@ (href "https://guix.gnu.org/en/blog/2025/guix-user-and-contributor-survey-2024-the-results-part-1/")) "Part 1")
+ " for insights about Guix adoption, and "
+ (a (@ (href "https://guix.gnu.org/en/blog/2025/guix-user-and-contributor-survey-2024-the-results-part-2/")) "Part 2")
+ " for users overall experience. With over 900 participants there's lots of interesting insights!")
+
+
+ (h3 "Contributor community")
+ (p "The survey defined someone as a Contributor if they sent patches of any form. That includes changes to code, but also other improvements such as documentation and translations. Some Guix contributors have commit access to the Guix repository, but it's a much more extensive group than those with commit rights.")
+ (p "Of the survey's 943 full responses, 297 participants classified themselves as current contributors and 58 as previous contributors, so 355 participants were shown this section.")
+ (p "The first question was (Q22), "
+ (b "How many patches do you estimate you've contributed to Guix in the last year?"))
+ (p
+ (table
+ (caption (b "Table 21: Guix contributors patch estimates"))
+ (tr
+ (th "Number of patches") (th "Count") (th "Percentage"))
+ (tr
+ (td "1 — 5 patches") (td "190") (td "61%"))
+ (tr
+ (td "6 — 20 patches") (td "60") (td "19%"))
+ (tr
+ (td "21 — 100 patches") (td "36") (td "12%"))
+ (tr
+ (td "100+ patches") (td "27") (td "9%"))
+ (tr
+ (td "None, but I've contributed in the past") (td "42") (td "N/A"))))
+ (p "Note that the percentages in this table, and throughout the posts, are rounded up to make them easier to refer to.")
+ (p "The percentage is the "
+ (b "percentage of contributors that sent patches in the last year")
+ ". That means the 42 participants who were previous contributors have been excluded.")
+ (p (em "Figure 13") " shows this visually:"
+ (figure
+ (img (@ (src "/static/blog/img/2024-guix-survey-gen-q22.png")
+ (alt "2024 Guix user survey: GNU Guix contributor patch count bar chart")
+ (style "width:90%;height:90%;")))
+ (figcaption (@ (style "font-weight:bold;")) "Figure 13: Guix contributor estimated patch count")))
+ (p "As we can see many contributors send a few patches (61%), perhaps updating a package that they personally care about. At the other end of the scale, there are a few contributors who send a phenomenal number of patches.")
+
+
+ (h3 "Active contributors")
+ (p "It's interesting to investigate the size of Guix's contributor community. While running the survey I did some separate research to find out the total number of contributors. I defined an "
+ (b "Active contributor")
+ " as someone who had sent a patch in the last two years, which was a total of 454 people. I deduplicated by names, but as this is a count by email address there may be some double counting.")
+ (p "This research also showed the actual number of patches that were sent by contributors:")
+ (p
+ (table
+ (caption (b "Table 22: Active contributors by patch count"))
+ (tr
+ (th "Number of patches") (th "Count") (th "Percentage of Contributors"))
+ (tr
+ (td "1 — 5 patches") (td "187") (td "41%"))
+ (tr
+ (td "6 — 20 patches") (td "102") (td "22%"))
+ (tr
+ (td "21 — 100 patches") (td "91") (td "20%"))
+ (tr
+ (td "100+ patches") (td "74") (td "16%"))))
+ (p (em "Figure 14") " shows this:"
+ (figure
+ (img (@ (src "/static/blog/img/2024-guix-survey-gen-active-contributors.png")
+ (alt "2024 Guix user survey: GNU Guix active contributor patch count bar chart")
+ (style "width:90%;height:90%;")))
+ (figcaption (@ (style "font-weight:bold;")) "Figure 14: Active Guix contributors by patch count")))
+ (p "Together this give us an interesting picture of the contributor community:"
+ (ul
+ (li "There's a good community of active contributors to Guix: 300 in the survey data, and 454 from the direct research.")
+ (li "A significant percentage of contributors send one, or a few patches. This reflects that packaging in Guix can be easy to get started with.")
+ (li "The direct research shows an even distribution of contributors across the different levels of contribution. This demonstrates that there are some contributors who have been working on Guix for a long-time, as well as newer people joining the team. That's great news for the sustainability of the project!")
+ (li "There are also some very committed contributors who have created a lot of patches and been contributing to the project for many years. In fact, the top 10 contributors have all contributed over 700 patches each!")))
+
+
+ (h3 "Types of contribution")
+ (p "The survey also asked contributors (Q23), "
+ (b "How do you participate in the development of Guix?"))
+ (p
+ (table
+ (caption (b "Table 23: Types of contribution"))
+ (tr
+ (th "Type of contribution") (th "Count") (th "Percentage"))
+ (tr
+ (td "Develop new code (patches services, modules, etc)") (td "312") (td "59%"))
+ (tr
+ (td "Review patches") (td "65") (td "12%"))
+ (tr
+ (td "Triage, handle and test bugs") (td "65") (td "12%"))
+ (tr
+ (td "Write documentation") (td "38") (td "7%"))
+ (tr
+ (td "Quality Assurance (QA) and testing") (td "23") (td "4%"))
+ (tr
+ (td "Organise the project (e.g. mailing lists, infrastructure etc)") (td "16") (td "3%"))
+ (tr
+ (td "Localise and translate") (td "12") (td "2%"))
+ (tr
+ (td "Graphical design and User Experience (UX)") (td "2") (td "0.4%"))))
+ (p (em "Figure 15") " shows this as a pie chart (upping my game!):"
+ (figure
+ (img (@ (src "/static/blog/img/2024-guix-survey-gen-contribution-type.png")
+ (alt "2024 Guix user survey: GNU Guix types of contribution pie chart")
+ (style "width:100%;height:100%;")))
+ (figcaption (@ (style "font-weight:bold;")) "Figure 15: Guix contribution types")))
+ (p "Of course, the same person can contribute in multiple areas: as there were 531 responses to this question, from 355 participants, we can see that's happening.")
+ (p "Complex projects like Guix need a variety of contributions, not just code. Guix's web site needs visual designers who have great taste, and certainly a better sense of colour than mine! We need documentation writers to provide the variety of articles and how-tos that we've seen users asking for in the comments. The list goes on!")
+ (p "Unsurprisingly, Guix is code heavy with 60% of contributors focusing in this area, but it's great to see that there are people contributing across the project. Perhaps there's a role you can play? ... yes, you reading this post!")
+
+
+ (h3 "Paid vs unpaid contribution")
+ (p "FOSS projects exist on a continuum of paid and unpaid contribution. Many projects are wholly built by volunteers. Equally, there are many large and complex projects where the reality is that they're built by paid developers — after all, everyone needs to eat!")
+ (p "To explore this area the survey then asked (Q24), "
+ (b "Are you paid to contribute to Guix?"))
+ (p "The results show:")
+ (p
+ (table
+ (caption (b "Table 24: Contributor compensation"))
+ (tr
+ (th "Type of compensation") (th "Count") (th "Percentage"))
+ (tr
+ (td "I'm an unpaid volunteer") (td "328") (td "94%"))
+ (tr
+ (td "I'm partially paid to work on Guix (e.g. part of my employment or a small grant)") (td "19") (td "5%"))
+ (tr
+ (td "I'm full-time paid to work on Guix") (td "1") (td "0.3%"))
+ (tr
+ (td "No answer") (td "7") (td "N/A"))))
+ (p "We can see this as " (em "Figure 16") " :"
+ (figure
+ (img (@ (src "/static/blog/img/2024-guix-survey-gen-dev-pay.png")
+ (alt "2024 Guix user survey: GNU Guix developer compensation pie chart")
+ (style "width:100%;height:100%;")))
+ (figcaption (@ (style "font-weight:bold;")) "Figure 16: Guix developer compensation")))
+ (p "Some thoughts:"
+ (ul
+ (li "Guix is a volunteer driven project.")
+ (li "The best way to work on Guix professionally is to find a way to make it part of your employment.")
+ (li "For everyone involved in the project the fact that the majority of contributors are doing it in their spare time has to be factored into everything we do, and how we treat each other.")))
+
+
+ (h3 "Previous contributors")
+ (p "Ensuring contributors continue to be excited and active in the project is important for it's health. Ultimately, fewer developers means less can be done. In volunteer projects there's always natural churn as contributor's lives change. But, fixing any issues that discourages contributors is important for maintaining a healthy project.")
+ (p "Question 25 was targeted at the 59 participants who identified themselves as "
+ (em "Previous Contributors")
+ ". It asked, "
+ (b "You previously contributed to Guix, but stopped, why did you stop?"))
+ (p "The detailed results are:")
+ (p
+ (table
+ (caption (b "Table 25: Previous contributor analysis"))
+ (tr
+ (th "Category") (th "Count") (th "Percentage of Previous Contributors"))
+ (tr
+ (td "External circumstances (e.g. other priorities, not enough time, etc)") (td "28") (td "35%"))
+ (tr
+ (td "Response to contributions was slow and/or reviews arduous") (td "12") (td "15%"))
+ (tr
+ (td "The contribution process (e.g. email and patch flow)") (td "11") (td "14%"))
+ (tr
+ (td "Developing in Guix/Guile was too difficult (e.g. REPL/developer tooling)") (td "6") (td "8%"))
+ (tr
+ (td "Guix speed and performance") (td "3") (td "4%"))
+ (tr
+ (td "Project co-ordination, decision making and governance") (td "2") (td "3%"))
+ (tr
+ (td "Lack of appreciation, acknowledgement and/or loneliness") (td "2") (td "3%"))
+ (tr
+ (td "Negative interactions with other contributors (i.e. conflict)") (td "2") (td "3%"))
+ (tr
+ (td "Burnt out from contributing to Guix") (td "2") (td "3%"))
+ (tr
+ (td "Learning Guix internals was too complex (e.g. poor documentation)") (td "1") (td "1%"))
+ (tr
+ (td "Social pressure of doing reviews and/or turning down contributions") (td "1") (td "1%"))
+ (tr
+ (td "Other") (td "10") (td "13%"))))
+ (p (em "Figure 17") " shows this graphically:"
+ (figure
+ (img (@ (src "/static/blog/img/2024-guix-survey-gen-previous-contributor-reason.png")
+ (alt "2024 Guix user survey: GNU Guix previous contributors reasons for stopping pie chart")
+ (style "width:100%;height:100%;")))
+ (figcaption (@ (style "font-weight:bold;")) "Figure 17: Reasons for ceasing to contribute to Guix")))
+ (p "There were 80 answers from the 59 participants so some participants chose more than one reason.")
+ (p
+ (ul
+ (li "As we can see a change in external circumstances was the biggest reason and to be expected.")
+ (li "The next reason was "
+ (b "Response to contributions was slow and/or reviews arduous")
+ ", as we'll see this repeatedly showed-up as the biggest issue.")
+ (li "Next was "
+ (b "The contribution process (e.g. email and patch flow)")
+ " which also appears in many comments. Judging by the comments the email and patch flow may be a gateway factor that puts-off potential contributors from starting. There's no way for the survey to determine this as it only covers people that started contributing and then stopped, but the comments are interesting.")))
+
+
+ (h3 "Future contributions")
+ (p "Q26 asked contributors to grade their likelihood of contributing further, this is essentially a satisfaction score.")
+ (p "The question was, "
+ (b "If you currently contribute patches to Guix, how likely are you to do so in the future?"))
+ (p
+ (table
+ (caption (b "Table 26: Future contributions scoring"))
+ (tr
+ (th "Category") (th "Count") (th "Percentage"))
+ (tr
+ (td "Definitely not") (td "7") (td "2%"))
+ (tr
+ (td "Probably not") (td "34") (td "10%"))
+ (tr
+ (td "Moderately likely") (td "80") (td "23%"))
+ (tr
+ (td "Likely") (td "111") (td "31%"))
+ (tr
+ (td "Certain") (td "123") (td "35%"))))
+ (p (em "Figure 18") " shows this graphically:"
+ (figure
+ (img (@ (src "/static/blog/img/2024-guix-survey-gen-contributor-satisfaction.png")
+ (alt "2024 Guix user survey: Contributor satisfaction pie chart")
+ (style "width:100%;height:100%;")))
+ (figcaption (@ (style "font-weight:bold;")) "Figure 18: Contributor satisfaction")))
+ (p "Out of the audience of current and previous contributors, 355 in total:"
+ (ul
+ (li "The 35% of contributors who are 'Certain' they'll contribute is a great sign.")
+ (li "The 31% that are 'Likely' shows that there's a good pool of people who could be encouraged to continue to contribute.")
+ (li "We had 58 participants who categoried themselves as Previous Contributors and 41 answered this question with definitely or probably not, that's about 12%. That leaves the 80 (23%) who are loosely positive.")))
+
+ (h3 "Improving contribution")
+ (p "The survey then explored areas of friction for contributors. Anything that reduces friction should increase overall satisfaction for existing contributors.")
+ (p "The question (Q27) was, " (b "What would help you contribute more to the project?"))
+ (p
+ (table
+ (caption (b "Table 27: Contribution improvements"))
+ (tr
+ (th "Answer") (th "Count") (th "Percentage"))
+ (tr
+ (td "Timely reviews and actions taken on contributions") (td "203") (td "20%"))
+ (tr
+ (td "Better read-eval-print loop (REPL) and debugging") (td "124") (td "12%"))
+ (tr
+ (td "Better performance and tuning (e.g. faster guix pull)") (td "102") (td "10%"))
+ (tr
+ (td "Better documentation on Guix's internals (e.g. Guix modules)") (td "100") (td "10%"))
+ (tr
+ (td "Guidance and mentoring from more experienced contributors") (td "100") (td "10%"))
+ (tr
+ (td "Addition of a pull request workflow like GitHub/Gitlab") (td "90") (td "9%"))
+ (tr
+ (td "Improved documentation on the contribution process") (td "77") (td "8%"))
+ (tr
+ (td "Nothing, the limitations to contributing are external to the project") (td "65") (td "7%"))
+ (tr
+ (td "More acknowledgement of contributions") (td "40") (
This message was truncated. Download the full message here.
L
Closed
?
Your comment

Commenting via the web interface is currently disabled.

To comment on this conversation send an email to 75891@debbugs.gnu.org

To respond to this issue using the mumi CLI, first switch to it
mumi current 75891
Then, you may apply the latest patchset in this issue (with sign off)
mumi am -- -s
Or, compose a reply to this issue
mumi compose
Or, send patches to this issue
mumi send-email *.patch