Initial applications are closed

The deadline to create an initial application has passed for the May 2024 to August 2024 Outreachy internships. We are no longer accepting initial applications for internships. We encourage you to sign up for the announcements mailing list to get an email when the next round opens.

Why apply to Outreachy? > Outreachy Eligibility Rules > Find a Mentor and Internship Project

Outreachy May 2024 to August 2024 Internships

Timeline

Jan. 8, 2023 at 3pm UTCCoffee chat: Starting a career in open source
Jan. 15, 2024 at 4pm UTCInitial applications open
Jan. 15, 2024 at 3pm UTCLive Q&A for FOSS communities mentoring Outreachy interns
Jan. 17, 2024 at 3pm UTCLive Q&A for Outreachy applicants - initial application tips
Jan. 22, 2024 at 3pm UTCLive Q&A for Outreachy mentors
Feb. 21, 2024 at 3pm UTCLive Q&A for Outreachy applicants - contribution period tips
Jan. 29, 2024 at 4pm UTCInitial application deadline
March 8, 2024Project list finalized
March 4, 2024 at 4pm UTCInitial application results available
March 4, 2024 to April 2, 2024Contribute to projects
April 2, 2024
at 4pm UTC
Final application deadline
May 1, 2024 at 4pm UTCAccepted interns announced
May 27, 2024
to Aug. 23, 2024
Internships period

Documentation

Applicant guide and Internship guide. Recommended sections to read:

Project skills key

Each project will require a different level of experience with different skills.

Experience level: You do not need to be an expert to apply. Each project will need a different skill experience level:

No knowledge required
Concepts
Experimented
Comfortable
Challenge

Required skills: You don't need to have all project skills in order to apply. Each project skill will be listed as:

Required Mentors will only select you as an intern if you have this skill
Preferred Mentors prefer to select an intern who has this skill, but they may select you if you don't have this skill
Nice to have Mentors will select you, even if you don't have this skill

If you're unsure whether you have the project skills needed, reach out the mentor via email and ask them. It's better to ask than to not apply!

Outreachy Open Projects

Outreachy is offering internship projects in the following areas:

Final Applications Due April 2, 2024 at 4pm UTC

The following projects are accepting contributions and applications from new applicants until April 2, 2024 at 4pm UTC.


caMicroscope - 1 intern

An Open-Source Platform for Biomedical Image and Data Analysis

Project details are hidden.The details may be hidden because you are not logged in. See the message in the box at the top of the page.

caMicroscope project #1

Accessibility Testing and Improvement for Biomedical Imaging

Project details are hidden.The details may be hidden because you are not logged in. See the message in the box at the top of the page.

Deadline is April 2, 2024 at 4pm UTC to record your contributions and create a final application.

Skill description
Impact on intern selection
Experience Level
Writing Automated Tests
Preferred
Accessibility
Nice to have
UX Design
Nice to have


caMicroscope project #2

Create Stanalone Executable for caMicroscope

Project details are hidden.The details may be hidden because you are not logged in. See the message in the box at the top of the page.

Deadline is April 2, 2024 at 4pm UTC to record your contributions and create a final application.

Skill description
Impact on intern selection
Experience Level
Backend web development
Required
Frontend Web Development
Preferred


CNCF OpenTelemetry - 1 intern

OpenTelemetry is a collection of tools, APIs, and SDKs. Use it to instrument, generate, collect, and export telemetry data (metrics, logs, and traces) to help you analyze your software’s performance and behavior.

Project details are hidden.The details may be hidden because you are not logged in. See the message in the box at the top of the page.

CNCF OpenTelemetry project #1

Implement one logging bridge

Project details are hidden.The details may be hidden because you are not logged in. See the message in the box at the top of the page.

Deadline is April 2, 2024 at 4pm UTC to record your contributions and create a final application.

Skill description
Impact on intern selection
Experience Level
Go
Preferred


Fedora - 3 interns

Fedora is a Linux-based operating system, which offers Editions focused on three possible uses: workstation, server, and cloud.

Project details are hidden.The details may be hidden because you are not logged in. See the message in the box at the top of the page.

Fedora project #1

Create a gateway from webhooks to Fedora Messaging

Project details are hidden.The details may be hidden because you are not logged in. See the message in the box at the top of the page.

Deadline is April 2, 2024 at 4pm UTC to record your contributions and create a final application.

Skill description
Impact on intern selection
Experience Level
Python
Required
Web development
Preferred
JSON schemas
Nice to have


Fedora project #2

Create a tool to use natural language to generate NetworkManager configuration

Project details are hidden.The details may be hidden because you are not logged in. See the message in the box at the top of the page.

Deadline is April 2, 2024 at 4pm UTC to record your contributions and create a final application.

Skill description
Impact on intern selection
Experience Level
Linux
Required
Python
Nice to have
AI
Nice to have


Humanitarian OpenStreetMap Team - 2 interns

HOT is an international team dedicated to humanitarian action and community development through open mapping. Open source is at the heart of the HOT Community. We create and build open source tools and run our projects with an open source ethos.

Project details are hidden.The details may be hidden because you are not logged in. See the message in the box at the top of the page.

Humanitarian OpenStreetMap Team project #1

Create a Python-based mobile application to collect OpenStreetMap data in the field.

Project details are hidden.The details may be hidden because you are not logged in. See the message in the box at the top of the page.

Deadline is April 2, 2024 at 4pm UTC to record your contributions and create a final application.

Skill description
Impact on intern selection
Experience Level
Python
Required
UI Design
Preferred
OpenStreetMap
Preferred


Humanitarian OpenStreetMap Team project #2

Create backend tests and API documentations

Project details are hidden.The details may be hidden because you are not logged in. See the message in the box at the top of the page.

Deadline is April 2, 2024 at 4pm UTC to record your contributions and create a final application.

Skill description
Impact on intern selection
Experience Level
Python Programming
Preferred


Linux Kernel - 1 intern

The Linux kernel is the most basic layer of the Linux operating system. It encompasses many things: hardware drivers, file systems, security, task scheduling, and much more. Most projects involve coding in C, and may require some operating system knowledge.

Project details are hidden.The details may be hidden because you are not logged in. See the message in the box at the top of the page.

Linux Kernel project #1

Improve Landlock access control

Project details are hidden.The details may be hidden because you are not logged in. See the message in the box at the top of the page.

Deadline is April 2, 2024 at 4pm UTC to record your contributions and create a final application.

Skill description
Impact on intern selection
Experience Level
C programming
Required
Operating systems
Required
Git
Required


LLVM - 1 intern

The LLVM project is a collection of modular and reusable compiler and toolchain technologies used to develop compiler front ends (ie. Clang), back ends, and a wide variety of related sub-projects such as debuggers (LLDB), linkers (LLD), standard libraries, and more.

Project details are hidden.The details may be hidden because you are not logged in. See the message in the box at the top of the page.

LLVM project #1

Improve Arm 64-bit performance

Project details are hidden.The details may be hidden because you are not logged in. See the message in the box at the top of the page.

Deadline is April 2, 2024 at 4pm UTC to record your contributions and create a final application.

Skill description
Impact on intern selection
Experience Level
C++ programming
Required
Command line usage
Preferred
Compiler knowledge
Nice to have


MDAnalysis - 1 intern

MDAnalysis is an object-oriented Python library to analyze trajectories from molecular dynamics (MD) simulations in many popular formats. MDAnalysis allows one to read particle-based trajectories (including individual coordinate frames such as biomolecules in the PDB format) and access the atomic coordinates through NumPy arrays. This provides a flexible and relatively fast framework for complex analysis tasks.

Project details are hidden.The details may be hidden because you are not logged in. See the message in the box at the top of the page.

MDAnalysis project #1

Develop a communications strategy for a growing MDAnalysis user and contributor base

Project details are hidden.The details may be hidden because you are not logged in. See the message in the box at the top of the page.

Deadline is April 2, 2024 at 4pm UTC to record your contributions and create a final application.

Skill description
Impact on intern selection
Experience Level
Science Communication
Required
User Research
Preferred
Content Creation
Preferred
Accessibility
Preferred
Python
Nice to have


MDAnalysis project #2

Enhance installation and training materials to support accessible MDAnalysis workshops

Project details are hidden.The details may be hidden because you are not logged in. See the message in the box at the top of the page.

Deadline is April 2, 2024 at 4pm UTC to record your contributions and create a final application.

Skill description
Impact on intern selection
Experience Level
Python
Required
Content Creation
Preferred
User Research
Preferred
Science Communication
Preferred
Accessibility
Preferred


ModECI - 1 intern

ModECI (Model Exchange and Convergence Initiative) is a collaboration that aims to develop a standardized format for exchanging computational models across tools and applications in neuroscience, machine learning and artificial intelligence.

Project details are hidden.The details may be hidden because you are not logged in. See the message in the box at the top of the page.

ModECI project #1

Streamlit based interface for running/visualizing ML/AI models in MDF

Project details are hidden.The details may be hidden because you are not logged in. See the message in the box at the top of the page.

Deadline is April 2, 2024 at 4pm UTC to record your contributions and create a final application.

Skill description
Impact on intern selection
Experience Level
Python
Required
UI development
Required
ML
Required


moja global - 1 intern

Help fight climate change from your keyboard! moja global specialises in software for monitoring greenhouse gas emissions and removals from land use and landuse change.

Project details are hidden.The details may be hidden because you are not logged in. See the message in the box at the top of the page.

moja global project #1

Developing a FLINT Forest Monitoring tool using Land Sector datasets

Project details are hidden.The details may be hidden because you are not logged in. See the message in the box at the top of the page.

Deadline is April 2, 2024 at 4pm UTC to record your contributions and create a final application.

Skill description
Impact on intern selection
Experience Level
Python
Required
MongoDB
Required
Data Science
Preferred


moja global project #2

Develop pipeline for high-throughput visualisation on Google Earth Engine

Project details are hidden.The details may be hidden because you are not logged in. See the message in the box at the top of the page.

Deadline is April 2, 2024 at 4pm UTC to record your contributions and create a final application.

Skill description
Impact on intern selection
Experience Level
Google Earth Engine
Required
SQL
Preferred
Geospacial analytics
Preferred


moja global project #3

Packaging FLINT for cross-platform usage

Project details are hidden.The details may be hidden because you are not logged in. See the message in the box at the top of the page.

Deadline is April 2, 2024 at 4pm UTC to record your contributions and create a final application.

Skill description
Impact on intern selection
Experience Level
C++
Required
Shell scripting
Required
CMake
Preferred


ODK-X - 1 intern

ODK-X lets you build custom apps to gather, manage, and visualize your data just as well in the field as you do in the office. From cold chain management to longitudinal patient tracking to geographic data collection on mosquito releases, ODK-X helps you build your custom data management app.

Project details are hidden.The details may be hidden because you are not logged in. See the message in the box at the top of the page.

ODK-X project #1

Create Android Tests for ODK-X’s Android tools

Project details are hidden.The details may be hidden because you are not logged in. See the message in the box at the top of the page.

Deadline is April 2, 2024 at 4pm UTC to record your contributions and create a final application.

Skill description
Impact on intern selection
Experience Level
Java
Preferred
Android
Preferred
Testing
Preferred


ODK-X project #2

ODK-X mobile apps UI Design Consistency

Project details are hidden.The details may be hidden because you are not logged in. See the message in the box at the top of the page.

Deadline is April 2, 2024 at 4pm UTC to record your contributions and create a final application.

Skill description
Impact on intern selection
Experience Level
Android Studio
Required
JavaScript
Required
User Interface Design skills
Preferred


OpenStack - 2 interns

OpenStack is an open source software for building public and private clouds. What does that mean? We're a collection of open source projects that integrate to help organizations deploy and run clouds for computing, networking, and storage (both block storage for providing volumes to VMs and object storage for storing objects such as images or music files). With OpenStack, you can control large pools of compute, storage, and networking resources throughout a data center, all managed through a dashboard that gives administrators control while empowering their users to provision resources through a web interface

Project details are hidden.The details may be hidden because you are not logged in. See the message in the box at the top of the page.

OpenStack project #1

Implement new features in the OpenStack Manila Dashboard

Project details are hidden.The details may be hidden because you are not logged in. See the message in the box at the top of the page.

Deadline is April 2, 2024 at 4pm UTC to record your contributions and create a final application.

Skill description
Impact on intern selection
Experience Level
Python Programming
Required
git version control system
Preferred
Linux
Preferred


Oppia - 4 interns

By creating tools to enable the creation/distribution of high-quality scalable online lessons, Oppia works to make high-quality education available to those who lack access to it. The Oppia codebase is written using Python and AngularJS/Angular, and is built on top of Google App Engine.

Project details are hidden.The details may be hidden because you are not logged in. See the message in the box at the top of the page.

Oppia project #1

Enhancing Brand Awareness, Go-To-Market Activities and User Research

Project details are hidden.The details may be hidden because you are not logged in. See the message in the box at the top of the page.

Deadline is April 2, 2024 at 4pm UTC to record your contributions and create a final application.

Skill description
Impact on intern selection
Experience Level
Content creation
Required
Analytics
Required
Design & Video editing
Required
Communication
Required
Report Writing
Required
Copywriting
Required
User Research
Preferred


Perl & Raku - 1 intern

Perl is a highly capable, feature-rich programming language with over 28 years of development, making it one of the longest standing FOSS projects. Raku is a member of the Perl family of programming languages, formerly known as Perl 6.

Project details are hidden.The details may be hidden because you are not logged in. See the message in the box at the top of the page.

Perl & Raku project #1

Extend Open Food Facts to enable food manufacturers to open data and improve food product qualy

Project details are hidden.The details may be hidden because you are not logged in. See the message in the box at the top of the page.

Deadline is April 2, 2024 at 4pm UTC to record your contributions and create a final application.

Skill description
Impact on intern selection
Experience Level
Perl
Preferred


Perl & Raku project #2

Migrate the Perl Weekly Challenge site to more dynamic site using Dancer2 and MySQL

Project details are hidden.The details may be hidden because you are not logged in. See the message in the box at the top of the page.

Deadline is April 2, 2024 at 4pm UTC to record your contributions and create a final application.

Skill description
Impact on intern selection
Experience Level
Perl
Preferred
MySQL
Preferred
Bootstrap
Preferred


QEMU - 1 intern

QEMU is a machine emulator and virtualizer that can run operating systems and programs made for one machine (e.g. an ARM board) on a different machine (e.g. your own PC).

Project details are hidden.The details may be hidden because you are not logged in. See the message in the box at the top of the page.

No projects listed yet.

Servo - 2 interns

Servo is a web rendering engine written in Rust, with WebGL and WebGPU support, and adaptable to desktop, mobile, and embedded applications.

Project details are hidden.The details may be hidden because you are not logged in. See the message in the box at the top of the page.

Servo project #1

Switch Servo Layout to Fixed Point Arithmetic

Project details are hidden.The details may be hidden because you are not logged in. See the message in the box at the top of the page.

Deadline is April 2, 2024 at 4pm UTC to record your contributions and create a final application.

Skill description
Impact on intern selection
Experience Level
Rust
Preferred
System-Level Programming Language
Preferred


systemd - 1 intern

A System and Service Manager for Linux

Project details are hidden.The details may be hidden because you are not logged in. See the message in the box at the top of the page.

systemd project #1

Add Linux Services live-debugging functionality to systemd-analyze

Project details are hidden.The details may be hidden because you are not logged in. See the message in the box at the top of the page.

Deadline is April 2, 2024 at 4pm UTC to record your contributions and create a final application.

Skill description
Impact on intern selection
Experience Level
C programming language
Required
Running Linux as a user
Required


Wikimedia - 3 interns

Wikimedia is a global movement whose mission is to bring free educational content to the world, via Wikipedia and other projects. Help improve our technical backstage!

Project details are hidden.The details may be hidden because you are not logged in. See the message in the box at the top of the page.

Wikimedia project #1

Build a data visualization tool for the evolution of Wikipedia articles maintained by WikiProjects

Project details are hidden.The details may be hidden because you are not logged in. See the message in the box at the top of the page.

Deadline is April 2, 2024 at 4pm UTC to record your contributions and create a final application.

Skill description
Impact on intern selection
Experience Level
HTML CSS JS
Required
Python3
Preferred
Jupyter notebooks
Preferred


Wikimedia project #2

Create tool for informative infographics from structured information from Wikimedia projects

Project details are hidden.The details may be hidden because you are not logged in. See the message in the box at the top of the page.

Deadline is April 2, 2024 at 4pm UTC to record your contributions and create a final application.

Skill description
Impact on intern selection
Experience Level
Python
Required
MediaWiki APIs
Preferred
Data Visualization Libraries
Preferred


Closed Outreachy Internship Projects

The projects in this section already have many strong candidates they have worked with. If you are just starting out with the Outreachy application process, we don't suggest you apply for these projects. If you have been working with the project mentors, please continue to work with them. Make sure to submit your in-progress contributions through the community landing page, and complete your final project application.

Bioconductor

Open Source Software for Bioinformatics

Bioconductor closed project #1

Microbiome Study Curation

Project details are hidden.The details may be hidden because you are not logged in. See the message in the box at the top of the page.

Deadline is April 2, 2024 at 4pm UTC to record your contributions and create a final application.

Skill description
Impact on intern selection
Experience Level
Literature review skills
Preferred
Microbiome knowledge
Nice to have


Ersilia Open Source Initiative

The Ersilia Open Source Initiative is a UK-based charity focused on strengthening the research capacity for infectious and neglected diseases by developing and implementing novel artificial intelligence and machine learning tools.

Ersilia Open Source Initiative closed project #1

Extension of the Ersilia Model Hub, a FOSS platform featuring pretrained AI/ML models for biomedical

Project details are hidden.The details may be hidden because you are not logged in. See the message in the box at the top of the page.

Deadline is April 2, 2024 at 4pm UTC to record your contributions and create a final application.

Skill description
Impact on intern selection
Experience Level
Python 3
Required
Data Science
Preferred
Docker
Nice to have
GitHub Actions
Nice to have


Fedora

Fedora is a Linux-based operating system, which offers Editions focused on three possible uses: workstation, server, and cloud.

Fedora closed project #1

Create an outreach strategy, write documentation, run a marketing campaign, and measure results

Project details are hidden.The details may be hidden because you are not logged in. See the message in the box at the top of the page.

Deadline is April 2, 2024 at 4pm UTC to record your contributions and create a final application.

Skill description
Impact on intern selection
Experience Level
Social media
Required
Office productivity software
Required
WordPress
Preferred
GitLab
Preferred
Discourse
Preferred
Managing a schedule
Preferred
Graphic design
Nice to have


GNOME

GNOME is an innovative free software desktop environment that is design-driven and easy to use.

GNOME closed project #1

Conduct a series of short user research exercises, using a mix of research methods

Project details are hidden.The details may be hidden because you are not logged in. See the message in the box at the top of the page.

Deadline is April 2, 2024 at 4pm UTC to record your contributions and create a final application.

Skill description
Impact on intern selection
Experience Level
Communication in English
Required
User Research
Preferred
Running Linux systems
Preferred


OCaml

OCaml is a (high-level, typed, functional) programming language. The OCaml community contributes to the implementation of the language, as well as the surrounding ecosystem of tools and libraries.

OCaml closed project #1

Create an accessible diff viewer

Project details are hidden.The details may be hidden because you are not logged in. See the message in the box at the top of the page.

Deadline is April 2, 2024 at 4pm UTC to record your contributions and create a final application.

Skill description
Impact on intern selection
Experience Level
OCaml
Required
git
Preferred


OCaml closed project #2

OCaml library API diff tool

Project details are hidden.The details may be hidden because you are not logged in. See the message in the box at the top of the page.

Deadline is April 2, 2024 at 4pm UTC to record your contributions and create a final application.

Skill description
Impact on intern selection
Experience Level
Git
Preferred
Unix command line
Preferred
Functional Programming
Preferred
OCaml
Nice to have


OCaml closed project #3

Run OCaml Exercises Everywhere

Project details are hidden.The details may be hidden because you are not logged in. See the message in the box at the top of the page.

Deadline is April 2, 2024 at 4pm UTC to record your contributions and create a final application.

Skill description
Impact on intern selection
Experience Level
Unix command line
Required
Git
Required
Functional programming
Nice to have


OpenStack

OpenStack is an open source software for building public and private clouds. What does that mean? We're a collection of open source projects that integrate to help organizations deploy and run clouds for computing, networking, and storage (both block storage for providing volumes to VMs and object storage for storing objects such as images or music files). With OpenStack, you can control large pools of compute, storage, and networking resources throughout a data center, all managed through a dashboard that gives administrators control while empowering their users to provision resources through a web interface

OpenStack closed project #1

Extend image service support in OpenStack Horizon

Project details are hidden.The details may be hidden because you are not logged in. See the message in the box at the top of the page.

Deadline is April 2, 2024 at 4pm UTC to record your contributions and create a final application.

Skill description
Impact on intern selection
Experience Level
Python Programming
Required
JavaScript
Nice to have
Githab
Nice to have
Django
Nice to have


Oppia

By creating tools to enable the creation/distribution of high-quality scalable online lessons, Oppia works to make high-quality education available to those who lack access to it. The Oppia codebase is written using Python and AngularJS/Angular, and is built on top of Google App Engine.

Oppia closed project #1

Create and illustrate effective and engaging online lessons on Science and Financial Literacy

Project details are hidden.The details may be hidden because you are not logged in. See the message in the box at the top of the page.

Deadline is April 2, 2024 at 4pm UTC to record your contributions and create a final application.

Skill description
Impact on intern selection
Experience Level
Teaching Experience
Required
Proficiency in English Language
Required
Clear communication
Required
Writing skills
Required
Research skills
Required
Graphic design
Required
User research
Preferred
Understanding of various techniques for providing constructive feedback
Preferred
Translating text into other languages
Nice to have


Parsl

Use Parsl to create parallel programs composed of Python functions and external components. Execute Parsl programs on any compute resource from laptops to supercomputers. Contribute to Parsl to improve it and its interoperability with other tools and systems.

Parsl closed project #1

Increasing Access to Distributed Computing in Python: Improving Parsl’s Website and Documentation

Project details are hidden.The details may be hidden because you are not logged in. See the message in the box at the top of the page.

Deadline is April 2, 2024 at 4pm UTC to record your contributions and create a final application.

Skill description
Impact on intern selection
Experience Level
Technical Writing
Required
Python
Preferred
HTML & CSS
Preferred
Distributed Computing
Nice to have
GitHub
Nice to have


Parsl closed project #2

More Efficient Worker Selection in Parsl's High Throughput Executor

Project details are hidden.The details may be hidden because you are not logged in. See the message in the box at the top of the page.

Deadline is April 2, 2024 at 4pm UTC to record your contributions and create a final application.

Skill description
Impact on intern selection
Experience Level
Python
Required
Concurrent–Multithreaded Programming
Nice to have
GitHub
Nice to have


Servo

Servo is a web rendering engine written in Rust, with WebGL and WebGPU support, and adaptable to desktop, mobile, and embedded applications.

Servo closed project #1

Add support for language-specific `text-transform` behavior

Project details are hidden.The details may be hidden because you are not logged in. See the message in the box at the top of the page.

Deadline is April 2, 2024 at 4pm UTC to record your contributions and create a final application.

Skill description
Impact on intern selection
Experience Level
Rust
Preferred
System-Level Programming Language
Preferred


Servo closed project #2

Fix support for the DevTools protocol in Servo

Project details are hidden.The details may be hidden because you are not logged in. See the message in the box at the top of the page.

Deadline is April 2, 2024 at 4pm UTC to record your contributions and create a final application.

Skill description
Impact on intern selection
Experience Level
Rust langurage
Nice to have
JavaScript
Nice to have


Servo closed project #3

Improve the Servo Intermittent Dashboard

Project details are hidden.The details may be hidden because you are not logged in. See the message in the box at the top of the page.

Deadline is April 2, 2024 at 4pm UTC to record your contributions and create a final application.

Skill description
Impact on intern selection
Experience Level
Python
Required
HTML
Required


Ushahidi

Ushahidi empowers people through citizen-generated data to develop solutions that strengthen their communities in response to 4 key thematic areas: Good governance, human rights protection, humanitarian and disaster relief, and climate action.

Ushahidi closed project #1

Accessibility review and accessibility improvement of the Ushahidi Platform Client

Project details are hidden.The details may be hidden because you are not logged in. See the message in the box at the top of the page.

Deadline is April 2, 2024 at 4pm UTC to record your contributions and create a final application.

Skill description
Impact on intern selection
Experience Level
Accessibility
Required
HTML
Required
Typescript
Preferred


Ushahidi closed project #2

Enabling Real-time Citizen Reporting through WhatsApp Integration for Ushahidi

Project details are hidden.The details may be hidden because you are not logged in. See the message in the box at the top of the page.

Deadline is April 2, 2024 at 4pm UTC to record your contributions and create a final application.

Skill description
Impact on intern selection
Experience Level
Loops
Preferred
Functions
Preferred
Data structures
Preferred