|
| 1 | +title: New CreativeCommons.org launched 2023 September |
| 2 | +--- |
| 3 | +categories: |
| 4 | +cc-legal-tools |
| 5 | +cc-vocabulary |
| 6 | +open-source |
| 7 | +website |
| 8 | +wordpress |
| 9 | +--- |
| 10 | +author: |
| 11 | +sara |
| 12 | +shafiya |
| 13 | +TimidRobot |
| 14 | +--- |
| 15 | +pub_date: 2024-05-28 |
| 16 | +--- |
| 17 | +body: |
| 18 | + |
| 19 | +Creative Commons (CC) launched a new |
| 20 | +[CreativeCommons.org](https://creativecommons.org/) website on 2023 September |
| 21 | +27th. This relaunch included not just the website, but the entire technology |
| 22 | +stack (platform, server, and website components). |
| 23 | + |
| 24 | + |
| 25 | +## Improved platform |
| 26 | + |
| 27 | +The new website is hosted on AWS. This allowed us to design a more secure |
| 28 | +network architecture between services and deploy/manage the services using |
| 29 | +infrastructure as code. |
| 30 | + |
| 31 | + |
| 32 | +## Improved services |
| 33 | + |
| 34 | +The services running the website were simplified and updated. The number of |
| 35 | +distinct servers was reduced from six down to two. Previously, loading the |
| 36 | +homepage required five services (HAProxy, Varnish, Apache2, PHP+FPM, and |
| 37 | +MariaDB). The complexity of the old services made troubleshooting more |
| 38 | +difficult. They were designed before Cloudflare began supporting us through |
| 39 | +[Project Galileo](https://www.cloudflare.com/galileo/). The new website |
| 40 | +requires only two services (Apache2 and MariaDB). |
| 41 | + |
| 42 | + |
| 43 | +## Improved website components |
| 44 | + |
| 45 | + |
| 46 | +### Vocabulary |
| 47 | + |
| 48 | +The website consists of a variety of components that use the Vocabulary design |
| 49 | +system ([creativecommons/vocabulary][vocabulary]) to present a unified user |
| 50 | +experience. This relaunch was the first implementation of the new Vocabulary. |
| 51 | +It has returned to web core principals favoring semantic HTML and appropriately |
| 52 | +scoped CSS styling. It keeps the style layer responsibilities firmly within the |
| 53 | +CSS, rather than utilizing a framework like Bootstrap to add a myriad of |
| 54 | +style-based classes to the HTML layer. Furthermore, JavaScript use has been |
| 55 | +kept incredibly minimal, offering routes of behavior that can’t already be |
| 56 | +accomplished via HTML and/or CSS, letting HTML and CSS do what they do best. |
| 57 | +This simplicity improves performance and also lowers barriers for community |
| 58 | +contributions. |
| 59 | + |
| 60 | +Accessibility was a priority, making the code more semantic already helps, but |
| 61 | +we went further in ensuring that all the affordances you get from HTML aren’t |
| 62 | +blocked or altered via opinionated (and often non-standard) frameworks. The |
| 63 | +site performs better generally, and is much kinder to slower connection speeds. |
| 64 | + |
| 65 | +The new implementation of Vocabulary includes a new Information Architecture |
| 66 | +and more stable UX approach for better visitor experiences. CC licensed media |
| 67 | +is one of our strengths and as such it was important to allow proper |
| 68 | +attribution to be baked into every instance of media rendering within the |
| 69 | +design. This means that while the image or video may be important to the flow |
| 70 | +of content, its attribution also gets a level of appropriate importance as |
| 71 | +well, highlighting ways in which others might handle attribution and following |
| 72 | +through on our own mission in the pursuit of better sharing at large. |
| 73 | + |
| 74 | +[vocabulary]: https://github.com/creativecommons/vocabulary |
| 75 | + |
| 76 | + |
| 77 | +### WordPress |
| 78 | + |
| 79 | +The project utilizes a custom WordPress theme |
| 80 | +([creativecommons/vocabulary-theme][vocabulary-theme]) that implements the new |
| 81 | +Vocabulary design system. |
| 82 | + |
| 83 | +The theme utilizes the WordPress Classic Editor because of its long-term |
| 84 | +stability and more stable UX. Gutenberg still does not adhere to adequate |
| 85 | +Accessibility approaches, nor does it have a sense of stable |
| 86 | +feature-completeness. This creates an unreliable landscape to build upon. |
| 87 | +Gutenberg also requires one to build Block composition through React.js to |
| 88 | +accomplish tasks that are far easier and more approachable with the standard |
| 89 | +PHP templates that the Classic Editor is compatible with. This dramatically |
| 90 | +improves the ability for a new contributor to help, and speeds up the |
| 91 | +development process. |
| 92 | + |
| 93 | +To allow a degree of more varied page composition, Advanced Custom Fields was |
| 94 | +utilized to more easily add, update, and version control custom fields across |
| 95 | +pages and page templates. This strikes a balance between more complex page |
| 96 | +composition, but within a more controllable set of circumstances. |
| 97 | + |
| 98 | +Plugins in general were cut dramatically. The legacy site contained 20 active |
| 99 | +plugins, while this project relies on less than half, at 9, with hopeful |
| 100 | +pathways to eventually cut that number even further. |
| 101 | + |
| 102 | +The site utilizes several custom content types and better taxonomies to split |
| 103 | +up the UX flow of varied kinds of content creation, allowing for smoother |
| 104 | +multi-author attribution, site-wide notices for fundraising and event |
| 105 | +announcements, and better blog post organization and way-finding overall. |
| 106 | + |
| 107 | +[vocabulary-theme]: https://github.com/creativecommons/vocabulary-theme |
| 108 | + |
| 109 | + |
| 110 | +### CC Legal Tools |
| 111 | + |
| 112 | +With the deployment of our new website, we also replaced the legacy ccEngine |
| 113 | +with the new CC Legal Tools. The current legal tool landscape is refreshingly |
| 114 | +simple with only seven tools (CC BY 4.0, CC BY-NC 4.0, CC BY-NC-ND 4.0, CC |
| 115 | +BY-NC-SA 4.0, CC BY-ND 4.0, CC BY-SA 4.0, CC0 1.0). However since previous |
| 116 | +versions of the licenses were adapted to specific jurisdictions (ported) and we |
| 117 | +collaborate with the community to support many translations, the new CC Legal |
| 118 | +Tools app manages over 30,000 documents! |
| 119 | + |
| 120 | +The project to rewrite the CC Legal Tools and replace the legacy ccEngine began |
| 121 | +in 2020 with a request for proposals ([RFP: License Infrastructure - Google |
| 122 | +Docs][rfp]). The [Caktus Group](https://www.caktusgroup.com/) began the new CC |
| 123 | +Legal Tools using the Django Python web framework. The work was continued by |
| 124 | +Timid Robot. Saurabh helped with RDF/XML generation ([CC Legal Tools: |
| 125 | +Machine-Readable Layer — Creative Commons Open |
| 126 | +Source](/blog/entries/2023-08-25-machine-layer/)). |
| 127 | + |
| 128 | +The new CC Legal Tools consist of two repositories: |
| 129 | + |
| 130 | +1. [creativecommons/cc-legal-tools-app][cc-legal-tools-app]: *Static site |
| 131 | + generator using Django* |
| 132 | +2. [creativecommons/cc-legal-tools-data][cc-legal-tools-data]: *Inputs and |
| 133 | + outputs of the application* |
| 134 | + |
| 135 | +The legacy ccEngine consists of around 15,960 lines of Python 2. It was |
| 136 | +developed and extended organically over time, resulting in a less coherent |
| 137 | +codebase. The new CC Legal Tools has the benefit of hindsight and was |
| 138 | +architected as a single application to meet all of current requirements of CC. |
| 139 | +It consists of around 17,400 lines of Python 3 (including around 4,000 lines of |
| 140 | +tests). Benefits of the new CC Legal Tools include: |
| 141 | + |
| 142 | +- Currently supported software (Python 3, Django 4.2, etc.) |
| 143 | +- Simplified data model |
| 144 | +- Improved translation handling |
| 145 | +- Improved RDF/XML generation/management |
| 146 | + |
| 147 | +In particular, the fact that the new CC Legal Tools generate static assets is |
| 148 | +noteworthy. Static assets can be hosted performantly with a very simple service |
| 149 | +setup. |
| 150 | + |
| 151 | +[rfp]: https://docs.google.com/document/d/1mlgmjDorTEwgIRRrvILK3v0pTJbGx8fB5SE1yplrz3Y/edit |
| 152 | +[cc-legal-tools-app]: https://github.com/creativecommons/cc-legal-tools-app |
| 153 | +[cc-legal-tools-data]: https://github.com/creativecommons/cc-legal-tools-data |
| 154 | + |
| 155 | + |
| 156 | +### Chooser |
| 157 | + |
| 158 | +The new chooser beta ([creativecommons/chooser][chooser]) was promoted to |
| 159 | +production with the new header and footer from the Vocabulary design system for |
| 160 | +a more uniform user experience. |
| 161 | + |
| 162 | +[chooser]: https://github.com/creativecommons/chooser |
| 163 | + |
| 164 | + |
| 165 | +### FAQ & Platform Toolkit |
| 166 | + |
| 167 | +The FAQ ([creativecommons/faq](https://github.com/creativecommons/faq)) and |
| 168 | +Platform Toolkit ([creativecommons/mp](https://github.com/creativecommons/mp)) |
| 169 | +were updated to use the new header and footer from the Vocabulary design system |
| 170 | +for a more uniform user experience. |
| 171 | + |
| 172 | + |
| 173 | +## Improved development |
| 174 | + |
| 175 | +Utilizing infrastructure as code, we now have a much more robust staging |
| 176 | +environment. This allows us to preview larger changes so that they can be |
| 177 | +deployed to production with minimum risk. We also improved our local |
| 178 | +development environment and content synchronization tooling |
| 179 | +([creativecommons/index-dev-env][index-dev-env]). This means that not only did |
| 180 | +we fix many old bugs, but when new bugs are identified, we can fix them more |
| 181 | +rapidly! |
| 182 | + |
| 183 | +[index-dev-env]: https://github.com/creativecommons/index-dev-env |
| 184 | + |
| 185 | + |
| 186 | +## Thank you |
| 187 | + |
| 188 | +Thank you to the people who directly contributed to the success of the new |
| 189 | +website! |
| 190 | + |
| 191 | +- Nate, former Director of Communications & Community |
| 192 | +- Sara, Full Stack Engineer |
| 193 | +- Shafiya, Systems Engineer |
| 194 | +- Timid Robot, Director of Technology |
| 195 | +- *as well as many other previous staff, community contributors, and other |
| 196 | + [supporters](/community/supporters/)!* |
0 commit comments