Open Source Work Programs: Project Ideas

This is the project idea list for the current round of open source collaborations at Creative Commons.

Automating Quantifying the Commons

Difficulty

Medium

Size

Large (~350 hours, ~12 weeks)

Skills recommended
  • Git
  • GitHub Actions
  • Python
Project Lead
  • Timid Robot

The Problem

The Quantifying the Commons project has seen excellent additions led by student developers. However, the scope of previous projects did not include automation or combined reporting.

Expected Outcome

Add automation of data gathering and report generation so that our reports quantifying the commons are never more than 3 months out of date.

Contributor Tasks

The contributor will need to architect a data flow, formalize data formats, automate data gathering, and automate reporting. Challenges include quota limits that may require multi-day/multi-step data gathering, deciding on plain text vs binary data formats, and secret management. Knowledge of numpy and matplotlib python libraries will be very helpful.

Application Tips

  • Engage with the repository (issues, pull requests)
  • Be helpful and welcoming (e.g. answer other contributors’ questions on Slack)
  • Applicant Guide

Resources

Back to the Project list

Create local Ansible Dev environment using Docker

Difficulty

Medium

Size

Large (~350 hours, ~12 weeks)

Skills recommended
  • Ansible
  • Debian
  • Docker
  • Git
Project Lead
  • Shafiya

The Problem

The enhancement of system architectures through the strategic transition from SaltStack to Ansible for provisioning, coupled with the implementation of Docker infrastructure, represents a significant step towards improved efficiency and scalability.

Expected Outcome

The project's goal is to create a strong and local development setup using Ansible and Docker. This setup will be like a real work environment, with a special server for security (Bastion), automation with Ansible, a server for websites, and a server for storing data. This setup will make developing things easier and safer, and it will be a model for how we do similar projects at CC in the future.

Docker containers:

  • Bastion (SSH jump server)
  • Ansible
  • Web server (Apache2/WordPress)
  • Database server (MariaDB)

Contributor Tasks

Contributor will:

  • Set up Docker containers for the Bastion server, Ansible server, Web server, and Database server.
  • Implement a secure system for managing and using secrets
    • Set up a secure storage solution for managing secrets, such as Ansible Vault
    • It is recommended to inject secrets into containers at runtime as needed, and not stored within container images.
  • Configure Ansible playbooks for deploying the web application and interact with the database.
  • Document the setup process

Application Tips

  • Engage with the repository (issues, pull requests)
  • Be helpful and welcoming (e.g. answer other contributors’ questions on Slack)
  • Applicant Guide

Resources

Back to the Project list

Create Media Attribution and License Plugin for WordPress

Difficulty

Hard

Size

Large (~350 hours, ~12 weeks)

Skills recommended
  • CSS
  • Docker
  • Git
  • HTML
  • JavaScript
  • PHP
  • WordPress (including Classic Editor, Gutenberg Editor/React.js, Plugins, and Themes)
Project Lead
  • Sara

The Problem

The current existing Creative Commons WordPress plugin has feature drift and technical debt that make it a challenge to sensibly expand/revise. At the core of desired uses, this new WordPress plugin needs a reliable and succinct way to add Attribution and Licensing information to a Media item within the Media Library at initial upload. This modification/extension of the Media item’s "meta field information" needs to be stable and clear enough to enable future expansions in featureset into other areas of the WordPress backend interface.

Expected Outcome

Building from a strategy of simplistic and necessary structure and functionality, a new plugin would be created that extends the fields for a Media item to include License and Attribution information.

Contributor Tasks

Contributor will follow an approach that is simple to maintain, and possible to extend in the future. Users can upload items in at least four ways, and ideally all four would be factored into this plugin:

  • through the Media Library directly
  • through the TinyMCE editor “Add Media” button when utilizing the Classic Editor
  • when adding an image to a “featured image” or similar field in the Classic Editor
  • through any Gutenberg editor block that utilizes an image/file attachment mechanism.

Each of these routes should have the ability to input and modify this additional meta field information about the item. The plugin should utilize well structured PHP generally. More specifically when solving for Gutenberg and/or TinyMCE adequate and sensible choices in JavaScript should be utilized. All code should be well documented, and specific code interacting with the Classic editor vs. Gutenberg editor contexts should be well compartmentalized. The Contributor will also set up a custom Docker configuration in accordance with other WP + Docker setups utilized by CC, specifically for the build and testing of the plugin.

Application Tips

  • Engage with the CC Legal Tools repositories (issues, pull requests)
  • Be helpful and welcoming (e.g. answer other contributors’ questions on Slack)
  • Applicant Guide

Resources

Back to the Project list

Modernize CC Resource Archive

Difficulty

Medium

Size

Large (~350 hours, ~12 weeks)

Skills recommended
  • Git
  • JavaScript
  • Jekyll
  • HTML (Semantic & Accessible)
  • CSS (Structured & Accessible)
Project Lead
  • Sara

The Problem

The Resources Archive has an outdated visual setup, and needs functionality fixes and improvements.

Expected Outcome

Upgrade the look and feel to match current CC aesthetics, using the internal Design System (Vocabulary). Codebase is running current and standards compliant technology implementations. Entire site builds as static files on GitHub Pages. Generate clear documentation of codebase and functionality.

Contributor Tasks

Contributor will refactor codebase to fix resource submission, use current semantic, accessible, and standards compliant HTML, CSS, and JavaScript to match the current visual aesthetic of Creative Commons sites. Improve the overall UX for finding, submitting, and accessing resources. Ensure the site functions as a static and stable site hosted on GitHub Pages. Final implementation will have clear documentation drafted within the codebase for future maintainability.

Application Tips

  • Engage with the repository (issues, pull requests)
  • Be helpful and welcoming (e.g. answer other contributors’ questions on Slack)
  • Applicant Guide

Resources

Back to the Project list

Original Ideas

We are open to original ideas for documentation improvements.

Please talk to us on the #cc-dev-workprograms channel on Slack or via the mailing list to find a mentor for the project before submitting your proposal.

Back to the Project list