This is the project idea list for the current round of open source internships at Creative Commons.
Medium
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.
Revamping the admin panel of the plugin, adding the CC Chooser on it as well as a Gutenberg block.
The intern will be expected to:
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).
High
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.
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.
The intern will be expected to:
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:
Medium
Vocabulary currently has some performance issues, related to:
Performance can also be further improved via documentation, and sharing best practices for implementing vocabulary with consumers:
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).
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.
High
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.
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.
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.
The intern should outline a plan to audit and access existing Vocabulary implementations and develop a plan to migrate away from Bulma.
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.