Commit 1eace781 authored by Greg Sutcliffe's avatar Greg Sutcliffe

First page of graphs

parent 0911b76f
.Rproj.user
.Rhistory
.RData
.Ruserdata
RepData_PeerAssessment1
---
title: "2018 Foreman Community Survey"
output:
html_document:
keep_md: true
fig_width: 9
fig_height: 4
---
```{r globals, include=FALSE}
knitr::opts_chunk$set(echo=FALSE,
dev='svg')
library(dplyr)
library(lubridate)
library(ggplot2)
library(gridExtra)
library(forcats)
```
```{r load_data}
raw_csv <- read.csv('./Foreman Community Survey 2018.csv')
```
As with previous years, we ran a Foreman Community Survey in order to give you
all the opportunity to tell us how we're doing - where it's good, and where
it's bad. That survey closed a while ago, and I'm here to show you the results.
Firstly - **thank you** to all those who filled out the survey. We kept the same
multi-page format since it seems to work, and even without prize incentives, we
got over 160 responses! You're all legends :)
<!--more-->
If you've seen the previous community survey analysis posts, you'll note the
style is a bit different this year (notably, no pie charts, since bar charts can
convey the data better and make for easier comparisons). That's because I'm
using R and R-Markdown to write the report with the code embedded, and you can
find the RMarkdown [here](TODO-url) if you want to check my working.
## <a name="intro"></a>Contents
* [Intro](/2017/03/2017-foreman-survey-analysis.html#intro)
* [Page 1 - Community and Core](/2017/03/2017-foreman-survey-analysis.html#page1)
* [Page 2 - Plugins, Compute, API](/2017/03/2017-foreman-survey-analysis.html#page2)
* [Page 3 - Smart Proxy & Content](/2017/03/2017-foreman-survey-analysis.html#page3)
* [Page 4 - Development & Contributing](/2017/03/2017-foreman-survey-analysis.html#page4)
* [Final thoughts](/2017/03/2017-foreman-survey-analysis.html#final-thoughts)
The same page-by-page analysis still works, so let's get to it with:
## <a name="page1"></a>Community Metrics & Core
```{r how-long}
data <- tibble(howlong = factor(raw_csv$How.long.have.you.been.using.Foreman.,
levels = c('3 months ago','6 months ago','1 year ago','2 years ago','3 years ago or more'))) %>%
group_by(howlong) %>%
summarise(n=n()) %>%
mutate(perc = round((n / sum(n))*100,2))
levels(data$howlong) <- c('3 months','6 months','1 year','2 years','3 years')
plot1 <- ggplot(data, aes(x = howlong, y = perc, label = perc, fill = howlong)) +
geom_bar(stat = 'identity') +
geom_text(size = 3, position = position_stack(), vjust = -0.5) +
labs(x = "", y = "Percent of replies") +
ggtitle(" Time in community") + expand_limits(y=45) +
theme(legend.position = "none", plot.title = element_text(margin = margin(b = -20)))
data <- tibble(version = raw_csv$What.Foreman.version.are.you.using.) %>%
group_by(version) %>%
summarise(n=n()) %>%
mutate(perc = round((n / sum(n))*100,2))
plot2 <- ggplot(data, aes(x = version, y = perc, label = perc, fill = version)) +
geom_bar(stat = 'identity') +
geom_text(size = 3, position = position_stack(), vjust = -0.5) +
labs(x = "", y = "Percent of replies") +
ggtitle(" Current Foreman\n version") + expand_limits(y=55) +
theme(legend.position = "none", plot.title = element_text(margin = margin(b = -40)))
grid.arrange(plot1, plot2, ncol=2)
```
For age, we see a 10% jump in the 3+ year group here, and a corresponding drop (8% each)
in the 3 and 6 month groups. This is worrying, it suggests that we need to look
at better promotion of Foreman, new user experience (both in terms of UX, and
also support) and user retention.
For version information, this is even better than last year - over half the
community on the latest version! However, this is a little misleading. Last year
the survey happened just a few weeks after 1.14 was released, but 1.16 has been
out quite a while (indeed 1.17 came out just after it ended). Additionally, 1.16
was quite delayed, and many people were very keen to get some of the new
features, so we expect high adoption anyway.
A more concrete measure is that the amount of people running an unsupported
version (`$latest.major-2` or older) has decreased by over half (27% last year
to 11% this year). That's good news!
```{r hardware}
# TODO - need to melt the raw_csv$What.hardware.do.you.run.Foreman.on. column into proper observations
```
```{r nodes}
data <- tibble(nodes = factor(raw_csv$How.many.nodes.do.you.manage.with.Foreman.,
levels = c('0 - 9','10 - 49','50 - 199','200 - 599',
'600 - 999','1,000 - 9,999','10,000 - 19,999','20,000+'))) %>%
group_by(nodes) %>%
summarise(n=n()) %>%
mutate(perc = round((n / sum(n))*100,2))
levels(data$nodes) <- c('0 - 9','10+','50+','200+','600+','1,000+','10,000+','20,000+')
plot1 <- ggplot(data, aes(x = nodes, y = perc, label = perc, fill = nodes)) +
geom_bar(stat = 'identity') +
geom_text(size = 3, position = position_stack(), vjust = -0.5) +
labs(x = "", y = "Percent of replies") +
ggtitle(" Number of\n hosts") + expand_limits(y=30) +
theme(legend.position = "none", plot.title = element_text(margin = margin(b = -40)))
data <- tibble(ppl = factor(raw_csv$How.many.people.use.Foreman.in.your.organization,
levels = c('1 - 4','5 - 9','10 - 49','50+'))) %>%
group_by(ppl) %>%
summarise(n=n()) %>%
mutate(perc = round((n / sum(n))*100,2))
plot2 <- ggplot(data, aes(x = ppl, y = perc, label = perc, fill = ppl)) +
geom_bar(stat = 'identity') +
geom_text(size = 3, position = position_stack(), vjust = -0.5) +
labs(x = "", y = "Percent of replies") +
ggtitle("Number of users ") + expand_limits(y=55) +
theme(legend.position = "none", plot.title = element_text(hjust = 1,margin = margin(b = -20)))
grid.arrange(plot1, plot2, ncol=2)
```
Nodes are interesting. We see a 10% *drop* in the 10-49 group, and a
corresponding 9% increase in the 200-599 group. Is this because we scale better?
Or, combining with the first graph (how our community is aging) perhaps this is
driven by older users bringing more nodes under Foreman's control? Hard to say.
I'm also happy to see some small upticks in the 600+ and 1,000+ groups, as we've
spent significant effort on performance this year. It's nice to see that
reflected (however minutely) in the results.
The users graph is less interesting - broadly this is the same as last year.
```{r}
# Foreman servers
data1 <- raw_csv$In.your.Foreman.deployment..what.operating.system.do.most.of.your.Foreman.servers.use.
data1 <- as.factor(unlist(strsplit(as.character(data1),split = ";"))) %>% # Split semicolon data
fct_collapse(
Windows = c('Windows','Windows Server 2016','windows 2012'),
Ubuntu = 'Ubuntu Server') %>% # Collapse variants
fct_lump(n=6)
data1 <- as_tibble(data1) %>%
group_by(value) %>%
summarise(n=n()) %>%
mutate(perc = round((n / sum(n))*100,2), type = 'Foreman')
# Hosts
data2 <- raw_csv$In.your.Foreman.deployment..what.operating.system.do.most.of.your.Hosts.use.
data2 <- as.factor(unlist(strsplit(as.character(data2),split = ";"))) %>%
fct_collapse(
Windows = c('Windows','Windows Server 2016','Windows Server / Deskop','Microsoft Windows'),
Ubuntu = c('Ubuntu Server','Ubuntu Desktop','Ubuntu Desktop/Workstation')) %>%
fct_lump(n=6)
data2 <- as_tibble(data2) %>%
group_by(value) %>%
summarise(n=n()) %>%
mutate(perc = round((n / sum(n))*100,2), type = 'Host')
data <- rbind(data1,data2)
ggplot(data, aes(x = value, y = perc, label = perc, fill = type)) +
geom_bar(stat = 'identity', position = 'dodge') +
geom_text(size = 3, position = position_dodge(0.9), vjust = -0.5) +
labs(x = "", y = "Percent") +
ggtitle("OS choices ") + expand_limits(y=45) +
theme(legend.position = "none", plot.title = element_text(hjust = 1,margin = margin(b = -20)))
```
```{r geography}
# Need to convert "sweden" and "Europe and North America" to the more useful groups
# We have 1 of each, so add 2 'Europe' rows and 1 'North America'
data <- tibble(geo = raw_csv$What.geographical.region.are.you.in.) %>%
add_row(geo = c('Europe','Europe','North America')) %>%
filter(geo != 'sweden' & geo != 'Europe and North America') %>%
group_by(geo) %>%
summarise(n=n()) %>%
mutate(perc = round((n / sum(n))*100,2))
ggplot(data, aes(x = geo, y = perc, label = perc, fill = geo)) +
geom_bar(stat = 'identity') +
geom_text(size = 3, position = position_stack(), vjust = -0.5) +
labs(x = "", y = "Percent of replies") +
ggtitle(" Geographical Region") + expand_limits(y=75) +
theme(legend.position = "none", plot.title = element_text(margin = margin(b = -20), hjust = 1))
```
This one isn't a surprise, we know our userbase is mostly in Europe. Apparently
our team in India didn't fill out the survey... ;)
```{r overall}
overall <- as_tibble(raw_csv$Overall..how.well.does.Foreman.meet.your.requirements.)
overall <- as_tibble(overall$value[!is.na(overall$value)])
overall <- overall %>%
group_by(value) %>%
summarise(n=n()) %>%
add_row(value = 1, n = 0, .before = 1) %>%
mutate(perc = round((n / sum(n))*100,2))
ggplot(overall, aes(x = value, y = perc, label = perc, fill = value)) +
geom_bar(stat = 'identity') +
geom_text(size = 3, position = position_stack(), vjust = -0.5) +
labs(x = "", y = "Percent of replies") +
ggtitle(" Overall Rating 1-5\n (5 is best)") + expand_limits(y=55) +
theme(legend.position = "none", plot.title = element_text(margin = margin(b = -40)))
```
Very similar to last year, 78% of the community give us 4+ on this. Thanks for
the positive vibes, everyone!
This diff is collapsed.
---
title: "2018 Foreman Community Survey"
output:
html_document:
keep_md: true
fig_width: 9
fig_height: 4
---
As with previous years, we ran a Foreman Community Survey in order to give you
all the opportunity to tell us how we're doing - where it's good, and where
it's bad. That survey closed a while ago, and I'm here to show you the results.
Firstly - **thank you** to all those who filled out the survey. We kept the same
multi-page format since it seems to work, and even without prize incentives, we
got over 160 responses! You're all legends :)
<!--more-->
If you've seen the previous community survey analysis posts, you'll note the
style is a bit different this year (notably, no pie charts, since bar charts can
convey the data better and make for easier comparisons). That's because I'm
using R and R-Markdown to write the report with the code embedded, and you can
find the RMarkdown [here](TODO-url) if you want to check my working.
## <a name="intro"></a>Contents
* [Intro](/2017/03/2017-foreman-survey-analysis.html#intro)
* [Page 1 - Community and Core](/2017/03/2017-foreman-survey-analysis.html#page1)
* [Page 2 - Plugins, Compute, API](/2017/03/2017-foreman-survey-analysis.html#page2)
* [Page 3 - Smart Proxy & Content](/2017/03/2017-foreman-survey-analysis.html#page3)
* [Page 4 - Development & Contributing](/2017/03/2017-foreman-survey-analysis.html#page4)
* [Final thoughts](/2017/03/2017-foreman-survey-analysis.html#final-thoughts)
The same page-by-page analysis still works, so let's get to it with:
## <a name="page1"></a>Community Metrics & Core
![](InitialAnalysis_files/figure-html/how-long-1.svg)<!-- -->
For age, we see a 10% jump in the 3+ year group here, and a corresponding drop (8% each)
in the 3 and 6 month groups. This is worrying, it suggests that we need to look
at better promotion of Foreman, new user experience (both in terms of UX, and
also support) and user retention.
For version information, this is even better than last year - over half the
community on the latest version! However, this is a little misleading. Last year
the survey happened just a few weeks after 1.14 was released, but 1.16 has been
out quite a while (indeed 1.17 came out just after it ended). Additionally, 1.16
was quite delayed, and many people were very keen to get some of the new
features, so we expect high adoption anyway.
A more concrete measure is that the amount of people running an unsupported
version (`$latest.major-2` or older) has decreased by over half (27% last year
to 11% this year). That's good news!
![](InitialAnalysis_files/figure-html/nodes-1.svg)<!-- -->
Nodes are interesting. We see a 10% *drop* in the 10-49 group, and a
corresponding 9% increase in the 200-599 group. Is this because we scale better?
Or, combining with the first graph (how our community is aging) perhaps this is
driven by older users bringing more nodes under Foreman's control? Hard to say.
I'm also happy to see some small upticks in the 600+ and 1,000+ groups, as we've
spent significant effort on performance this year. It's nice to see that
reflected (however minutely) in the results.
The users graph is less interesting - broadly this is the same as last year.
![](InitialAnalysis_files/figure-html/unnamed-chunk-1-1.svg)<!-- -->
![](InitialAnalysis_files/figure-html/geography-1.svg)<!-- -->
This one isn't a surprise, we know our userbase is mostly in Europe. Apparently
our team in India didn't fill out the survey... ;)
![](InitialAnalysis_files/figure-html/overall-1.svg)<!-- -->
Very similar to last year, 78% of the community give us 4+ on this. Thanks for
the positive vibes, everyone!
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
Version: 1.0
RestoreWorkspace: Default
SaveWorkspace: Default
AlwaysSaveHistory: Default
EnableCodeIndexing: Yes
UseSpacesForTab: Yes
NumSpacesForTab: 2
Encoding: UTF-8
RnwWeave: Sweave
LaTeX: pdfLaTeX
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment