Open Source Internships: Project Ideas

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

Add CC Chooser to CC WordPress Plugin

Difficulty

Medium

Skills recommended
  • JavaScript
  • PHP
  • React
  • WordPress
Mentor pool
  • (list not yet finalized)
  • Brylie

The Problem

Currently, we have a license selector on the admin panel that works fine but it can be improved by using the workflow of the new CC Chooser. We also have a set of Gutenberg blocks to insert a license in the content, we can also add a new block that can contain the CC Chooser workflow as well, this will improve the user experience and would be more educational regarding the CC Licenses.

Expected Outcome

Revamping the admin panel of the plugin, adding the CC Chooser on it as well as a Gutenberg block.

Internship Tasks

The intern will be expected to:

  • Research about how the new CC Chooser manage the user workflow
  • Recreate that process in the WordPress admin panel
  • Generate a new Gutenberg block

Application Tips

The intern should be able to plan this process and find the best way to adapt the workflow from the CC Chooser (JavaScript/Vue) to WordPress (PHP).

Resources

Back to the Project list

Licenses Machine Readable Information

Difficulty

High

Skills recommended
  • Django
  • Jinja2
  • Python
  • XML
  • YAML
Mentor pool
  • (list not yet finalized)
  • Timid Robot

The Problem

The Creative Commons licenses consist of three layers: 1) Legal code, 2) Human readable deeds, 3) Machine readable (API and RDF). The new license infrastructure does not yet generate the third layer: machine readable data.

Expected Outcome

Extend the new license infrastructure to generate machine readable licenses information. This project is an opportunity to empower applications, communities, and projects that wish to make the Creative Commons licenses available to their users.

Internship Tasks

The intern will be expected to:

  • Comprehend legacy machine readable licenses information
  • Extend new license infrastructure to achieve parity with legacy infrastructure
  • Research current RDF specifications
  • Make recommendations for modernizing and improving machine readable licenses information (ex. updated RDF syntax, JSON API)
  • Create initial versions of the recommendations

Application Tips

This project appears simple (ingest data and generate XML), but there are many many important details and strict requirements. I expect the project will broadly have three phases: 1) mimicry, 2) research, and 3) innovation. Applications should:

  • be detail oriented
  • value simplicity over cleverness

Resources

Back to the Project list

Vocabulary - Performance Improvements

Difficulty

Medium

Skills recommended
  • CSS
  • CSS Preprocessors (Sass)
  • JavaScript (optional)
Mentor pool
  • (list not yet finalized)
  • Brylie

The Problem

Vocabulary currently has some performance issues, related to:

  • File size of CSS files
  • Runtime loading cascade (importing Vocabulary from the CDN then loads additional stylesheets and font files in sequence, instead of in parallel). We need to eliminate this waterfall.

Performance can also be further improved via documentation, and sharing best practices for implementing vocabulary with consumers:

Expected Outcome

This work will have a strong and measurable impact on all sites using CC Vocabulary. The current live sites using vocabulary are:

We will be updating more CC websites to use Vocabulary. These changes will be quantifiable by measuring changes in page size (measured in kilobytes), and reduced load times on the Google-defined metrics "core web vitals": Largest Contentful Paint (LCP), First Input Delay (FID), and Cumulative Layout Shift (CLS).

Internship Tasks

  • Audit the current performance issues
  • Rewrite and modify CSS files and the build pipeline

Application Tips

Applying interns should do some basic performance analysis of some existing CC web properties using Vocabulary. They should also outline how they intend to measure the results of their work, taking special care to capture as much relevant initial data and reporting before their changes are implemented as possible.

This project requires proficiency in CSS/Sass and optionally an understanding of front-end build tooling with NPM. Some JavaScript may likely be useful as well. This is a great opportunity for a developer to learn about front-end performance profiling, "modern" web performance metrics, and many native HTML APIs and specifications for dealing with asset loading.

Resources

Back to the Project list

Vocabulary - Remove dependency on Bulma

Difficulty

High

Skills recommended
  • CSS/Sass
  • JavaScript
  • NPM
Mentor pool
  • (list not yet finalized)
  • Brylie

The Problem

Vocabulary is currently written on top of an existing CSS library, Bulma. There are a few problems with Bulma: naming inconsistencies that confuse developers; difficulty in overriding its existing classes; the large file size, and the more general maintenance burden of relying on a third party library as the base for our design system.

Expected Outcome

This work would have benefits to performance, and would need to be coordinated with the performance improvements project, but would also benefit the developer experience and ease of use for Vocabulary. Users will no longer need to jump between Bulma’s documentation and Vocabulary’s, and the entire codebase will be colocated and easier to navigate.

Internship Tasks

The intern will need to assess existing web properties and figma designs to determine which CSS classes from Bulma need to be replicated and integrated into Vocabulary. They can either be re-implemented manually or their code can be copied directly into vocabulary.

This intern will need to follow consistent naming conventions and CSS architectural style (Block Element Modifier {BEM}, utility classes, etc.) to ease the burden of this change for users.

Finally, the intern will need to document how to migrate to the version of Vocabulary that makes these changes live, with clear explanations of what code is deprecated, new, or modified.

Application Tips

The intern should outline a plan to audit and access existing Vocabulary implementations and develop a plan to migrate away from Bulma.

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-internships channel on Slack or via the mailing list to find a mentor for the project before submitting your proposal.

Back to the Project list