86 lines
3.1 KiB
R
86 lines
3.1 KiB
R
library(tidyverse)
|
|
library(dplyr)
|
|
library(lubridate)
|
|
library(stringr)
|
|
c1_event_date <- as.Date("2013-07-01")
|
|
c2_event_date <- as.Date("2013-08-28")
|
|
c3_event_date <- as.Date("2015-07-02")
|
|
relative_week <- function(date, ref_date) {
|
|
as.integer(as.numeric(difftime(date, ref_date, units = "days")) %/% 7)
|
|
}
|
|
#get count data for the repositories
|
|
ve_csv <-"~/121325_work/121225_vd_data/extension_VisualEditor_2000-01-01_to_2016-12-31.csv"
|
|
ve_df <- read.csv(ve_csv, header = TRUE)
|
|
ve_df <- ve_df |>
|
|
mutate(commit_date = ymd_hms(commit_date)) |>
|
|
mutate(isAuthorWMF = case_when(
|
|
grepl("krinkle@fastmail\\.com", author_email, ignore.case = TRUE) ~ "TRUE",
|
|
grepl("@wikimedia\\.org", author_email, ignore.case = TRUE) ~ "TRUE",
|
|
grepl("@wikimedia\\.de", author_email, ignore.case = TRUE) ~ "TRUE",
|
|
grepl("@gerrit\\.wikimedia\\.org", author_email, ignore.case = TRUE) ~ "Gerrit",
|
|
TRUE ~ "FALSE"
|
|
))|>
|
|
group_by(author_email) |>
|
|
mutate(
|
|
isFirstCommit = commit_date == min(commit_date)
|
|
) |>
|
|
ungroup()
|
|
|
|
ve_counts <- ve_df |>
|
|
mutate(week_index = relative_week(commit_date, c1_event_date)) |>
|
|
group_by(week_index, isAuthorWMF, isFirstCommit)|>
|
|
summarise(count = n(), .groups = 'drop')|>
|
|
filter(week_index >= -33 & week_index <= 13) |>
|
|
mutate(source = 'c1')
|
|
|
|
ve_counts <- ve_counts |>
|
|
filter(isAuthorWMF != "Gerrit")|>
|
|
filter(source == 'c1')
|
|
|
|
ve_new_commits_created <- ggplot(
|
|
ve_counts,
|
|
aes(
|
|
x=week_index,
|
|
y=count,
|
|
fill=isAuthorWMF,
|
|
color=isFirstCommit
|
|
)
|
|
) +
|
|
facet_grid(source ~ .,
|
|
scales = "free_y",
|
|
labeller = labeller(source = c("c1" = "VisualEditor",
|
|
"c2" = "HTTPS-login",
|
|
"c3" = "HTTP-deprecation"))) +
|
|
geom_col(position = position_dodge(width = 0.9), width = 0.8) +
|
|
geom_vline(data = ve_counts |> filter(source == "c1"),
|
|
aes(xintercept = -29),
|
|
linetype = "dotted", color = "black", linewidth = 0.5) +
|
|
geom_vline(data = ve_counts|> filter(source == "c1"),
|
|
aes(xintercept = -9),
|
|
linetype = "dotted", color = "black", linewidth = 0.5) +
|
|
geom_vline(data = ve_counts |> filter(source == "c1"),
|
|
aes(xintercept = -4),
|
|
linetype = "3313", color = "black", linewidth = 0.5) +
|
|
geom_vline(xintercept = 0, linetype = "dashed", color = "black", linewidth = 0.5) +
|
|
geom_text(
|
|
data = subset(ve_counts, source == "c1" & week_index == 6),
|
|
aes(x=week_index, y=120, label='Opt-out deployment'),
|
|
size = 2.5) +
|
|
geom_text(
|
|
data = subset(ve_counts, source == "c1" & week_index == -33),
|
|
aes(x=week_index, y=120, label='Opt-in Testing'),
|
|
size = 2.5) +
|
|
geom_text(
|
|
data = subset(ve_counts, source == "c1" & week_index == -12),
|
|
aes(x=week_index, y=20, label='Deployment Announcement'),
|
|
size = 2.5) +
|
|
theme_minimal() +
|
|
scale_fill_viridis_d() +
|
|
labs(
|
|
x = "Weeks from Feature Deployment",
|
|
y = "Count of mediawiki/core commits Created",
|
|
fill = "Commit Author Affiliated with WMF?"
|
|
) +
|
|
theme(legend.position = "top")
|
|
ve_new_commits_created
|