|
| 1 | +_model: project-idea |
| 2 | +--- |
| 3 | +_hidden: yes |
| 4 | +--- |
| 5 | +title: Vocabulary - Performance Improvements |
| 6 | +--- |
| 7 | +problem: |
| 8 | +[Vocabulary][vocabulary] currently has some performance issues, related to: |
| 9 | +- File size of CSS files |
| 10 | +- Runtime loading cascade (importing Vocabulary from the CDN then loads |
| 11 | + additional stylesheets and font files in sequence, instead of in parallel). |
| 12 | + We need to eliminate this waterfall. |
| 13 | + |
| 14 | +Performance can also be further improved via documentation, and sharing best |
| 15 | +practices for implementing vocabulary with consumers: |
| 16 | +- Guidelines and suggestions for using [purgecss][purgecss] with Vocabulary |
| 17 | +- Instructions on how/and what to prefetch or preload (with copy-pastable meta |
| 18 | + tags) (see: [Preload, prefetch and other link tags | CSS-Tricks][csstricks]) |
| 19 | +- Create tooling so that these performance improvements can be maintained over |
| 20 | + time. Some ideas: |
| 21 | + - Filesize monitoring via GitHub actions: [ampproject/filesize][filesize] |
| 22 | + - Add linting rules for Sass files [sds/scss-lint][scsslint] |
| 23 | + |
| 24 | +[vocabulary]: https://github.com/creativecommons/vocabulary/ |
| 25 | +[purgecss]: https://github.com/FullHuman/purgecss |
| 26 | +[csstricks]: https://css-tricks.com/preload-prefetch-and-other-link-tags/ |
| 27 | +[filesize]: https://github.com/ampproject/filesize |
| 28 | +[scsslint]: https://github.com/sds/scss-lint |
| 29 | +--- |
| 30 | +expected_outcome: |
| 31 | +This work will have a strong and measurable impact on all sites using CC |
| 32 | +Vocabulary. The current live sites using vocabulary are: |
| 33 | +- https://chooser-beta.creativecommons.org/ |
| 34 | +- https://opensource.creativecommons.org/ |
| 35 | +- https://search.creativecommons.org/ |
| 36 | +- https://summit.creativecommons.org/ |
| 37 | + |
| 38 | +We will be updating more CC websites to use Vocabulary in Q1 of this year. |
| 39 | +These changes will be quantifiable by measuring changes in page size (measured |
| 40 | +in kilobytes), and reduced load times on the Google-defined metrics "[core web |
| 41 | +vitals][corewebvitals]": Largest Contentful Paint (LCP), First Input Delay |
| 42 | +(FID), and Cumulative Layout Shift (CLS). |
| 43 | + |
| 44 | +[corewebvitals]: https://web.dev/vitals/ |
| 45 | +--- |
| 46 | +internship_tasks: |
| 47 | +- Audit the current performance issues |
| 48 | +- Rewrite and modify CSS files and the build pipeline |
| 49 | +--- |
| 50 | +application_tips: |
| 51 | +Applying interns should do some basic performance analysis of some existing CC |
| 52 | +web properties using Vocabulary. They should also outline how they intend to |
| 53 | +measure the results of their work, taking special care to capture as much |
| 54 | +relevant initial data and reporting *before* their changes are implemented as |
| 55 | +possible. |
| 56 | + |
| 57 | +This project requires proficiency in CSS/Sass and optionally an understanding |
| 58 | +of front-end build tooling with NPM. Some JavaScript may likely be useful as |
| 59 | +well. This is a great opportunity for a developer to learn about front-end |
| 60 | +performance profiling, "modern" web performance metrics, and many native HTML |
| 61 | +APIs and specifications for dealing with asset loading. |
| 62 | +--- |
| 63 | +resources: |
| 64 | +- **[Applicant Guide][appguide]** |
| 65 | +- [creativecommons/vocabulary][vocabulary]: A cohesive design system & Vue |
| 66 | + component library to unify the web-facing Creative Commons |
| 67 | +- [Web Vitals][webvitals] |
| 68 | +- [Best practices for measuring Web Vitals in the field][bestpractices] |
| 69 | +- [PurgeCSS - Remove unused CSS][purgecssdocs] |
| 70 | +- [how and why to avoid css @import statements in stylesheets on your |
| 71 | + websites - lost saloon][avoidimports] |
| 72 | + |
| 73 | +[appguide]: /internships/applicant-guide/ |
| 74 | +[vocabulary]: https://github.com/creativecommons/vocabulary/ |
| 75 | +[webvitals]: https://web.dev/vitals/ |
| 76 | +[bestpractices]: https://web.dev/vitals-field-measurement-best-practices/ |
| 77 | +[purgecssdocs]: https://purgecss.com/ |
| 78 | +[avoidimports]: https://www.lostsaloon.com/technology/how-to-avoid-css-import-statements-in-stylesheets-to-improve-seo/ |
| 79 | +--- |
| 80 | +skills_recommended: |
| 81 | +- CSS |
| 82 | +- CSS Preprocessors (Sass) |
| 83 | +- JavaScript (optional) |
| 84 | +--- |
| 85 | +mentors: |
| 86 | +- Abhishek Naidu |
| 87 | +- Nimish Bongale |
| 88 | +- Zack Krida |
| 89 | +--- |
| 90 | +difficulty: Medium |
| 91 | +--- |
| 92 | +filter_value: difficulty-medium skill-css skill-javascript |
0 commit comments