Línea de tiempo del lenguaje de programación R

Breve historia de eventos relevantes en el desarrollo de R, su ecosistema y comunidades

27/8/2026

curiosidades

Por curiosidad, estaba buscando un poco sobre la historia del lenguaje R. Quería tener una mejor noción sobre la temporalidad del desarrollo de R y el crecimiento de su ecosistema y comunidades, para entender más o menos el orden de los hechos principales.

Encontré una línea de tiempo hecha por Jumping Rivers que me dio pie a iniciar una breve investigación cronológica. Luego, por casualidad, encontré el paquete {vistime} para hacer líneas de tiempo con {ggplot2}, Plotly o Highcharts, lo que simplificó mucho la visualización.

Siguiendo la estructura sugerida por el paquete {vistime}, en una tablita hecha con tribble() me puse a anotar todas las partes del ecosistema de R y las fechas de sus fundaciones.

Ver código de la tabla
library(dplyr)
Attaching package: 'dplyr'

The following objects are masked from 'package:stats':

    filter, lag

The following objects are masked from 'package:base':

    intersect, setdiff, setequal, union
library(lubridate)
Attaching package: 'lubridate'

The following objects are masked from 'package:base':

    date, intersect, setdiff, union
# fecha de hoy
presente <- today() |> as.character()

data <- tribble(
  ~event                  , ~start       , ~end         , ~group       ,
  "R"                     , "1993-08-01" , "2000-01-01" , "Software"   ,
  "R 1.0"                 , "2000-01-01" , "2004-01-01" , "Software"   ,
  "R 2.0"                 , "2004-01-01" , "2013-01-01" , "Software"   ,
  "R 3.0"                 , "2013-01-01" , "2020-01-01" , "Software"   ,
  "R 4.0"                 , "2020-01-01" , presente     , "Software"   ,
  "CRAN"                  , "1997-01-01" , presente     , "Ecosistema" ,
  "R Core Team"           , "1997-01-01" , presente     , "Organismos" ,
  "RStudio IDE"           , "2011-02-28" , presente     , "Ecosistema" ,
  "Positron IDE"          , "2025-08-14" , presente     , "Ecosistema" ,
  "R Markdown"            , "2014-01-01" , "2022-01-01" , "Ecosistema" ,
  "Quarto"                , "2022-01-01" , presente     , "Ecosistema" ,
  "Posit Assistant"       , "2026-04-01" , presente     , "Ecosistema" ,
  "Posit Package Manager" , "2017-11-20" , presente     , "Ecosistema" ,
  "Bioconductor"          , "2001-01-01" , presente     , "Ecosistema" ,
  "R-universe"            , "2021-01-01" , presente     , "Ecosistema" ,
  "R Foundation"          , "2003-01-01" , presente     , "Organismos" ,
  "RStudio Inc."          , "2009-01-01" , "2022-01-01" , "Organismos" ,
  "Posit PBC"             , "2022-01-01" , presente     , "Organismos" ,
  "rOpenSci"              , "2011-01-01" , presente     , "Comunidad"  ,
  "R Consortium"          , "2015-06-30" , presente     , "Organismos" ,
  "rstudio::conf"         , "2017-01-13" , "2023-09-17" , "Comunidad"  ,
  "posit::conf"           , "2023-09-17" , presente     , "Comunidad"  ,
  "Latin R"               , "2018-09-04" , presente     , "Comunidad"  ,
  "Conferencia uRos"      , "2013-01-01" , presente     , "Comunidad"  ,
  "Conferencia UseR!"     , "2004-04-20" , presente     , "Comunidad"  ,
  "ggplot2"               , "2007-01-01" , presente     , "Software"   ,
  "tidyverse"             , "2016-01-01" , presente     , "Software"   ,
  "dplyr"                 , "2014-01-07" , presente     , "Software"   ,
  "Shiny"                 , "2012-11-01" , presente     , "Software"   ,
  "RLadies"               , "2012-10-01" , "2025-03-01" , "Comunidad"  ,
  "RLadies+"              , "2025-03-01" , presente     , "Comunidad"
)

Los datos se ven así:

evento inicio final grupo
R 1993 2000 Software
R 1.0 2000 2004 Software
R 2.0 2004 2013 Software
ggplot2 2007 2026 Software
Shiny 2012 2026 Software
R 3.0 2013 2020 Software
dplyr 2014 2026 Software
tidyverse 2016 2026 Software
R 4.0 2020 2026 Software
R Core Team 1997 2026 Organismos
R Foundation 2003 2026 Organismos
RStudio Inc. 2009 2022 Organismos
R Consortium 2015 2026 Organismos
Posit PBC 2022 2026 Organismos
CRAN 1997 2026 Ecosistema
Bioconductor 2001 2026 Ecosistema
RStudio IDE 2011 2026 Ecosistema
R Markdown 2014 2022 Ecosistema
Posit Package Manager 2017 2026 Ecosistema
R-universe 2021 2026 Ecosistema
Quarto 2022 2026 Ecosistema
Positron IDE 2025 2026 Ecosistema
Posit Assistant 2026 2026 Ecosistema
Conferencia UseR! 2004 2026 Comunidad
rOpenSci 2011 2026 Comunidad
RLadies 2012 2025 Comunidad
Conferencia uRos 2013 2026 Comunidad
rstudio::conf 2017 2023 Comunidad
Latin R 2018 2026 Comunidad
posit::conf 2023 2026 Comunidad
RLadies+ 2025 2026 Comunidad

Luego agregué unas líneas para darle un color a cada grupo, y que los elementos dentro de cada grupo fueran cambiando levemente de color.

Ver código para crear colores
library(scales)
library(colorspace)

# paleta de colores base
colores <- colorspace::rainbow_hcl(6, c = 100, start = 190, end = 380)

# aplicar colores a grupos
data_color <- data |>
  mutate(
    color = recode_values(
      group,
      "Tidyverse" ~ colores[2],
      "Eventos" ~ colores[3],
      "Organismos" ~ colores[4],
      "Comunidad" ~ colores[1] |> col_shift(30),
      "Ecosistema" ~ colores[5] |> col_shift(-20),
      "Software" ~ colores[6] |> col_shift(-20)
    )
  )

# ordenar grupos
data_grupo <- data_color |>
  mutate(
    group = factor(
      group,
      c("Software", "Ecosistema", "Organismos", "Comunidad", "Tidyverse")
    )
  )

# cambio de colores de elementos por grupo
timeline_data <- data_grupo |>
  group_by(group) |>
  arrange(group, desc(start)) |>
  mutate(id = row_number()) |>
  mutate(id = id / sum(id)) |>
  mutate(
    color = col_lighter(color, id * 20), 
    color = col_saturate(color, -id * 90), 
    color = col_shift(color, -id * 380) 
  )

Finalmente se crea la línea de tiempo con la función gg_vistime() del paquete {vistime}:

library(ggplot2)
library(vistime)

# línea de tiempo
timeline <- timeline_data |>
  gg_vistime(
    linewidth = 6, 
    title = "Línea de tiempo del lenguaje R"
    )

Como se obtiene un gráfico ggplot, me puse a personalizar un poco la visualización para agregar cortes en los años relevantes, y cambiar un poco la apariencia.

Ver código
# cortes de fechas para el eje horizontal
años <- seq.Date(as_date("1993-01-01"), as_date("2026-01-01"), by = "years")

cortes <- c(
  as_date("1993-08-01"),
  seq.Date("1995-01-01", today(), by = "5 years"),
  today()
)

# cambiar la tipografía en los geom_text internos de la función gg_vistime()
update_geom_defaults(
  "text",
  list(family = "Atkinson Hyperlegible", lineheight = 0.8, size = 3)
)

# personalizar gráfico
timeline_2 <- timeline +
  scale_x_date(
    expand = expansion(c(0, 0.05)),
    minor_breaks = años,
    breaks = cortes,
    date_labels = "%Y"
  ) +
  geom_vline(xintercept = today(), linewidth = 0.4, alpha = 0.3) +
  scale_color_discrete(palette = "Dark2") +
  theme(
    text = element_text(family = "Atkinson Hyperlegible"),
    plot.title = element_text(face = "bold"),
    panel.grid.major.x = element_line(color = "#00000010"),
    axis.text.y = element_text(
      angle = 90,
      hjust = 0.5,
      face = "bold",
      margin = margin(r = 6)
    )
  )

Además, agregué anotaciones a varios de los elementos para destacarlos dentro de la visualización.

Ver código para las anotaciones
library(stringr)

# anotaciones
# función para extraer posición de eventos
evento <- function(evento = "ggplot2") {
  vistime_data(timeline_data) |>
    filter(event %in% evento)
}

# eventos que tendrán año destacado
eventos_año <- c(
  "CRAN",
  "R Foundation",
  "dplyr",
  "ggplot2",
  "RStudio IDE",
  "RStudio Inc.",
  "Conferencia UseR!",
  "RLadies",
  "R Core Team"
)

# anotaciones al lado izquierdo de eventos
eventos_texto <- tribble(
  ~event         , ~descripcion                                                                          , ~angosta ,
  "ggplot2"      , "Lanzamiento de la librería de visualización de datos {ggplot2}"                      , TRUE     ,
  "dplyr"        , "Aparece el paquete {dplyr} para simplificar el manejo de datos"                      , FALSE    ,
  "RLadies"      , "La comunidad se organiza para promover la inclusión y diversidad de género"          , FALSE    ,
  "RStudio IDE"  , "Lanzamiento del software RStudio"                                                    , FALSE    ,
  "R Markdown"   , "RMarkdown populariza el uso de R en la academia y las ciencias"                      , FALSE    ,
  "Latin R"      , "Primera conferencia latinoamericana de uso de R"                                     , FALSE    ,
  "R Consortium" , "Organización global para apoyar a desarrolladores/as, mantenedores/as y comunidades" , FALSE    ,
  "R Foundation" , "Organización de apoyo al Proyecto R"                                                 , FALSE    ,
  "R Core Team"  , "Grupo internacional de voluntarios/as para mantener y desarrollar el lenguaje"       , TRUE     ,
) |>
  left_join(
    vistime_data(timeline_data) |>
      select(event, y),
    join_by(event)
  ) |>
  arrange(desc(y))

# agregar anotaciones
timeline_3 <- timeline_2 +
  # marcar años de algunos eventos
  annotate(
    "text",
    hjust = 0,
    size = 2.4,
    label = year(evento(eventos_año)$start),
    x = evento(eventos_año)$start + months(2),
    y = evento(eventos_año)$y
  ) +
  # descripciones de eventos
  annotate(
    "text",
    hjust = 1,
    label = str_wrap(
      eventos_texto$descripcion,
      ifelse(eventos_texto$angosta, 30, 50)
    ),
    x = evento(eventos_texto$event)$start - months(2),
    y = evento(eventos_texto$event)$y
  ) +
  # anotaciones especiales
  annotate(
    "text",
    hjust = 0,
    vjust = 1,
    label = str_wrap(
      "El lenguaje de programación R es creado en la Universidad de Auckland, Nueva Zelanda",
      28
    ),
    x = evento("R")$start + months(3),
    y = evento("R")$y - 0.6
  ) +
  annotate(
    "text",
    hjust = 0,
    label = "R 4.6.1",
    x = evento("R 4.0")$end + months(2),
    y = evento("R 4.0")$y
  )

El resultado es la siguiente visualización en línea de tiempo:

There’s also an english version available:

Varias cosas me resultaron interesantes, como la varianza en el tiempo que dura cada versión mayor de R, la tardía introducción de RStudio, pero por sobre todo el hecho de que {dplyr}, un paquete que me parece fundamental, fue introducido después que {ggplot2} y {shiny}!

Puedes encontrar el código completo en este repositorio.

Fecha de publicación:
27/8/2026
Extensión:
7 minute read, 1452 words
Tags:
curiosidades
Ver también:
Sobre números pequeños y con muchos decimales
Tipografías lindas para programar en R: Fira Code
Temas morados oscuro y claro para RStudio