CRAN Task Views have been available on the Comprehensive R Archive Network since 2005. They provide guidance about which CRAN packages are relevant for tasks related to a certain topic, and can also facilitate automatic installation of all corresponding packages. Motivated by challenges from the growth of CRAN and the R community as a whole since 2005, all of the task view infrastructure and workflows were rethought and relaunched in 2021/22 in order to facilitate maintenance, and to foster deeper interactions with the R community. The redesign encompassed the establishment of a group of CRAN Task View Editors, moving all task view sources to dedicated GitHub repositories, adopting well-documented workflows with a code of conduct, and leveraging R/Markdown files (rather than XML) for the content of the task views.
The Comprehensive R Archive Network (CRAN, https://CRAN.R-project.org/), comprised of approximately one hundred mirror pages around the world along with a content-delivery network (CDN), is the canonical site for downloading not only the base R system (R Core Team 2025) but also more than twenty thousand extension packages (actually, 22765 at the time of writing) contributed by users from the R community. CRAN is a very useful resource within the R ecosystem, but its content can be hard to grasp and navigate. Especially users new to R can struggle with getting started and finding the relevant R packages for the tasks they want to accomplish.
To mitigate this problem, Zeileis (2005), in cooperation with the CRAN team, introduced “CRAN Task Views” that provide guidance about which CRAN packages are relevant for tasks related to a given topic. Task views offer a brief overview of the included packages on a dedicated CRAN page (see https://CRAN.R-project.org/web/views/ for an overview) and also enable the automatic installation of all packages from a task view using the ctv package (Zeileis and Hornik 2024). The views are intended to have a sharp focus so that it is sufficiently clear which packages should be included (or excluded). They are not meant to endorse the “best” packages for a given task but they can distinguish a shorter list of most relevant/important core packages from the remaining regular packages.
While CRAN Task Views alone were certainly not able to overcome all the challenges of navigating CRAN, they proved to be useful enough to be continued over the subsequent years. However, due to the growth of CRAN (see, e.g., Hornik et al. 2024) and of the R community as a whole since the introduction of task views in 2005, the thriving of the task views was limited by several design decisions regarding their format and the corresponding workflows:
This setup worked sufficiently well in 2005 when there were about 500 packages on CRAN and initially 4 task views, listing on average 20 packages each. (Within a year, the number of task views increased to 12.) But by now there are 48 task views, with median and mean numbers of CRAN packages covered 112 and 123, respectively. Overall, these task views cover 4941 CRAN packages, which is about 22% of all CRAN packages. This change in scope and scale necessitated a change in infrastructure and workflows that the new CRAN Task View Initiative, described in detail in the next section, aims to provide.
Motivated by the challenges from the growth of CRAN and the R community as a whole, almost all aspects of the CRAN Task Views were rethought and relaunched in 2021/22 in order to facilitate maintenance and foster more interactions with the R community. The important changes are:
CRAN-task-views@R-project.org
.cran-task-views
organization (rather than all in one repository), giving the maintainers more freedom
while preserving sufficient control for the editors. Also, separate projects
provide better visibility for each task view and a clearer separation of responsibilities.More details on the CRAN Task View Initiative are available in the GitHub repository https://github.com/cran-task-views/ctv. This provides an overview of the activities, detailed documentation, and the possibility to raise issues that concern the initiative as a whole (rather than individual task views).
The current CRAN Task View Editors are Roger Bivand, Dirk Eddelbuettel, Julia Piaskowski, Nathalie Vialaneix, and Achim Zeileis. Former contributors include: Henrik Bengtsson, Rocío Joo, David Meyer, and Heather Turner. The primary contributor from the CRAN team is Kurt Hornik.
First and foremost, the web page of each task view can be read by interested users (see Figure 1 for an example). The clear structure and focus of the task views should help the readers to quickly gain a first overview of a topic and to search for specific relevant packages more efficiently.
Figure 1: Screenshot of the header and introduction of the “Econometrics” task view.
Another benefit of task views that has probably been underappreciated for a long time is that they allow the easy installation of the associated packages (either all of them or just the core packages). The headers of all task view web pages now promote this possibility explicitly. To make use of this, the ctv package needs to be installed, e.g., via
install.packages("ctv")
The package provides the two functions install.views()
and update.views()
,
where the latter only installs those packages which are not installed and up-to-date.
For example, in order to install the full “Econometrics” task view either one of the
following two calls can be used:
ctv::install.views("Econometrics")
ctv::update.views("Econometrics")
Moreover, two functions are provided for querying the information from task views
from within R. First, information on a single task view can be obtained with the
ctv()
function.
ctv::ctv("Econometrics")
CRAN Task View
--------------
Name: Econometrics
Topic: Econometrics
Maintainer: Achim Zeileis, Grant McDermott, Kevin Tappe
Contact: Achim.Zeileis@R-project.org
Version: 2025-09-01
Repository: https://CRAN.R-project.org
Source: https://github.com/cran-task-views/Econometrics/
Packages: AER*, aod, apollo, apt, bacondecomp, bayesm, betareg,
bimets, BMA, BMS, boot, bootstrap, brglm, CADFtest, car*,
...
To list all task views available from CRAN, the function available.views()
can
be used:
ctv::available.views()
CRAN Task Views
---------------
Name: ActuarialScience
Topic: Actuarial Science
Maintainer: Christophe Dutang, Vincent Goulet
Repository: https://CRAN.R-project.org
---------------
Name: Agriculture
Topic: Agricultural Science
Maintainer: Julia Piaskowski, Adam Sparks, Adrian Correndo
Repository: https://CRAN.R-project.org
---------------
...
The objects returned by ctv()
and available.views()
include additional
information which is not shown by the print()
method. This may be useful
for more specific computations based on the task views. For example, a
citation
object (Hornik et al. 2012) can be obtained from the list returned by ctv()
.
ctv::ctv("Econometrics")$citation
Zeileis A, McDermott G, Tappe K (2025). _CRAN Task View:
Econometrics_. Version 2025-09-01,
<https://CRAN.R-project.org/view=Econometrics>.
A BibTeX entry for LaTeX users is
@Manual{,
author = {Achim Zeileis and Grant McDermott and Kevin Tappe},
title = {CRAN Task View: Econometrics},
year = {2025},
note = {Version 2025-09-01},
url = {https://CRAN.R-project.org/view=Econometrics},
}
Users from the R community can contribute in two ways to the CRAN Task View Initiative: They can either provide suggestions for an existing task view, or they can propose a new one on a topic that is not yet covered. In either case, all contributions must be made under the code of conduct.
Contributions to existing task views are welcome, encouraged, and in fact crucial for keeping the task views up to date. Typical contributions would be improvements in existing content (e.g., adding details, clarifications, or corrections) or suggestions of additional content (e.g., packages or links). To facilitate such contributions, each task view includes the e-mail address of the principal maintainer as well as a link to the associated GitHub repository. Thus, contributors can choose the most convenient alternative among the following ones:
To avoid having a pull request become more involved or disruptive, it is frequently suggested to first discuss proposed changes by raising an issue, and to make sure that the modified task view file still works correctly (see Section 6).
For proposing new task views, the CRAN Task View Initiative provides a standardized workflow including a review and onboarding process. All steps are detailed at https://github.com/cran-task-views/ctv/blob/main/Proposal.md. In the following, we just outline the essential aspects.
First, it is important that the prospective maintainers consider the time and work that is required to put together a proposal, to refine it during the review and onboarding process, and most importantly to actively maintain the task view in the future.
Second, a fundamental and very crucial step is to formulate the topic of the new task view so that it has a clear scope that is neither too narrow nor too wide. The goal is not to cover “every package” remotely related to the topic but rather the set of packages that clearly fall within the scope. The coverage should be similar to what an introductory text book on the topic would cover. Non-CRAN packages may also be included but the focus of CRAN task views should be packages on CRAN (as the name conveys). Finally, task views should not rate the packages or endorse certain “best” packages but rather give an overview of what is available. A bit of emphasis to the more important packages can be given in two ways: (a) The most important packages can be flagged as core packages. (b) In the information text the more important packages can be listed first in the respective sections.
Third, based on the information formulated as outlined above, the proposal can be
made in the GitHub issues of the ctv
repository. This initiates a first review
that is carried out in the comments of the issue tracker which are open to all
members of the community. In all cases, the CRAN Task View Editors are explicitly
invited to comment, as may be maintainers of related task views or of relevant core
packages etc. Provided that there is sufficient endorsement from the CRAN Task View
Editors, typically after revisions and refinements from the prospective maintainers,
a proposal is accepted, initiating an onboarding process that leads to the publication
of the task view on CRAN.
Finally, the maintainers of the task view are responsible for keeping it up to date by checking CRAN regularly. Contributions from the community, as described at the beginning of this section, are eminently useful for this and hence explicitly encouraged. Moreover, some R packages like CTVsuggest (Dijk 2023) can support the maintainers in discovering new relevant packages on CRAN.
The CRAN packages listed in task views should ideally be maintained actively,
so that improved versions are released by the corresponding maintainers in case
the daily CRAN checks discover any issues.
However, it is not straightforward to test for active maintenance fully automatically
and even actively maintained packages may be temporarily archived on
CRAN. Hence, the following strategy is adopted within the CRAN Task View
Initiative: When a CRAN package from a task view is archived, it is still listed in the
task view like before. It is only flagged as archived in the text and is not
installed automatically anymore by install.views()
and update.views()
.
This strategy gives both the package maintainers and the task view maintainers some time to resolve the situation. Specifically, the task view maintainers can decide whether to
To help discovering archived packages and initiating one of the actions above, the CRAN team regularly checks whether any task view contains packages that have been archived on CRAN for 60 days or more. If so, they create an issue in the corresponding task view repository.
After the period of grace (100 days) ends, the situation should be resolved by the task view maintainers, typically by excluding packages that are still archived from the task view. For sufficiently relevant packages, it may be sensible to replace the package listing by a link, e.g., to a GitHub repository for the package.
The file format for CRAN task views leverages the R/Markdown format (Xie et al. 2018)
so that standard Markdown can be used for formatting and structuring the
text and a handful of special R functions are provided to link to CRAN
packages, other task views, GitHub projects, etc.
The format is mostly self-explanatory and is illustrated below using an
excerpt from the Econometrics
task view:
---
name: Econometrics
topic: Econometrics
maintainer: Achim Zeileis, Grant McDermott, Kevin Tappe
email: Achim.Zeileis@R-project.org
version: 2025-04-01
source: https://github.com/cran-task-views/Econometrics/
---
Base R ships with a lot of functionality useful for (computational) econometrics,
in particular in the stats package. This functionality is complemented by many
packages on CRAN, a brief overview is given below. There is also a certain
overlap between the tools for econometrics in this view and those in the task
views on `r view("Finance")`, `r view("TimeSeries")`, and
`r view("CausalInference")`.
Further information can be formatted with standard Markdown syntax, e.g., for
_emphasizing text_ or showing something really important in **bold face**.
R/Markdown syntax with special functions can be used to link to a standard
package like `r pkg("mlogit")` or an important "core" package like
`r pkg("AER", priority = "core")`.
### Links
- [The Title of a Relevant Homepage](http://path/to/homepage/)
The document structure consists of three main blocks: (a) Some metainformation
is given in the YAML header at the beginning (separated by lines with ---
),
followed by (b) the information in the main text, and (c) a concluding special
section called ### Links
. Details are explained in the official documentation:
https://github.com/cran-task-views/ctv/blob/main/Documentation.md.
The information in the main text should be a short description of the packages,
explaining which packages are useful for which tasks. Additionally, short R code
chunks with special functions are used for linking to CRAN resources:
pkg()
for regular packages, pkg(..., priority = "core")
for important core
packages, and view()
for related task views. Moreover, code projects in other
repositories can be linked by dedicated functions, e.g., bioc()
or
github()
for packages on Bioconductor or GitHub, respectively.
In order to check whether a task view file has been formatted properly it can be read into
R and rendered to HTML (see also Figure 1) which can be opened and inspected in a browser. Additionally,
the function check_ctv_packages()
can be used to check whether some of the listed
packages are actually not available on CRAN or not currently maintained
(archived). The functions are illustrated below, assuming that the Econometrics.md
file is in the local working directory:
ctv::ctv2html("Econometrics.md", cran = TRUE)
browseURL("Econometrics.html")
ctv::check_ctv_packages("Econometrics.md")
Note that the extension .md
(rather than .Rmd
) has been adopted for the files
so that GitHub renders a Markdown preview on the fly. Finally, in case the maintainers
of a task view want to leverage GitHub Actions, a validate-ctv
workflow is
provided at https://github.com/cran-task-views/ctv/tree/main/validate-ctv which
runs the functions above and processes the results.
Currently, there are 48 task views on CRAN with the following names and maintainers:
The new CRAN Task View Initiative has redesigned and relaunched the infrastructure and workflows for CRAN Task Views so that they can thrive in the years to come. In particular, many tools are used that are well-established in the R community such as knitr/rmarkdown or collaborations through GitHub projects. Moreover, various steps have been taken in order to assure that all task views are actively maintained and foster contributions from the community, either in terms of additions/improvements for existing task views, or in the form of new proposals.
Since announcing the new initiative in Spring 2022, many task views were already improved, e.g., by adding new content, extending the maintainer teams, or incorporating feedback from the community. Additionally, there were already twelve successful new task view proposals (ActuarialScience, Agriculture, CausalInference, CompositionalData, DynamicVisualizations, Epidemiology, MixedModels, NetworkAnalysis, Omics, Paleontology, Phylogenetics, SportsAnalytics). This shows that the review and onboarding process for the new task views works successfully. While the review and revision times are sometimes somewhat long (as the work on the task views is typically not a top priority in the jobs of either the editors or the task view authors), we feel that the reviews are very constructive, often involve other community members, and yield task views of higher quality.
While these steps already accomplished important improvements in the initiative, further challenges remain for the future. Apart from improving the breadth and depth of the task views, the most important aim is probably to better connect with those R users who would profit from the information provided in the task views. We feel that this was easier in the mid-2000s for two reasons:
CRAN (and hence its task views) were actively browsed/searched by many R users, whereas today many more users will expect that useful content is presented to them, e.g., via either search engines or large language models.
Twenty years ago, the R community was smaller, and there was a common understanding of “free” software as a contract between developers and users to actively share in the progress of a given project (as in the spirit of the “Debian Social Contract”, see https://www.debian.org/social_contract, especially point 2). Since then the R community has grown in size and complexity, the typical career paths of new members have changed, and R is increasingly perceived as one among many free-of-charge software applications. But in contrast to R, most of the other free-of-charge software is actually paid for by surrendering data, not by sharing a responsibility for the progress of the project.
Both of these points have probably affected the expectations of users with regard to how much effort to apply to learning about the software they have chosen to use (but which they are not purchasing). This needs to be taken into account in further improvement of the effectiveness of task views. Therefore, one goal is to improve discoverability, including tags for search engine optimization, and prompts for chatbots based on large language models (LLMs). In terms of tags, DublinCore and Highwire Press metainformation tags have already been added to the HTML pages. In terms of LLM-based chatbots, it appears that prompts such as “Where can I find more information on R packages for X?”, where X is (closely related to) a task view topic, typically links to the corresponding CRAN Task Views.
Another goal is to better connect with those sub-communities for whom the task views are relevant. This could be accomplished by including more representatives from these sub-communities in broader teams of task view maintainers, in order to restore the open source social contract and sharing the responsibility for the task views. Moreover, listing the task views in more online overviews/tutorials geared towards these different sub-communities would help to spread the information.
We end with a call to the R community to support us in accomplishing these goals:
If you find task views useful, pass on the information to your colleagues and students. For example by including links in tutorials or course materials or by spreading the word on your social media channels.
If task views have been useful for you, e.g., for improving the set of tools for research projects, consider citing the relevant task views in the resulting manuscripts.
If you have ideas for improving task views, please let us know as described in Section 4. Suggestions regarding the task view infrastructure in general are very welcome as are concrete ideas for the different existing task views.
If you are interested in establishing a task view on a new topic in your field, recruit contributors and submit a proposal (as outlined in Section 4).
Any of the above are highly appreciated and would help us and the maintainers of CRAN Task Views to continue to aid R users and developers in making topical and informed choices about the R packages in their workflows.
Text and figures are licensed under Creative Commons Attribution CC BY 4.0. The figures that have been reused from other sources don't fall under this license and can be recognized by a note in their caption: "Figure from ...".
For attribution, please cite this work as
Zeileis, et al., "The CRAN Task View Initiative", The R Journal, 2025
BibTeX citation
@article{RJ-2025-011, author = {Zeileis, Achim and Bivand, Roger and Eddelbuettel, Dirk and Hornik, Kurt and Piaskowski, Julia and Vialaneix, Nathalie}, title = {The CRAN Task View Initiative}, journal = {The R Journal}, year = {2025}, note = {https://doi.org/10.32614/RJ-2025-011}, doi = {10.32614/RJ-2025-011}, volume = {17}, issue = {2}, issn = {2073-4859}, pages = {4-14} }