<?xml version="1.0" encoding="utf-8"?>
<feed xmlns="http://www.w3.org/2005/Atom"><title>CC technical blog</title><link href="http://opensource.creativecommons.org/" rel="alternate"/><link href="http://opensource.creativecommons.org/blog/feed.xml" rel="self"/><id>urn:uuid:6bb2a1da-c434-35c1-ba82-9d6cd50f2a71</id><updated>2026-05-06T00:00:00Z</updated><author><name/></author><entry><title>Sunsetting api.creativecommons.org</title><link href="http://opensource.creativecommons.org/blog/entries/2026-05-06-sunsetting-api/" rel="alternate"/><updated>2026-05-06T00:00:00Z</updated><author><name>['TimidRobot']</name></author><id>urn:uuid:6792d0e4-fa95-3111-820d-2d226beb749a</id><content type="html">&lt;p&gt;Creative Commons (CC) will terminate the api.creativecommons.org service on 2026
Nov 02. Please note, however, that hosting or software failure may render the
service unavailable before that date.&lt;/p&gt;
&lt;h2 id="removal-rationale"&gt;Removal Rationale&lt;/h2&gt;&lt;ul&gt;
&lt;li&gt;The API depends on the legacy ccEngine, which was replaced by the current CC
Legal Tools on 2023-09-27. It is no longer maintainable.&lt;/li&gt;
&lt;li&gt;The infrastructure hosting the API is no longer supported.&lt;/li&gt;
&lt;li&gt;The data provided changes infrequently enough that an API is a suboptimal
solution.&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 id="next-steps"&gt;Next Steps&lt;/h2&gt;&lt;ul&gt;
&lt;li&gt;Evaluate existing flat files to replace API:&lt;ul&gt;
&lt;li&gt;&lt;a href="https://creativecommons.org/rdf/index.rdf"&gt;creativecommons.org/rdf/index.rdf&lt;/a&gt;&lt;ul&gt;
&lt;li&gt;This ccREL file has existed for a long time, but has never been very
visible. Its accuracy was significantly improved with the new CC Legal
Tools App static site generation starting in 2023 September.&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;creativecommons/cc-legal-tools-data: &lt;a href="https://github.com/creativecommons/cc-legal-tools-data/blob/main/config/cc-legal-tools.csv"&gt;config/cc-legal-tools.csv&lt;/a&gt;&lt;ul&gt;
&lt;li&gt;This file is new this year. Its generation in the CC Legal Tools App can
be modified or a new file can be generated if additional data is needed, a
different file format is needed, etc.&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;If you are using DSpace, see: &lt;a href="https://github.com/DSpace/DSpace/issues/11808"&gt;Replace api.creativecommons.org
DSpace/DSpace#11808&lt;/a&gt;.&lt;/li&gt;
&lt;li&gt;Please use the following form to share concerns or request ongoing
communication: &lt;a href="https://docs.google.com/forms/d/e/1FAIpQLScZn1Jo3Ktfb5o2Sf08hMb3yWD9WArpQtQGvQaoP19un-UOQw/viewform?usp=dialog"&gt;Sunsetting api.creativecommons.org feedback&lt;/a&gt;.&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 id="related-blog-posts"&gt;Related blog posts&lt;/h2&gt;&lt;ul&gt;
&lt;li&gt;&lt;code&gt;2024-05-28&lt;/code&gt;: &lt;a href="https://opensource.creativecommons.org/blog/entries/2024-05-28-creativecommons-org/"&gt;New CreativeCommons.org launched 2023 September&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;2011-08-31&lt;/code&gt;: &lt;a href="https://opensource.creativecommons.org/archives/old-tech-blog/entries/summary-of-current-licensing-tools/"&gt;Summary of current licensing tools&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;2011-01-13&lt;/code&gt;: &lt;a href="https://opensource.creativecommons.org/archives/old-tech-blog/entries/cc-rest-api-updated-for-public-domain-mark/"&gt;CC REST API Updated for Public Domain Mark&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;2009-04-02&lt;/code&gt;: &lt;a href="https://opensource.creativecommons.org/archives/old-tech-blog/entries/enumeration-descriptions-in-cc-web-services/"&gt;Enumeration descriptions in CC Web Services&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;2008-07-24&lt;/code&gt;: &lt;a href="https://opensource.creativecommons.org/archives/old-tech-blog/entries/cclicense-in-alpha/"&gt;cc.license in alpha&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
</content></entry><entry><title>Deprioritizing work programs</title><link href="http://opensource.creativecommons.org/blog/entries/2026-03-11-deprioritizing-work-programs/" rel="alternate"/><updated>2026-03-11T00:00:00Z</updated><author><name>['TimidRobot']</name></author><id>urn:uuid:20dc8fc5-21aa-355d-a420-ef3ab8b945a1</id><content type="html">&lt;p&gt;Unfortunately, Creative Commons (CC) has no plans to participate in future work
programs like &lt;a href="https://summerofcode.withgoogle.com/"&gt;Google Summer of Code (GSoC)&lt;/a&gt; or &lt;a href="https://www.outreachy.org/"&gt;Outreachy&lt;/a&gt;.&lt;/p&gt;
&lt;p&gt;The Technology team remains grateful to these invaluable programs and the many
contributors, interns, and volunteers that they brought. Still, the
contributions of our community far exceed our ability to document them. For a
history of free/libre and open source work programs at CC, please see: &lt;a href="/programs/history/"&gt;Open
Source Work Programs: History — Creative Commons Open Source&lt;/a&gt;.&lt;/p&gt;
&lt;p&gt;Despite their ongoing success, the issues and problems that these work programs
were created to address have only grown along with other changes in the
technology industry. Their mission remains as important now, as ever. We hope
their value will continue to be recognized.&lt;/p&gt;
&lt;p&gt;For our part, we can only hope that the resources we developed for engaging
with these work programs might benefit others and that someday we might be able
to participate again.&lt;/p&gt;
</content></entry><entry><title>Quantifying the Commons: The end of an era</title><link href="http://opensource.creativecommons.org/blog/entries/2026-30-03-the-end-of-an-era/" rel="alternate"/><updated>2026-03-03T00:00:00Z</updated><author><name>['Oreoluwa']</name></author><id>urn:uuid:eaec2419-2ad5-3631-9f37-b781c05ce43d</id><content type="html">&lt;h2 id="quantifying-the-commons-the-end-of-an-era"&gt;Quantifying the Commons: The end of an era&lt;/h2&gt;&lt;p&gt;Dear gentle reader,&lt;/p&gt;
&lt;p&gt;It is the end of an era yet the beginning of my bloom as a young aspiring data
professional on a global stage. It feels so surreal to be at the end of this
amazing journey with my mentors and to see the quantifying commons become a
mature project in the creative commons open source community. Quantifying the
commons is also blooming so stay tuned to experience its impact in different
teams at Creative Commons.&lt;/p&gt;
&lt;p&gt;Looking back, I was quite nervous on my first meeting with Timid Robot and
Sara. I did not quite understand the automation part of the project, how long
the scripts ran? Why? I was fascinated by the whole process of the system,
after further explanation by Timid Robot I was really impressed by the design
thinking. A lot of details and critical thinking were put into implementing the
system. Big kudos to the project lead and previous contributors, I am in love
with the foundation being put in place prior to my contribution. It is a firm
one and it made my work easier and worthwhile.&lt;/p&gt;
&lt;h2 id="day-1-was-amazing-day-90-is-growth"&gt;Day 1 was amazing, Day 90 is growth!&lt;/h2&gt;&lt;p&gt;I went from being confused with concepts used in the codebase to suggesting
ideas on improving the automation process in the system. I constantly read
articles, tested, iterated and improvised functions and mechanisms. I improved
on my data structure and algorithm skills, I had to cater for test cases,
limitations and risk. Risk in the sense that the system is exposed to change
because the data is live and dynamic from the API. This is what I did in the
first half of my internship
&lt;a href="https://opensource.creativecommons.org/blog/entries/2026-01-22-My-outreachy-journey/"&gt;here&lt;/a&gt;.
I would be focusing on the second half of the internship in this blog post. A
big part of the project is ensuring the integrity of data is in sync with the
efficiency of the automation process.&lt;/p&gt;
&lt;h3 id="automating-the-smithsonian-quarterly-report"&gt;Automating the Smithsonian quarterly report&lt;/h3&gt;&lt;p&gt;Smithsonian is one of the largest public institutions in the United States. It
has a total of 38 units/data sources like museums, zoos and libraries as of
when I worked on it. We derived insights on the usage of CC0 license across the
media records and records without media. This urged me to add the horizontal
stacked barplot to the collection of visualization in the report system. From
this, we could get the distribution of the records with CC0 licenses at a
glance. Also, we explored the top 10 distribution of units and lowest 10
distribution of units. This meaningfully tells us how common the CC0 license is
used in these institutions. After testing the whole workflow a couple of times,
I detected that the unit code seems to be updated frequently whether added or
removed. I developed a function that keeps track of these changes and gives a
warning about changes in the next automation process. This was the best way
possible at the moment to handle the sudden unit code, so that our data is
quite predictable and updated.&lt;/p&gt;
&lt;h3 id="automating-the-arxiv-quarterly-report"&gt;Automating the arXiv quarterly report&lt;/h3&gt;&lt;p&gt;Arxiv is a curated research-sharing platform with 5 million monthly active
users and hosts 2.6 million research papers. We derived quite interesting
insights from this data source. Then expanded the visualization collection in
plot.py by adding the function for line plot and vertical stacked barplot. The
insights include the count of legal tools on a yearly basis and various
comparative analysis of the tools over the years. We also explored the
breakdown of these tools usage in different categories.&lt;/p&gt;
&lt;h2 id="lessons-learned"&gt;Lessons learned&lt;/h2&gt;&lt;p&gt;I learnt so much about creating a structure when solving a problem. It is quite
easier to debug and it presents a detailed workflow for future contributors to
understand what has been done previously. It literally boils down to how you
name your variable or how you use it in a function. I also learnt the
importance of asking why. Timid Robot encouraged me to always question
assumptions and understand the reasoning behind decisions. This was the best
thing to do because it made the whole internship fun and puzzling. Things
became naturally logical and I could connect the dots quite easily.&lt;/p&gt;
&lt;h2 id="what-next"&gt;What Next!&lt;/h2&gt;&lt;p&gt;I hope to continue volunteering my time on the project going forward. I am also
eager to explore other open-source projects involving research, big data, and
automation, and to further align these skill sets with my background in
actuarial science.&lt;/p&gt;
&lt;h2 id="goodbye-for-now"&gt;Goodbye for now&lt;/h2&gt;&lt;p&gt;I really enjoyed working with my mentors, I will miss our little chit chats
about the holidays, the weather and even vacation trips. I look forward to
catching up again in the future.&lt;/p&gt;
</content></entry><entry><title>Quantifying the Commons: My Journey so far with outreachy</title><link href="http://opensource.creativecommons.org/blog/entries/2026-01-22-My-outreachy-journey/" rel="alternate"/><updated>2026-01-22T00:00:00Z</updated><author><name>['Oreoluwa']</name></author><id>urn:uuid:38874a7e-4773-3892-96e6-17e26e362452</id><content type="html">&lt;p&gt;Hi there! My name is Oreoluwa, from Nigeria. I am an Outreachy intern at
Creative Commons for the December 2025 cohort. My project involves improving
and expanding Quantifying the commons. In this post, I will share my progress
and key takeaways from the first half of my internship.&lt;/p&gt;
&lt;h2 id="project-overview"&gt;Project overview&lt;/h2&gt;&lt;p&gt;Quantifying the commons aims to track and analyse the trends of the creative
commons legal tools. Who is using these legal tools, where, why, how? We want
to measure the impact of these tools. For the past 25 years, efforts have been
made by the organisation to democratize knowledge and content on the internet.
We want to identify our growth, gaps and areas for development.&lt;/p&gt;
&lt;h3 id="a-brief-history-i-learnt-about"&gt;A brief history I learnt about&lt;/h3&gt;&lt;p&gt;After watching a documentary recommended by my mentor. I learnt about a great
man called Aaron Schwartz who is also known as internet's own boy. He believed
knowledge should be free and accessible to everyone. His ideas helped inspire
movements like Creative Commons, which allows creators to share their work
legally while choosing how others can use it. I resonate well with this
movement because I realised how much knowledge I have gained from reading
articles and my random searches on the internet. I feel really excited to be
contributing to this mission.&lt;/p&gt;
&lt;h2 id="progress-so-far"&gt;Progress so far&lt;/h2&gt;&lt;h3 id="aligning-the-project-better-to-the-script-requirements"&gt;Aligning the project better to the script requirements&lt;/h3&gt;&lt;h4 id="one-of-the-main-script-requirement-is-making-the-script-repeatable"&gt;One of the main script requirement is making the script repeatable&lt;/h4&gt;&lt;p&gt;We use Github Actions to automate our python script on a quarterly basis. So
there is an execution schedule that runs for 45 days or less. For better
efficiency, scripts must exit early if a task is already completed and must
reliably continue at the appropriate spot if multiple runs are required and not
completed. Multiple runs in the sense that some of the APIs we integrate to
fetch data have their limitations that allow a certain amount of fetch per hour
or day. So we continue to fetch after the specified hour or day. During my work
on the project, I implemented a mechanism that checks for completion of fetch
scripts and allows the script to continue from when it stops during any
interruption. I integrated a workflow that checks if an output has been
generated previously to avoid regeneration or running of script continuously,
when we have an output already.&lt;/p&gt;
&lt;h4 id="another-script-requirement-is-making-the-script-idempotent"&gt;Another script requirement is making the script idempotent&lt;/h4&gt;&lt;p&gt;Making the script idempotent means executing the python scripts multiple times
and still get the same output. Before my work on the project, the report
scripts usually append it sections to the readme using the &lt;code&gt;update_readme()&lt;/code&gt;
function and this allows the order of outputs to change. For example when I run
a script, I can get A-B-C but when I run it again maybe in the next quarter. I
could get B-C-A, we don't want it like that. It should be predictable and
consistent across quarters. But now,it inserts the sections alphabetically to
the right position regardless of how the python scripts were executed. So we
get A-B-C in quarter 1 and A-B-C in quarter 2.&lt;/p&gt;
&lt;h4 id="documentation-on-the-project"&gt;Documentation on the project&lt;/h4&gt;&lt;p&gt;Improving contributors experience is a big part of the project. During the
Outreachy contribution phase, new contributors kept on asking the same
questions over and over again because there were some lack of information in
the documentation. Timid Robot and I tried to identify areas that were lacking
clarity and we put in more context into the sides of the documentation.&lt;/p&gt;
&lt;h4 id="completing-the-three-stages-of-report-for-existing-scripts"&gt;Completing the three stages of report for existing scripts&lt;/h4&gt;&lt;p&gt;Previous contributions had incomplete stages of report for a particular data
source. I worked on completing the process and report stage for the Openverse
data source. This required understanding the data fetched and what meaningful
data or insight can be beneficial for the different teams in the organisation.&lt;/p&gt;
&lt;h3 id="current-status"&gt;Current status&lt;/h3&gt;&lt;p&gt;I am currently working on completing the process and report stage for other
data sources. Then I expand the project by adding new data sources for
reporting. An iterative task for me is to check for areas in the code that
might need improvement or better ways of doing things in the codebase.&lt;/p&gt;
&lt;h3 id="collaboration-with-mentors"&gt;Collaboration with mentors&lt;/h3&gt;&lt;p&gt;My favorite part of this project is my weekly meetup with my mentors, I get to
ask questions, get ideas on ways I could improve something or solve a problem.
I also get to review work done by my mentors, which allows me to learn from
their approaches and imbibe them into my contributions.&lt;/p&gt;
&lt;h3 id="key-takeways"&gt;Key takeways&lt;/h3&gt;&lt;p&gt;Open source has been one of the coolest experiences in my tech journey. It has
helped me expand my skill set, as I picked up new programming languages along
the way. I learned to easily identify optimal solutions, especially when
working within constraints or limitations that could affect outcomes. Through
this, I realized the importance of building the simplest possible architecture
first, and then gradually adding components as the solution evolves.&lt;/p&gt;
&lt;p&gt;I am excited to embark on the next half! I hope to make more impact on this
project.&lt;/p&gt;
</content></entry><entry><title>Avoiding generative AI development tools</title><link href="http://opensource.creativecommons.org/blog/entries/2025-12-01-avoiding-gen-ai-tools/" rel="alternate"/><updated>2025-12-01T00:00:00Z</updated><author><name>['TimidRobot']</name></author><id>urn:uuid:ad0d890c-6979-302d-a258-cfa4e0dfd274</id><content type="html">&lt;p&gt;At this time, the Creative Commons (CC) &lt;strong&gt;Technology team&lt;/strong&gt; has concluded that
generative AI development tooling does not pass a cost/benefit analysis &lt;em&gt;for
contributing to our open source projects&lt;/em&gt;. Until further notice, we will not
accept CC Open Source submissions that include code or content generated with
AI.&lt;/p&gt;
&lt;h2 id="overhyped"&gt;Overhyped&lt;/h2&gt;&lt;p&gt;Generative AI productivity claims are often championed (and paid for) by those
who reap a material benefit from adoption of AI tooling. Adoption rates are
inflated by a lack of choice when AI tools are included by default and often
cannot be disabled (EditorDavid, 2025). We’ve observed that arguments for their
adoption too often appeal to a fear of missing out or potential future
benefits.&lt;/p&gt;
&lt;h2 id="inefficiency-and-slop"&gt;Inefficiency and slop&lt;/h2&gt;&lt;p&gt;Our current evaluation of generative AI development tooling is that it does not
offer a benefit to our open source projects nor to the user of the AI tooling.
Indeed, "when developers use AI tools, they take 19% longer than without—AI
makes them slower." (METR, 2025). A recent report from MIT NANDA indicates
"that 95% of organizations are getting zero return [from generative AI]."
(Challapally et al., 2025). AI tooling enables the creation of spurious work
for reviewers. For example, see the following comment on an AI slop
submission:&lt;/p&gt;
&lt;blockquote&gt;&lt;p&gt;This code does not call curl. This is not a "POC" of anything than [sic]
suggesting you did this with an AI and that you do not understand what you're
doing here.
&lt;br&gt;Please identify the exact line of curl source code that has the problem
you say exists.
&lt;br&gt;(badger, 2025)&lt;/p&gt;
&lt;/blockquote&gt;
&lt;h2 id="counterproductive"&gt;Counterproductive&lt;/h2&gt;&lt;p&gt;Especially for our contributors, when we participate in work programs like
Google Summer of Code (GSoC) or Outreachy, AI tools train the wrong skills. We
want contributors who are learning the technologies that underpin our open
source projects.&lt;/p&gt;
&lt;blockquote&gt;&lt;p&gt;I listened to an industry representative say that he wants students to have
“design thinking and the ability to ask questions” without recognizing that
the student use of AI tools he advocates will stunt their critical thinking
skills, making it impossible for them to ask questions and do interesting
“design thinking.”.
&lt;br&gt;(Valeries, 2025)&lt;/p&gt;
&lt;/blockquote&gt;
&lt;h2 id="responsibility-and-solidarity"&gt;Responsibility and solidarity&lt;/h2&gt;&lt;p&gt;In addition to concerns with how AI development tools might negatively impact
our day-to-day, the Technology team has concerns about how generative AI
technology is created and implemented/deployed. Even if generative AI
development tools were actually helpful, the Technology team would be reluctant
to use tools that were developed in a way that harmed others, that are funded
by deployments/implementations that harm others, and that offer short-term
benefits at an existential cost.&lt;/p&gt;
&lt;h2 id="references"&gt;References&lt;/h2&gt;&lt;ul&gt;
&lt;li&gt;badger. (2025, September 16). Comment on Stack Buffer Overflow in cURL Cookie
Parsing Leads to RCE. curl.
&lt;a href="https://hackerone.com/reports/3340109#activity-36894924"&gt;https://hackerone.com/reports/3340109#activity-36894924&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;Challapally, A., Pease, C., Raskar, R., Chari, P., (2025, July). The GenAI
Divide: STATE OF AI IN BUSINESS 2025. MIT NANDA.
&lt;a href="https://www.artificialintelligence-news.com/wp-content/uploads/2025/08/ai_report_2025.pdf"&gt;https://www.artificialintelligence-news.com/wp-content/uploads/2025/08/ai_report_2025.pdf&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;EditorDavid. (2025, May 31). GitHub Users Angry at the Prospect of AI-Written
Issues From Copilot. Slashdot.
&lt;a href="https://developers.slashdot.org/story/25/06/01/0049240/github-users-angry-at-the-prospect-of-ai-written-issues-from-copilot"&gt;https://developers.slashdot.org/story/25/06/01/0049240/github-users-angry-at-the-prospect-of-ai-written-issues-from-copilot&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;METR. (2025, July 10). Measuring the Impact of Early-2025 AI on Experienced
Open-Source Developer Productivity. METR.
&lt;a href="https://metr.org/blog/2025-07-10-early-2025-ai-experienced-os-dev-study/"&gt;https://metr.org/blog/2025-07-10-early-2025-ai-experienced-os-dev-study/&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;Valeries, Barr. (2025, August 29). Feeling Cranky About AI and CS Education.
Communications of the ACM.
&lt;a href="https://cacm.acm.org/blogcacm/feeling-cranky-about-ai-and-cs-education/"&gt;https://cacm.acm.org/blogcacm/feeling-cranky-about-ai-and-cs-education/&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
</content></entry><entry><title>Refactoring and Releasing the new CC Chooser: Part 2</title><link href="http://opensource.creativecommons.org/blog/entries/2025-10-06-refactoring-the-cc-chooser-pt-2/" rel="alternate"/><updated>2025-10-06T00:00:00Z</updated><author><name>['sara']</name></author><id>urn:uuid:37b05421-d008-3d52-8984-d785641d4a38</id><content type="html">&lt;p&gt;This blog is part two of a three part series: &lt;a href="/blog/series/2025-chooser-refactor/"&gt;Refactoring and Releasing the 
new CC Chooser&lt;/a&gt;.&lt;/p&gt;
&lt;p&gt;The Creative Commons Chooser 2025 refactor offers a number of improvements 
across the surface of the application. Wherever possible we tried to consider 
if the footprint or implementation could be more straightforward and simple and 
then worked from there. The end goal being an application that would be 
considerably more flexible in its upkeep and advancement.&lt;/p&gt;
&lt;h2 id="reevaluating-core-features-and-use"&gt;Reevaluating core features and use&lt;/h2&gt;&lt;p&gt;This was accomplished by first understanding and reestablishing what the core 
set of functionality the Chooser should provide.&lt;/p&gt;
&lt;p&gt;We started with the use cases that were present within the 2020 beta Chooser:&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;Provide a license recommendation&lt;/li&gt;
&lt;li&gt;Passively educate the user about licenses and their properties/use-cases&lt;/li&gt;
&lt;li&gt;Allow a user, who is an Author, to generate a "mark" in a variety of formats 
(which generally meets the requirements of the license)&lt;/li&gt;
&lt;li&gt;Allow a user, who is a reUser/reMixer, to generate an "attribution" mark 
when not adequately provided from the original author&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;From the above four use cases, 1 &amp;amp; 2 were the original core aims of the Chooser.&lt;/p&gt;
&lt;p&gt;Use case 3 was added as a mechanism to make applying the choice easier (but if 
the Author doesn't adequately provide a mark with Attribution Information then 
reUsers/reMixers may not be able to meet the spirit of the terms of the license 
(Attribution being required). The Attribution Details being optional is true in 
that it doesn't block a license recommendation, nor the passive education (1 &amp;amp; 
2); but if a user is expecting 3 as a main use-case then the Attribution 
Details become required, colliding with a contextual expectation.&lt;/p&gt;
&lt;p&gt;Use case 4 was not an intention of the Chooser, but something users have ended 
up using it regularly for, since Authors will often only use a general marking 
statement, such as “This Work is licensed CC-BY”.&lt;/p&gt;
&lt;p&gt;Moving forward we would hope to focus on use cases 1-3, with the initial MVP 
scope of the Chooser refactor prioritizing 1, and then moving into the other 
two as supporting use cases. Use case 4 will not be a primarily supported use 
case, but we expect people will continue to use the Chooser for it until a 
better tool comes along.&lt;/p&gt;
&lt;h2 id="turning-scope-into-technical-methods"&gt;Turning scope into technical methods&lt;/h2&gt;&lt;p&gt;The Chooser spirals outward from the core decision pathways in the stepper 
guiding someone through a series of questions and resulting 
recommendations.Those pathways have two main branches that fork at the 
beginning (Do you need help? Yes/No), and regardless of what comes after, 
eventually provide an appropriate recommendation once all required fields are 
met.&lt;/p&gt;
&lt;p&gt;From there, the Attribution Fields can be filled out and will populate the 
Marking section to allow for easier work marking from all the available user 
supplied data.&lt;/p&gt;
&lt;p&gt;This means the decision stepper is the core piece of technical functionality 
that we would need to stabilize first, and everything else would then build 
from that standard setup.&lt;/p&gt;
&lt;p&gt;We could employ a method of interwoven if/else and/or switch statements that 
moved through a series of logic gates checking against combinations of 
question/answer pairings combined together into certain recommendations, but in 
the case of the Chooser we already know what all the answers are. We know that 
the recommendation can be 1 of 7 possible legal tools, and that there are two 
main pathways to get to each of those tools from the “Do you know which 
license you need? yes/no” question.&lt;/p&gt;
&lt;p&gt;If we work backwards from this premise we can standardize these pathways into a 
format which can describe the complete decision tree, and then work backwards.&lt;/p&gt;
&lt;p&gt;That then looks generally like this:&lt;/p&gt;
&lt;p&gt;&lt;code&gt;[step-1-question]/[answer]/[step-2-question]/[answer]/…/&amp;amp;tool=[tool-req-name]&lt;/code&gt;&lt;/p&gt;
&lt;p&gt;This breaks down into 14 possible correct pathways.&lt;/p&gt;
&lt;p&gt;This format lets us describe the pathway state throughout a particular UX, in a 
uniform and easily parsable format.&lt;/p&gt;
&lt;p&gt;From there we can set up the form to build out a state pathway as questions are 
answered, and when a full path matches a possible correct path end state, a 
particular recommendation can be accurately made.&lt;/p&gt;
&lt;p&gt;Everything else can be assumed to be unknown (non matching).&lt;/p&gt;
&lt;p&gt;This gives us a starting point to set up a simple state machine, and check 
against routinely at specific events and provide recommendations and/or update 
the interface.&lt;/p&gt;
&lt;h2 id="reducing-the-javascript-footprint-and-overhead"&gt;Reducing the JavaScript footprint and overhead&lt;/h2&gt;&lt;p&gt;Once we no longer needed a complex state management engine because we only have 
14 possible correct “states” we’d like to handle, we could move away from 
the need for a larger more complex state management framework like Vue.js.&lt;/p&gt;
&lt;p&gt;The 2020 beta Chooser utilized Vue.js and its dependency chain, the newer 2025 
Chooser refactor utilizes a single vanilla JavaScript (JS) file. This resulted 
in approximately a 98% reduction in the amount of JavaScript!&lt;/p&gt;
&lt;p&gt;This also lets us dramatically reduce the dependency chain, which in turn makes 
the Chooser more secure, more stable, and more maintainable overall.&lt;/p&gt;
&lt;p&gt;Running the project through the &lt;a href="https://github.com/boyter/scc"&gt;SCC tool&lt;/a&gt; shows the newer refactor 
would be estimated to cost $113,716 to develop, take 6.02 months, and require 
1.68 people to complete.&lt;/p&gt;
&lt;p&gt;The refactor planning began in 2024, but the total time from initial refactor 
to completion code-wise was approximately 3 months (half the estimated time), 
with 1 person working on it part time (due to other obligations and 
responsibilities).&lt;/p&gt;
&lt;p&gt;The original 2020 beta Chooser run through the SCC tool shows an estimated cost 
to develop of 8.88 months, and requiring 3.16 people to complete. This means 
not only did the refactor overperform on cost on its own estimations, it 
reimplemented the same degree of functionality with 1.8% of the code of the 
original, and accomplished what would have taken 3 people to do in 9 months 
full-time.&lt;/p&gt;
&lt;p&gt;This is good, because the Chooser needs to be more maintainable and stable, but 
also flexible enough to build out newer features over time.&lt;/p&gt;
&lt;p&gt;The state paths and smaller footprint means that we are left with a minimal 
amount of logic required to alter the visual state of the UX, and to allow a 
user to move through the stepper, the attribution fields, and the various 
marking formats and their individual functionalities.&lt;/p&gt;
&lt;h2 id="embrace-native-support-and-semantics"&gt;Embrace native support and semantics&lt;/h2&gt;&lt;p&gt;As the decision stepper is the main interaction element, the new markup was 
first built from there, setting up a semantic form, grouped into fieldsets, and 
labelled accordingly.&lt;/p&gt;
&lt;p&gt;The classes in particular let the markup describe each component in a way that 
can be more directly tied to the logic the JS will later perform.&lt;/p&gt;
&lt;p&gt;There is some measure of dynamic “data + markup” being swapped within the 
UX based on user selections. Previously Vue.js packages and their dependencies 
would handle holding onto this data.&lt;/p&gt;
&lt;p&gt;In the refactor we opted to make use of the &lt;code&gt;&amp;lt;template&amp;gt;&lt;/code&gt; element, which let us 
lean on existing HTML and JS functionality, and also established a foundation 
from which more robust Web Components could be utilized later if such a need 
arose, giving us a stable path of complexity to follow down the line.&lt;/p&gt;
&lt;p&gt;We also opted to avoid the use of popup modals and tabs, and instead leaned on 
&lt;code&gt;&amp;lt;summary&amp;gt;&lt;/code&gt;/&lt;code&gt;&amp;lt;details&amp;gt;&lt;/code&gt; elements instead to accomplish similar behavior without 
the 
need for JS based behavior. Once again keeping our JS footprint much smaller.&lt;/p&gt;
&lt;h2 id="improving-the-ux"&gt;Improving the UX&lt;/h2&gt;&lt;h3 id="reducing-friction"&gt;Reducing friction&lt;/h3&gt;&lt;p&gt;We tried to reduce redundancy and better control friction within the UX 
wherever possible in the 2025 refactor.&lt;/p&gt;
&lt;p&gt;The prior 2020 beta Chooser had “Next” and “Back” buttons within the 
interface which largely had no necessary purpose. The Tool Recommendation was 
often updated live as fields were filled out, so the only reason to hit the 
Next button was to get more of the input interface to appear, rather than to 
get more useful output within the Recommendation area.&lt;/p&gt;
&lt;p&gt;With the refactor we removed these buttons, giving the user the ability to move 
from fieldset to fieldset within the UX without an additional step in the 
process of input. Whether they move forwards or backwards the UX responds 
accordingly without the added friction. This lets people move through to a 
recommendation much more quickly. This change also lets us remove the 
“Reset” button as well, since moving backwards through the fieldsets will 
reset lower fieldset values automatically. We also get a boost in accessibility 
with its removal, since it’s not advised as a solid use case within 
accessible interfaces, &lt;a href="https://www.nngroup.com/articles/reset-and-cancel-buttons/"&gt;due to it being too easily clicked&lt;/a&gt;.&lt;/p&gt;
&lt;blockquote&gt;&lt;p&gt;“The Web would be a happier place if virtually all Reset buttons were 
removed. This button almost never helps users, but often hurts them.” (&lt;a href="https://www.nngroup.com/articles/reset-and-cancel-buttons/"&gt;Reset 
and Cancel Buttons - NN/G&lt;/a&gt;)&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;We also removed the final "Done" button and its adjacent shaking behavior. The 
“Done” button had an erroneous purpose, since the recommendation was 
already available on the right, and it was unclear why the “Done” button 
would be necessary to reach a final UX state.&lt;/p&gt;
&lt;p&gt;The shaking behavior is also generally a UX convention deployed to indicate 
that an error has occurred or that inadequate or incorrect information has been 
input within a form. The original aim with the prior chooser was to draw 
attention to the Tool Rec and marking areas being “finished”, but instead 
communicated that some form of error had occurred. This was reported multiple 
times by users, so this behavior was removed entirely to make things less 
confusing and more clear.&lt;/p&gt;
&lt;p&gt;The shaking behavior was accompanied by a form of “scroll jacking” which 
would scroll the user’s viewport back to the top so the shaking behavior 
could be visible when it occurred. This was also removed.&lt;/p&gt;
&lt;p&gt;Overall, we also tried to remove the number of steps, clicks, or choices a user 
might have to move through to get to a usable recommendation where possible. 
One clear example of this is prepopulating the first question with the default 
of “Yes”. This means returning users who are already familiar with the 
choice can proceed more swiftly without adding any additional steps for those 
that still need help.&lt;/p&gt;
&lt;p&gt;Attribution marking now shows up as soon as a tool recommendation has been 
provided, linking the two together better contextually, and not as a later 
phase of the form’s state lifecycle.&lt;/p&gt;
&lt;h3 id="adding-friction"&gt;Adding friction&lt;/h3&gt;&lt;p&gt;To make the UX more usable we also added friction where it made sense. The 
pathway that leads to a CC0 recommendation no longer provides a recommendation 
without checking the two acknowledgement checkboxes, to ensure the user is 
given the chance to fully understand what they are doing by utilizing CC0.&lt;/p&gt;
&lt;p&gt;We also leaned more on the “Need Help?” section to provide deeper 
explanations rather than adding more information in other areas. This 
section’s newer placement lets it serve as a way to drill down further, 
without having to increase the density of information in the fieldsets.&lt;/p&gt;
&lt;h3 id="better-related-ux-element-binding-and-separation"&gt;Better related UX element binding and separation&lt;/h3&gt;&lt;p&gt;Despite being a rather simple interface the Chooser offers several overlapping 
use cases, and as such we tried to find subtle ways to bind distinct areas of 
input to related areas of output either with attention focus, or with some 
measure of connective mechanisms.&lt;/p&gt;
&lt;p&gt;The Attribution fields include descriptive placeholder data, which also shows 
up within the various marking formats helping to bind the two areas together as 
having an input/output relationship not just generally, but also more 
specifically for the individual input fields and output tokens. This allows a 
user to start with the Attribution fields and see the results in the Marking 
formats, or first encounter the Marking Formats after reaching a Tool 
Recommendation, and then make a connection back to the Attribution Fields as 
the input source for them. The goal being a bi-directional relationship that is 
intuitive.&lt;/p&gt;
&lt;p&gt;Another area where this shows up is with the Tool Recommendation itself. When 
it appears after a successful set of fieldsets align it is distinctive in its 
appearance, but it also has a “waiting for required fields” placeholder 
element for the zero state of the UX, so that the shift is more intuitive that 
results will appear here once input, and that they are also distinct visually 
from the Marking Formats section below.&lt;/p&gt;
&lt;h2 id="increasing-plasticity"&gt;Increasing plasticity&lt;/h2&gt;&lt;p&gt;The final result of the refactor is a dramatically smaller and more manageable 
codebase, a much narrower pathway of function and logic, better integration 
with the Vocabulary Design system, and a robust use of semantic accessible 
markup. This radical reduction in the code footprint and complexity overall 
means the refactored 2025 Chooser is now much more agile and can more easily 
grow or pivot in new directions.&lt;/p&gt;
&lt;h2 id="closing"&gt;Closing&lt;/h2&gt;&lt;p&gt;Overall, the code footprint is now &lt;strong&gt;57.52 times smaller&lt;/strong&gt;! If the refactored 
codebase's footprint was Earth, then the old codebase's footprint would be Neptune, 
since Neptune's volume is 58 times larger than Earth (&lt;a href="https://www.space.com/41-neptune-the-other-blue-planet-in-our-solar-system.html#:~:text=Neptune%20is%20the%20eighth%20and,Earth&amp;#39;s%20volume%2C%20according%20to%20NASA."&gt;you can fit 58 Earths 
within Neptune&lt;/a&gt;)&lt;/p&gt;
&lt;p&gt;Despite the number of improvements throughout the refactor, one of the key 
goals was clearing out enough bitrot and complexity to make room for the 
project to grow sensibly and responsibly again. We weren’t just trying to 
improve the Chooser for a static launch, but to reposition it so that it could 
once again grow more easily in the directions that would benefit its users most.&lt;/p&gt;
&lt;p&gt;We already have a bit of a roadmap in mind, and we’ll get into that in the 
final installment, &lt;strong&gt;Part 3: Future Growth: What’s next for the Chooser&lt;/strong&gt;, 
and 
what directions we hope to grow it.&lt;/p&gt;
</content></entry><entry><title>Refactoring and Releasing the new CC Chooser: Part 1</title><link href="http://opensource.creativecommons.org/blog/entries/2025-07-11-refactoring-the-cc-chooser-pt-1/" rel="alternate"/><updated>2025-07-11T00:00:00Z</updated><author><name>['sara']</name></author><id>urn:uuid:12eaf1bd-68c0-324c-99c8-931d8b2c255d</id><content type="html">&lt;p&gt;This blog is part one of a three part series: &lt;a href="/blog/series/2025-chooser-refactor/"&gt;Refactoring and Releasing the 
new CC Chooser&lt;/a&gt;.&lt;/p&gt;
&lt;p&gt;We’re excited to announce that we have finally moved the Chooser from a 
long-term beta state into a finished and stable v1.0. But it certainly hasn’t 
been a straight-line. The Chooser has been met with a lot of challenges along 
the way and in this series we’ll walk through that journey in three parts:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Part 1: History and debt: The historical context that led to the newest 
refactor and release of the 2025 Chooser.&lt;/li&gt;
&lt;li&gt;Part 2: Specifics and fixes: Breaking down the specifics of technical debt, 
issues, complexity, contextual-shift misalignment, and fixes.&lt;/li&gt;
&lt;li&gt;Part 3: Future Growth: What’s next for the Chooser, and what directions we 
hope to grow it.&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 id="whats-the-chooser"&gt;What’s the Chooser?&lt;/h2&gt;&lt;p&gt;From our &lt;a href="https://creativecommons.org/share-your-work/"&gt;website&lt;/a&gt;:&lt;/p&gt;
&lt;blockquote&gt;&lt;p&gt;Our &lt;a href="https://creativecommons.org/choose/"&gt;chooser&lt;/a&gt; helps you determine which Creative Commons License is 
right for 
you in a few easy steps. If you are new to Creative Commons, you may also want 
to read licensing considerations before you &lt;a href="https://creativecommons.org/choose/"&gt;get started with the 
chooser&lt;/a&gt;&lt;/p&gt;
&lt;/blockquote&gt;
&lt;h2 id="circumstances-and-context"&gt;Circumstances and context&lt;/h2&gt;&lt;p&gt;What do you do when an ecosystem shifts, not just with the number of engineers, 
but also from the focal point of complexity built around a core product that no 
longer exists at an org? You evaluate the context within which everything 
exists and you reevaluate what works from there forward.&lt;/p&gt;
&lt;p&gt;The Chooser has existed as a tool within the Creative Commons (CC) main website 
for over fifteen years, and helped guide countless people through their choice 
of sharing restraints and freedoms combined with which Legal Tool those 
requirements are best aligned with. In 2019 the Chooser was met with a need to 
refactor both its UX, and also its core technological approach. The CC 
Technology team was focused hard on CC Search, which would later launch in the 
Summer of 2019. CC Search was a rather complex application that required a more 
robust and dynamic user interface. It was in every way much more of an app than 
a website and so the team chose to build out the CC Search engine with Vue.js. 
Like the rest of the JavaScript ecosystem, this meant some speed and 
affordances in dev time with a trade off in larger code dependency and 
complexity; given the size of their team and the ecosystem they were seeking to 
build it was a solid and reasonable judgement call.&lt;/p&gt;
&lt;h2 id="building-an-ecosystem-from-a-strong-core-product"&gt;Building an ecosystem from a strong core product&lt;/h2&gt;&lt;p&gt;After landing on Vue and setting to work to build out the search engine, it 
became reasonable to also move as many other projects to the same ecosystem so 
that updates overall could better operate as a supportive ecosystem. If other 
websites and projects were moved to Vue, then they could share dependencies, 
benefit from fixes and updates, and as the CC Search engine grew it could have 
the delightful benefit of lifting up all the other projects along the way.&lt;/p&gt;
&lt;p&gt;With a larger engineering team to manage the ecosystem it made a lot of sense 
(Node is sprawling, and can be overkill in the wrong circumstances). It 
decreased the complexity of managing a search engine, while adding some 
complexity to smaller projects, with the balanced gain of spreading updates and 
works across the whole a lot more cohesively. The end goal here was a 
development environment that was much less siloed and more responsibility 
consistent in how it approached dev work.&lt;/p&gt;
&lt;p&gt;Vocabulary also entered the picture at this time. Its goal was to operate as a 
design spec and implementation “rule system” for the Vue framework 
implementation.&lt;/p&gt;
&lt;h2 id="shifting-circumstances"&gt;Shifting circumstances&lt;/h2&gt;&lt;p&gt;In 2020, Covid shocked our society, disrupted giving, and brought staff 
reductions to Creative Commons. Most of the Technology team was laid off. Work 
was mostly suspended, some projects were sunset, and others were left with 
minimal maintenance. Thankfully, CC Search was acquired and continued by 
Automattic as [Openverse][openverse]. However, with its absence came a rather 
large hole at 
the center of a very large development wheel.&lt;/p&gt;
&lt;p&gt;Without the CC Search engine, now all the smaller projects which had adopted 
Vue would no longer receive the benefit of being attached to the larger 
project’s progress. Instead a balkanization began to unfold. The flexibility 
and scale that the Node ecosystem had offered when the CC Engine existed at the 
organization no longer applied, and now Node in all its forms within all the 
various projects were a liability instead of a strength.&lt;/p&gt;
&lt;p&gt;Node is a fast moving system, and without a larger team it was difficult to 
keep dependencies updated, tested, and secure. Projects began to drift away 
from each other. Some projects still utilized Vue, others only halfway, and 
others abandoned in-progress migrations to Vue, instead falling back to what 
they had been doing before. The ecosystem fragmented and technical debt began 
to accrue. Since Vue (and by proxy Node/NPM) moves so quickly–the debt 
accrual was considerable.&lt;/p&gt;
&lt;h2 id="the-2020-chooser-in-limbo"&gt;The 2020 Chooser in limbo&lt;/h2&gt;&lt;p&gt;The 2020 Chooser, left with minimal maintenance, was a beta version. It was 
revamped and rebuilt to focus on the latest legal tools, offer a better UX, and 
incorporate the Vocabulary design system. It was built from the ground up 
entirely within Vue. And so the Chooser largely stayed, mired in beta due to an 
ever increasing amount of technical debt. The rest of the world was moving from 
Vue 2 to Vue 3, but there wasn't capacity at CC to update the Chooser.&lt;/p&gt;
&lt;p&gt;By 2023, the Technology team had the capacity to begin reducing technical debt. 
Later that year the main CC site redesign was launched. That work cleared the 
way for redoing the Vocabulary design system, removing Vue, and simplifying its 
approach to be better scaled to a more concise set of engineering resources. 
The new site better utilized native WordPress functionality and minimized 
JavaScript (it did not use Vue or any other JavaScript framework).&lt;/p&gt;
&lt;h2 id="laying-groundwork-for-a-refactor-and-release"&gt;Laying groundwork for a refactor and release&lt;/h2&gt;&lt;p&gt;A lot of time had passed since its original beta redesign and 2020 beta 
release. The scope of the Chooser needed to be reconsidered. The core of its 
functionality needed to be narrowed back down to manageable goals, decision 
pathways, and stable long-term engineering.&lt;/p&gt;
&lt;p&gt;In 2025, the Chooser was updated to better align with both the larger CC dev 
ecosystem and the capacity of the Technology team. These changes have resulted 
in a Chooser that is more integrated, balanced, stable, and viable long term.&lt;/p&gt;
&lt;h2 id="moving-forward"&gt;Moving forward&lt;/h2&gt;&lt;p&gt;In the next part of this series we’ll walk through the technical debt the 
Chooser had accrued, and the specific improvements and changes that we’ve 
implemented!&lt;/p&gt;
</content></entry><entry><title>Migrating from MariaDB 10.4 to 10.11 on AWS RDS</title><link href="http://opensource.creativecommons.org/blog/entries/2025-03-06-AWS-RDS-blog-post/" rel="alternate"/><updated>2025-03-24T00:00:00Z</updated><author><name>['shafiya']</name></author><id>urn:uuid:5883a758-4e87-369c-b744-dee79053503c</id><content type="html">&lt;p&gt;As part of AWS’s request to migrate the RDS DB engine from MariaDB 10.4 to 10.11, this blog post provides a detailed, step-by-step guide to ensure a smooth transition. We’ll cover the pre-migration steps, the actual upgrade process, and post-migration verification to minimize downtime and potential issues.&lt;/p&gt;
&lt;p&gt;Let’s dive in!&lt;/p&gt;
&lt;h2 id="pre-migration-steps"&gt;Pre-Migration Steps&lt;/h2&gt;&lt;p&gt;Before performing the upgrade, it’s essential to ensure a structured migration plan, especially if your environment has customized database parameters. Follow these preliminary steps:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Create a DB Parameter Group – Customizes database-specific settings for the new engine version.&lt;/li&gt;
&lt;li&gt;Create an Option Group – Manages additional features like replication and logging.&lt;/li&gt;
&lt;li&gt;Backup and Test – Take a snapshot of the existing database to prevent data loss.&lt;/li&gt;
&lt;/ul&gt;
&lt;h3 id="create-a-db-parameter-group"&gt;Create a DB Parameter Group&lt;/h3&gt;&lt;p&gt;RDS DB Parameter Groups allow you to configure database-specific parameters, such as memory, cache, and other DB settings. You need to create a custom DB Parameter Group for MariaDB 10.11 because different versions require different settings.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;How to Create a DB Parameter Group&lt;/strong&gt;&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Login to AWS Management Console&lt;ul&gt;
&lt;li&gt;Go to the RDS service in the AWS Management Console.&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;Navigate to Parameter Groups&lt;ul&gt;
&lt;li&gt;In the left navigation pane, under Databases, select Parameter Groups.&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;Create a New Parameter Group&lt;ul&gt;
&lt;li&gt;Click on Create parameter group.&lt;/li&gt;
&lt;li&gt;Parameter group family: Choose mariadb10.11 from the dropdown.&lt;/li&gt;
&lt;li&gt;Group name: Provide a meaningful name like webserver-stage-rds parameters-mariadb-10-11.&lt;/li&gt;
&lt;li&gt;Description: Optionally add a description such as "Custom Parameter Group for MariaDB 10.11."&lt;/li&gt;
&lt;li&gt;Click Create.&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;Modify the Parameters&lt;ul&gt;
&lt;li&gt;Once the parameter group is created, click on it to edit.&lt;/li&gt;
&lt;li&gt;Modify the parameters as per your application’s requirements, e.g., change innodb_buffer_pool_size,time_zone, etc., to optimize for the new version.&lt;/li&gt;
&lt;li&gt;Click Save changes once done.&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;h3 id="create-an-option-group"&gt;Create an Option Group&lt;/h3&gt;&lt;p&gt;Option Groups are a collection of database options (such as replication, backups, and logging) that you can apply to RDS instances. To migrate from 10.4 to 10.11, you need to create and associate an Option Group with the new engine version.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;How to Create an Option Group&lt;/strong&gt;&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Go to Option Groups in RDS&lt;ul&gt;
&lt;li&gt;In the AWS Management Console, go to RDS and then Option Groups under the Databases section.&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;Create an Option Group&lt;ul&gt;
&lt;li&gt;Click Create group.&lt;/li&gt;
&lt;li&gt;Option group name: Provide a name like default:mariadb-10-11.&lt;/li&gt;
&lt;li&gt;Engine version: Select MariaDB 10.11.&lt;/li&gt;
&lt;li&gt;Click Create.&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;Add Options to the Group&lt;ul&gt;
&lt;li&gt;Select the new Option Group you just created.&lt;/li&gt;
&lt;li&gt;Click Add option to save the selected options.&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 id="perform-the-mariadb-version-upgrade"&gt;Perform the MariaDB Version Upgrade&lt;/h2&gt;&lt;p&gt;Once you’ve created the required DB Parameter Group and Option Group, you’re ready to perform the migration from MariaDB 10.4 to 10.11.&lt;/p&gt;
&lt;h3 id="how-to-perform-the-migration"&gt;How to Perform the Migration&lt;/h3&gt;&lt;ul&gt;
&lt;li&gt;Backup Your Database&lt;ul&gt;
&lt;li&gt;It’s important to create a snapshot of your current DB instance before starting the upgrade process. This ensures that you can roll back in case of any issues.&lt;/li&gt;
&lt;li&gt;Go to your RDS instance and click on Actions → Take Snapshot.&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;Modify the DB Instance to Use the New Version&lt;ul&gt;
&lt;li&gt;Navigate to Databases in the AWS RDS dashboard.&lt;/li&gt;
&lt;li&gt;Select the DB instance you want to upgrade.&lt;/li&gt;
&lt;li&gt;Click Modify at the top right.&lt;/li&gt;
&lt;li&gt;Under DB Engine Version, choose 10.11 from the drop-down.&lt;/li&gt;
&lt;li&gt;Under DB Parameter Group, select the custom parameter group created for 10.11.&lt;/li&gt;
&lt;li&gt;Under Option Group, select the newly created Option Group for MariaDB 10.11.&lt;/li&gt;
&lt;li&gt;Click Continue.&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;Apply Changes&lt;ul&gt;
&lt;li&gt;Choose whether you want the changes to apply immediately or during the next maintenance window. For minimal downtime, apply during the maintenance window.&lt;/li&gt;
&lt;li&gt;Review the changes and click Modify DB Instance.&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;Reboot the Instance (if necessary)&lt;ul&gt;
&lt;li&gt;Once the modification is complete, your DB instance might need to be rebooted for the changes to take effect. Confirm and reboot if prompted.&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;h3 id="verify-the-migration"&gt;Verify the Migration&lt;/h3&gt;&lt;p&gt;After the upgrade is complete, it’s time to verify the migration.&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Check DB Engine Version&lt;/li&gt;
&lt;li&gt;Check Application Performance&lt;ul&gt;
&lt;li&gt;Test your application to ensure that it works properly with the new MariaDB version.&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;Review Logs&lt;ul&gt;
&lt;li&gt;Check the RDS logs to verify that no errors have occurred during the upgrade process.&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 id="post-migration-clean-up"&gt;Post-Migration Clean-Up&lt;/h2&gt;&lt;ul&gt;
&lt;li&gt;Delete Old Parameter and Option Groups (if not required)&lt;ul&gt;
&lt;li&gt;Once the migration is successful and tested, you can clean up unused Parameter and Option Groups to avoid unnecessary overhead.&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;Monitor and Scale&lt;ul&gt;
&lt;li&gt;Monitor the instance for any potential issues and scale the resources (e.g., CPU, memory) if required based on the performance of MariaDB 10.11.&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 id="conclusion"&gt;Conclusion&lt;/h2&gt;&lt;p&gt;Migrating from MariaDB 10.4 to 10.11 on AWS RDS is a straightforward process, but it requires careful planning, especially around DB Parameter Groups and Option Groups.
By following the steps outlined in this blog post, you can ensure a smooth transition to the latest MariaDB version, improving the performance, security, and scalability of your application.
Remember to always perform proper backups, test the migration in a staging environment, and monitor post-migration performance to ensure everything is functioning as expected.&lt;/p&gt;
&lt;h2 id="best-practices"&gt;Best Practices&lt;/h2&gt;&lt;ul&gt;
&lt;li&gt;✔ Always test the migration in a staging environment before applying changes in production.&lt;/li&gt;
&lt;li&gt;✔ Monitor RDS logs and application performance after the upgrade.&lt;/li&gt;
&lt;li&gt;✔ Ensure proper backups before initiating any engine version changes.&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;By implementing these best practices, you can enhance performance, security, and scalability while ensuring a successful migration.&lt;/p&gt;
&lt;p&gt;🚀 Happy migrating!&lt;/p&gt;
&lt;h2 id="references"&gt;References&lt;/h2&gt;&lt;ul&gt;
&lt;li&gt;&lt;a href="https://docs.aws.amazon.com/AmazonRDS/latest/UserGuide/Concepts.DBEngineVersion.html"&gt;AWS RDS Documentation - MariaDB Engine Versions&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://docs.aws.amazon.com/AmazonRDS/latest/UserGuide/Overview.DBParameterGroups.html"&gt;AWS RDS Parameter Groups&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://docs.aws.amazon.com/AmazonRDS/latest/UserGuide/Overview.OptionGroups.html"&gt;AWS RDS Option Groups&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
</content></entry><entry><title>Reflecting On My Outreachy Journey With Creative Commons</title><link href="http://opensource.creativecommons.org/blog/entries/reflecting-on-my-outreachy-journey-with-creative-commons/" rel="alternate"/><updated>2025-02-27T00:00:00Z</updated><author><name>['Queen']</name></author><id>urn:uuid:e9199616-ea65-3705-aea7-fa6f5ddc421b</id><content type="html">&lt;p&gt;It feels like just yesterday I was writing my first blog post, trying to wrap my head around all the things I’d be doing during this internship. And now, here I am, writing my final post—time really does fly when you’re deep in code, refactoring, and figuring things out.&lt;/p&gt;
&lt;p&gt;When I started, I was both excited and nervous. I knew I’d be working on implementing and consolidating the Vocabulary design system across different Creative Commons ancillary websites, but I didn’t fully grasp just how much I’d learn along the way. The idea of making a meaningful contribution to such an impactful organization was thrilling, yet there was that little voice in my head wondering: &lt;em&gt;Can I really do this?&lt;/em&gt;&lt;/p&gt;
&lt;p&gt;Spoiler alert: Yes, I could—and I did!&lt;/p&gt;
&lt;h2 id="from-day-one-to-now-the-journey"&gt;From Day One to Now: The Journey&lt;/h2&gt;&lt;p&gt;My first few weeks were all about getting familiar with the codebase, understanding how Vocabulary worked, and figuring out how the different websites used it. I remember spending quite a bit of time just reading through the Vocabulary documentation, going through all of the websites to identify discrepancies, and trying to piece things together.&lt;/p&gt;
&lt;p&gt;Looking back, it’s funny how something that once felt so complex now feels like second nature.&lt;/p&gt;
&lt;h2 id="refactoring-the-issue-finder-removing-vue-for-a-simpler-setup"&gt;Refactoring the Issue Finder: Removing Vue for a Simpler Setup&lt;/h2&gt;&lt;p&gt;One of my major tasks was refactoring the issue finder tool on the Creative Commons Open Source website. This tool was built using Vue.js, but the goal was to remove Vue and refactor the JavaScript to align with the vocabulary approach - using HTML and CSS as much as possible with minimal and plain JavaScript.&lt;/p&gt;
&lt;p&gt;At first, this felt like a huge task, especially since I hadn’t used Vue before. The Vue-based setup handled filtering, UI interactions, and data fetching. Without a framework, I had to ensure that the core functionality remained intact while simplifying the code.&lt;/p&gt;
&lt;p&gt;I started by carefully analyzing how Vue was being used in the project. Then, I broke down the refactor into smaller steps:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Removing Vue dependencies and setting up a plan to replace its functionality with vanilla JavaScript.  &lt;/li&gt;
&lt;li&gt;Refactoring the JavaScript—rewriting event listeners, handling state manually, and simplifying functions where possible.  &lt;/li&gt;
&lt;li&gt;Ensuring everything still worked-since Vue had handled reactivity, I had to make sure UI changes (like filtering issues) were updated correctly without unnecessary complexity.  &lt;/li&gt;
&lt;li&gt;Testing and fine-tuning—checking for edge cases and making sure the refactored version behaved just like the Vue version (but with cleaner, more maintainable code).  &lt;/li&gt;
&lt;/ul&gt;
&lt;h2 id="working-with-datatables-a-whole-new-learning-curve"&gt;Working with DataTables: A Whole New Learning Curve&lt;/h2&gt;&lt;p&gt;One of the most interesting things I learned during my internship was working with datatables Before this project, I had never even heard of DataTables. I spent time reading through the documentation, testing out different configurations, and experimenting with how it handled datasets.&lt;/p&gt;
&lt;p&gt;Initially, I added DataTables to the project using a &lt;strong&gt;content delivery network (CDN)&lt;/strong&gt;, which was the quickest way to integrate it. However, after a suggestion from my mentor, we decided it would be better to download the source code and add it as a vendor folder in the project.&lt;/p&gt;
&lt;p&gt;After setting it up, I worked on overriding some default styles to make sure datatables aligned with Vocabulary’s design system. I had to carefully adjust CSS properties, inspect the DOM structure, and test different solutions to make sure everything looked cohesive.&lt;/p&gt;
&lt;p&gt;This entire process taught me an important lesson:&lt;/p&gt;
&lt;blockquote&gt;&lt;p&gt;&lt;strong&gt;Documentation is your best friend.&lt;/strong&gt; When dealing with a new tool, reading the official documentation can save so much time.&lt;/p&gt;
&lt;/blockquote&gt;
&lt;h2 id="from-midterm-to-now-wrapping-up-and-final-contributions"&gt;From Midterm to Now: Wrapping Up and Final Contributions&lt;/h2&gt;&lt;p&gt;After the midterm blog, my focus shifted towards finishing up the restyling process and addressing minor bugs across the Creative Commons Open Source website. These were smaller but important refinements—ensuring consistency, fixing UI inconsistencies, and making sure everything aligned with the Vocabulary design system.&lt;/p&gt;
&lt;h3 id="improving-the-search-portal"&gt;Improving the Search Portal&lt;/h3&gt;&lt;p&gt;One of the websites I worked on was the &lt;strong&gt;Search Portal&lt;/strong&gt;. This involved:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Defining the CC abbreviation in the header section to improve clarity and accessibility.  &lt;/li&gt;
&lt;li&gt;Restyling the search input to align visually with the provided context in Vocabulary, making it feel more integrated with the overall design.  &lt;/li&gt;
&lt;li&gt;Making downstream changes to ensure everything was up to date with Vocabulary’s latest standards.  &lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;The goal was to keep the existing functionality and improve on the design, making sure the search input visually aligned with the design system.&lt;/p&gt;
&lt;h3 id="cc-legal-database-legaldb-planning-for-future-work"&gt;CC Legal Database(LegalDB): Planning for Future Work&lt;/h3&gt;&lt;p&gt;Although LegalDB was initially part of the project scope, time constraints didn’t allow for implementation. Instead, I'm focusing on laying the groundwork for future contributions by:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Identifying necessary changes and documenting them thoroughly.  &lt;/li&gt;
&lt;li&gt;Creating all the relevant issues and linking them to the larger tracking issue on Vocabulary, ensuring that future contributors have a clear roadmap to follow.  &lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;This is so that even though I couldn’t complete the work myself, the transition for the next person picking it up would be smooth and well-documented.&lt;/p&gt;
&lt;h2 id="whats-next"&gt;What’s Next?&lt;/h2&gt;&lt;p&gt;This internship has solidified my love for front-end development, especially when it comes to building interfaces that are both beautiful and functional. My next goal? To dive deeper into &lt;strong&gt;animations, interactivity, and making the web more immersive&lt;/strong&gt; (looking at you, &lt;strong&gt;GSAP and Three.js&lt;/strong&gt;!).&lt;/p&gt;
&lt;p&gt;I also want to keep contributing to &lt;strong&gt;open source&lt;/strong&gt; and continue growing as a developer. This isn’t the end—it’s just the beginning of the next chapter.&lt;/p&gt;
&lt;h2 id="a-heartfelt-goodbye-for-now"&gt;A Heartfelt Goodbye (For Now!)&lt;/h2&gt;&lt;p&gt;To my mentors, and everyone who supported me during this internship— thank you! Your guidance, patience, and encouragement made this experience truly special.&lt;/p&gt;
&lt;p&gt;To future Outreachy interns: If you ever feel overwhelmed, know that it’s part of the journey. Keep asking questions, keep pushing through challenges, and most importantly—&lt;strong&gt;enjoy the process&lt;/strong&gt;. You’ll come out on the other side with skills, confidence, and a whole new appreciation for open source.&lt;/p&gt;
&lt;p&gt;And with that, it’s time to say goodbye to this chapter.&lt;/p&gt;
&lt;p&gt;Until then, &lt;strong&gt;happy coding!&lt;/strong&gt; 🚀&lt;/p&gt;
</content></entry><entry><title>Finding Problems, and Exercising Compassion</title><link href="http://opensource.creativecommons.org/blog/entries/2025-02-04-finding-solutions-exercising-compassion/" rel="alternate"/><updated>2025-02-04T00:00:00Z</updated><author><name>['sara']</name></author><id>urn:uuid:d3b97d81-1fc2-36ba-bca9-1d7114aab599</id><content type="html">&lt;p&gt;In engineering, in programming, in coding–in building anything that intersects 
with a human and a computer, context matters. It controls how a variable is 
scoped, how a function is called, and how styles in a CSS file might cascade 
and apply.&lt;/p&gt;
&lt;h2 id="context-matters"&gt;Context matters&lt;/h2&gt;&lt;p&gt;As the saying goes, "Context is everything". But despite that, it can be easy 
to miss or ignore context, to skim past it when encountering issues, when 
hunting for problems.&lt;/p&gt;
&lt;p&gt;So much of the engineering world is building things, moving things, refactoring 
things. It's a lot of activities that look and behave a lot like creating, but 
in equal measure a vast majority of roles and jobs in the field are about finding 
problems, whether by intention or accident.&lt;/p&gt;
&lt;p&gt;It's why we have "Issues" in code repositories, the name alone signifies that 
something is amiss. An expectation was not met, a small part of this does not 
easily align with that.&lt;/p&gt;
&lt;h2 id="pause-for-compassion"&gt;Pause for compassion&lt;/h2&gt;&lt;p&gt;Finding problems is as much the momentum of engineering as anything else, and 
once encountered, the problem begs for the next part; finding a solution.&lt;/p&gt;
&lt;p&gt;It is here at this transition, at the border, that I would invite you to pause. 
To step back and reconsider the problem you've just witnessed, the thing that 
is amiss and possibly blocking the work you are doing in some way.&lt;/p&gt;
&lt;p&gt;For it is here in this space, between problem-encountered, and solution-sought 
that we all could do better at exercising a degree of compassion.&lt;/p&gt;
&lt;p&gt;This problem was, in many ways, born out of the context within which it was 
first introduced. It may have been the after effect of an unrealistic 
timeline, or an unintended consequence of decisions made well outside the 
control and influence of the engineer that introduced it. It may have been 
put there, with full knowledge of its existence, but without any ability 
to circumvent its inclusion.&lt;/p&gt;
&lt;p&gt;The problem in question is not necessarily the product of one person, one team, 
or one process. It is, as is usually the case, the outcome of an 
interconnected and complex system of people and technology interacting and 
influencing one another.&lt;/p&gt;
&lt;p&gt;It can be easy to lean into the gravity of assuming this problem was easy to 
avoid, that it is a sign of poor decision making, or outright malice. That it 
is specifically indicative of someone or someones' shortcomings in the field. 
But engineering as a space of people is a place that can at times be a list 
of limited options, and the correct choice is not the one with zero 
problems, but the one that is accomplishable with the least problems, or 
even the least negatively impactful problems.&lt;/p&gt;
&lt;p&gt;Moreover, despite rigorous reviews and tests, things get missed, circumstances 
change, and given enough time the complex system we all work within has fault 
lines. Problems arise that no-one expected or anticipated.&lt;/p&gt;
&lt;h2 id="without-context-assume-the-best"&gt;Without context assume the best&lt;/h2&gt;&lt;p&gt;Context is key, but it is also often a mystery. In the case of an inherited 
system, you may be left with the problems, but little if any evidence of the 
context in which they were generated. You are left with the duty to seek 
solutions, and little reason as to why the problems were introduced in the 
first place.&lt;/p&gt;
&lt;p&gt;In all of these moments, we would all do better to remember compassion, to try 
to embrace that we do not know the full picture, the entire context. And that 
perhaps those before us, and around us did the best they were capable of within 
the system they were a part of.&lt;/p&gt;
&lt;p&gt;It is certainly easy to jump to conclusions, lay blame, and cast judgements at 
the engineers, coders, tinkerers, and builders that came before us. "Why would 
they do it like this?" "This is a mess!" "I don't understand what this is 
doing here?" It's fair to be frustrated, and reasonable to question the 
"why", but a bit of compassion goes a long way towards building a community 
of trust and well being within the larger system of building things on and 
around the internet.&lt;/p&gt;
&lt;h2 id="safe-to-learn-and-safe-to-improve"&gt;Safe to learn and safe to improve&lt;/h2&gt;&lt;p&gt;Without compassion in these cases, we can foster an environment where people 
are afraid to make any mistakes. One major issue with this is that beginners, 
being beginners, make a lot of reasonable mistakes, and if they do not feel 
safe to make those mistakes then the arena of open source loses beginners, 
and without that it does not flourish, it does not thrive.&lt;/p&gt;
&lt;p&gt;People, and the technological systems we create are imperfect. And the way we 
keep improving those systems isn't by solving coding problems alone, 
especially if those solutions don't come with a degree of compassion.&lt;/p&gt;
&lt;p&gt;So, consider for a moment the next time you encounter a problem, pause for a 
moment and try to have some compassion, to put yourself in the place of the 
coder who came before, and then move on to seeking solutions with a degree of 
understanding across time that while we may not meet each other or share the 
same context; perhaps both of us were trying to make things a little bit 
better in what we did, and in the end we did our best to keep the system 
improving, code moving, and trust growing.&lt;/p&gt;
</content></entry><entry><title>Outreachy Midpoint Progress With Creative Commons</title><link href="http://opensource.creativecommons.org/blog/entries/outreachy-midpoint-progess-with-creative-commons/" rel="alternate"/><updated>2025-01-19T00:00:00Z</updated><author><name>['Queen']</name></author><id>urn:uuid:667f699a-cc21-3b0a-8eef-e01c1f08f66c</id><content type="html">&lt;h1 id="outreachy-midpoint-blog-post"&gt;Outreachy Midpoint Blog Post&lt;/h1&gt;&lt;p&gt;Hi there! My name is Queen, and I’m an Outreachy intern at Creative Commons. My project involves consolidating and implementing the Vocabulary design system across Creative Commons ancillary websites. In this post, I’ll share my progress and key takeaways from the first half of my internship.&lt;/p&gt;
&lt;h2 id="project-overview"&gt;Project Overview&lt;/h2&gt;&lt;p&gt;The goal of my project is to implement the Vocabulary design system across several Creative Commons ancillary websites like the &lt;a href="https://opensource.creativecommons.org/"&gt;CC Open Source&lt;/a&gt;, &lt;a href="https://legaldb.creativecommons.org/en/"&gt;CC Legal Database&lt;/a&gt;, &lt;a href="https://search.creativecommons.org/"&gt;CC Search Portal&lt;/a&gt;, and &lt;a href="https://resources.creativecommons.org/"&gt;CC Resource Archive&lt;/a&gt;.&lt;/p&gt;
&lt;h2 id="progress-so-far"&gt;Progress So Far&lt;/h2&gt;&lt;h3 id="phase-one-refactoring-markup-to-align-with-vocabulary"&gt;Phase One: Refactoring Markup to Align with Vocabulary&lt;/h3&gt;&lt;p&gt;In the first phase, I focused on refactoring the markup to align with Vocabulary’s components and context. Here are the pull requests (PRs) merged during this phase:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href="https://github.com/creativecommons/ccos-website-source/pull/118"&gt;PR 118&lt;/a&gt;: Refactored the recent blog post section on the homepage.&lt;/li&gt;
&lt;li&gt;&lt;a href="https://github.com/creativecommons/ccos-website-source/pull/856"&gt;PR 856&lt;/a&gt;: Refactored the homepage markup to align with Vocabulary components.&lt;/li&gt;
&lt;li&gt;&lt;a href="https://github.com/creativecommons/ccos-website-source/pull/862"&gt;PR 862&lt;/a&gt;: Updated &lt;code&gt;page-with-toc.html&lt;/code&gt;, which serves as a template for many pages.&lt;/li&gt;
&lt;li&gt;&lt;a href="https://github.com/creativecommons/ccos-website-source/pull/863"&gt;PR 863&lt;/a&gt;: Initially, I planned to refactor the markup to Vocabulary’s context, but after feedback from my mentor, I instead removed legacy class names while retaining the table structure.&lt;/li&gt;
&lt;li&gt;&lt;a href="https://github.com/creativecommons/ccos-website-source/pull/865"&gt;PR 865&lt;/a&gt;: Refactored the blog’s author page to match Vocabulary’s “person” context.&lt;/li&gt;
&lt;li&gt;&lt;a href="https://github.com/creativecommons/ccos-website-source/pull/866"&gt;PR 866&lt;/a&gt;: Updated the blog structure to follow Vocabulary markup.&lt;/li&gt;
&lt;li&gt;&lt;a href="https://github.com/creativecommons/ccos-website-source/pull/867"&gt;PR 867&lt;/a&gt;: Refactored the Project List page, leaving the table markup intact but removing old styles.&lt;/li&gt;
&lt;li&gt;&lt;a href="https://github.com/creativecommons/ccos-website-source/pull/868"&gt;PR 868&lt;/a&gt;: Refactored the Issue Finder tool, replacing Vue.js with plain JavaScript. Although removing Webpack will happen later, this PR set the stage for future improvements.&lt;/li&gt;
&lt;li&gt;&lt;a href="https://github.com/creativecommons/ccos-website-source/pull/870"&gt;PR 870&lt;/a&gt;: Aligned the Authors page with Vocabulary’s team styling.&lt;/li&gt;
&lt;li&gt;&lt;a href="https://github.com/creativecommons/ccos-website-source/pull/871"&gt;PR 871&lt;/a&gt;: Refactored the Project Ideas page, incorporating Vocabulary’s project markup and removing legacy styles.&lt;/li&gt;
&lt;li&gt;&lt;a href="https://github.com/creativecommons/ccos-website-source/pull/873"&gt;PR 873&lt;/a&gt;: Dynamically updated the body tag’s class in &lt;code&gt;layout.html&lt;/code&gt; and added a body-class field to the &lt;code&gt;blog.ini&lt;/code&gt; model file for consistent styling.&lt;/li&gt;
&lt;li&gt;&lt;a href="https://github.com/creativecommons/ccos-website-source/pull/880"&gt;PR 880&lt;/a&gt;: Refactored &lt;code&gt;page-with-title.html&lt;/code&gt; (used by CC Tech Archives) to align with Vocabulary.&lt;/li&gt;
&lt;li&gt;&lt;a href="https://github.com/creativecommons/ccos-website-source/pull/886"&gt;PR 886&lt;/a&gt;: Updated the header component markup and removed old class names.&lt;/li&gt;
&lt;/ul&gt;
&lt;h3 id="phase-2-adding-local-styles"&gt;Phase 2: Adding Local Styles&lt;/h3&gt;&lt;p&gt;After refactoring the markup, I moved on to styling sections that Vocabulary doesn’t cover. Here are some of the merged PRs so far;&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href="https://github.com/creativecommons/ccos-website-source/pull/888"&gt;PR 888&lt;/a&gt;: Added local styles based on Creative Commons’ main website for the homepage and other sections, such as “Get Involved” and “Featured Projects.”&lt;/li&gt;
&lt;li&gt;&lt;a href="https://github.com/creativecommons/ccos-website-source/pull/891"&gt;PR 891&lt;/a&gt;: Created a new &lt;code&gt;issue-finder.css&lt;/code&gt; file to restyle the Issue Finder page while removing legacy styles but maintaining legacy design.&lt;/li&gt;
&lt;li&gt;&lt;a href="https://github.com/creativecommons/ccos-website-source/pull/898"&gt;PR 898&lt;/a&gt;: Integrated Datatables and jQuery by adding them to a vendor folder. Styled the table and code blocks using existing website styles.&lt;/li&gt;
&lt;li&gt;&lt;a href="https://github.com/creativecommons/ccos-website-source/pull/990"&gt;PR 990&lt;/a&gt;: Styled the CC Search archive table using Datatables.&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 id="current-status"&gt;Current Status&lt;/h2&gt;&lt;p&gt;I’m a little behind schedule—I had planned to start work on the Legal Database website by now. However, I’m wrapping up the CC Open Source website this week and will move on to the next phase soon.&lt;/p&gt;
&lt;h2 id="lessons-learned"&gt;Lessons Learned&lt;/h2&gt;&lt;p&gt;This internship has been an incredible learning journey. Here are some key takeaways:&lt;/p&gt;
&lt;h3 id="technical-skills"&gt;Technical Skills:&lt;/h3&gt;&lt;ul&gt;
&lt;li&gt;I’ve become comfortable working with &lt;a href="https://getlektor.com/"&gt;Lektor&lt;/a&gt;, a static site generator that was entirely new to me.&lt;/li&gt;
&lt;li&gt;Implementing the Vocabulary design system has improved my problem-solving skills, especially when dealing with legacy code and adapting the system to fit unique website needs.&lt;/li&gt;
&lt;li&gt;To localize the table component, I had to read the &lt;a href="https://datatables.net/"&gt;DataTables documentation&lt;/a&gt;, which helped my ability to learn on the go.&lt;/li&gt;
&lt;/ul&gt;
&lt;h3 id="collaboration"&gt;Collaboration:&lt;/h3&gt;&lt;p&gt;Working with mentors has taught me the value of clear communication, especially when addressing blockers or seeking feedback.&lt;/p&gt;
&lt;h3 id="project-management"&gt;Project Management:&lt;/h3&gt;&lt;p&gt;Breaking tasks into smaller chunks, prioritizing effectively, and maintaining consistent progress have been critical in managing this project.&lt;/p&gt;
&lt;p&gt;This experience has significantly boosted my confidence as a front-end developer, particularly in creating user-friendly and accessible interfaces.&lt;/p&gt;
&lt;p&gt;That’s it for now! Thank you for reading about my progress. I’m excited to see how the second half of this journey unfolds!&lt;/p&gt;
</content></entry><entry><title>Skipping Google Summer of Code (GSoC) 2025</title><link href="http://opensource.creativecommons.org/blog/entries/2025-01-15-skipping-gsoc-2025/" rel="alternate"/><updated>2025-01-15T00:00:00Z</updated><author><name>['TimidRobot']</name></author><id>urn:uuid:61e914ed-e3a7-3119-9960-1c5fa9f1b224</id><content type="html">&lt;p&gt;The Creative Commons (CC) technology team regrets to announce &lt;strong&gt;we will not be
participating in Google Summer of Code (GSoC) 2025&lt;/strong&gt;. While the program remains
excellent, we do not have the resources to participate this year and meet our
core responsibilities.&lt;/p&gt;
&lt;p&gt;We are grateful to Google for the program and have found incredible value in
participating in past years. We look forward to participating in future years.
We are thankful for the work and time of contributors. This is not an exciting
announcement, but we will be better equipped to engage with work programs in
the future.&lt;/p&gt;
&lt;h2 id="preparing-to-re-engage"&gt;Preparing to re-engage&lt;/h2&gt;&lt;p&gt;In addition to revamping our CC Open Source website during the first quarter of
this year, we will also be refreshing our structured community involvement, and
improving our project lead resources.&lt;/p&gt;
&lt;p&gt;Our CC Open Source website is in the process of being updated to be less
technologically complex and to leverage the current Vocabulary design system
(&lt;a href="http://github.com/creativecommons/vocabulary"&gt;creativecommons/vocabulary&lt;/a&gt;).&lt;/p&gt;
&lt;p&gt;Our structured community involvement has languished since the technology team
was downsized due to the COVID pandemic (202-12-07 &lt;a href="https://opensource.creativecommons.org/blog/entries/2020-12-07-upcoming-changes-to-community/"&gt;Upcoming Changes to the CC
Open Source Community — Creative Commons Open Source&lt;/a&gt;). We will be
simplifying community involvement so that we can be more responsive with
increased visibility.&lt;/p&gt;
&lt;p&gt;The most resource intensive period of a work program is the application phase.
During this time there is a deluge of activity that has often exceeded our
capacity. Developing our project lead resources will allow us to better set
expectations, ease communications, and better point applicants on productive
trajectories.&lt;/p&gt;
&lt;h2 id="past-participation"&gt;Past participation&lt;/h2&gt;&lt;p&gt;For information on the excellent work completed during past participations,
please see: &lt;a href="https://opensource.creativecommons.org/programs/history/"&gt;Open Source Work Programs: History — Creative Commons Open
Source&lt;/a&gt;.&lt;/p&gt;
</content></entry><entry><title>My Outreachy Internship With Creative Commons</title><link href="http://opensource.creativecommons.org/blog/entries/my-outreachy-internship-with-creative-commons/" rel="alternate"/><updated>2024-12-10T00:00:00Z</updated><author><name>['Queen']</name></author><id>urn:uuid:032f105a-3718-34cb-955f-4c2429a76c43</id><content type="html">&lt;h2 id="introduction"&gt;Introduction&lt;/h2&gt;&lt;p&gt;Hi, everyone! My name is Queen, and I’m a fresh pharmacy graduate with a passion for tech. My journey into coding started four years ago when I wrote my first HTML code and thought, "Yes, I’m FAANG-ready!" Spoiler: I wasn’t — but that didn’t stop me from dreaming big. Balancing pharmacy school and learning to code often felt like I was biting off more than I could chew, but I’m proud that I never gave up on my dream of becoming a front-end developer.&lt;/p&gt;
&lt;h2 id="my-core-values"&gt;My Core Values&lt;/h2&gt;&lt;p&gt;When I think about my core values, three words come to mind: &lt;strong&gt;Growth&lt;/strong&gt;, &lt;strong&gt;Curiosity&lt;/strong&gt;, and &lt;strong&gt;Knowledge&lt;/strong&gt;.&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;Growth&lt;/strong&gt;: I strive to improve in every aspect of life—mentally, physically, intellectually, and even spiritually. Every setback is just a stepping stone for me.  &lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Curiosity&lt;/strong&gt;: This one’s a work in progress, but I’m learning to ask questions and embrace not knowing. I love understanding &lt;em&gt;why&lt;/em&gt; things work the way they do.  &lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Knowledge&lt;/strong&gt;: I read a lot because I genuinely enjoy learning new things. For me, knowledge is the key to confidence and growth.&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 id="my-journey-to-outreachy"&gt;My Journey to Outreachy&lt;/h2&gt;&lt;p&gt;Outreachy is a three-month paid open-source internship program for underrepresented people in tech. I first heard about it last year—just two days before the application deadline. I didn’t make it past the initial application stage that time.&lt;/p&gt;
&lt;p&gt;When the December 2024 cohort initial application opened, it was the perfect timing for me. By then, I had finished my pharmacy degree and was ready to gain professional experience in front-end development and most especially, in open source. This time, I was determined to get it right.&lt;/p&gt;
&lt;p&gt;I applied on the same day the application opened, I had already kept answers for the essay questions in my notes app. While waiting for the results, I brushed up on my skills and read articles from past interns to prepare for the contribution period.&lt;/p&gt;
&lt;p&gt;When I received the email saying my initial application had been approved, I felt a rush of excitement. To move forward and be able to make a final application, I needed to make at least one contribution to a project. I narrowed my choices to two based on the skills required, but Creative Commons stood out to me. Their mission and the project description piqued my interest more.&lt;/p&gt;
&lt;h2 id="the-contribution-period"&gt;The Contribution Period&lt;/h2&gt;&lt;p&gt;The contribution period was competitive—and intimidating. Seeing the amazing work other applicants were doing made me doubt myself. But I loved the project and found the community so welcoming that I couldn’t give up.&lt;/p&gt;
&lt;p&gt;The mentors were incredibly supportive, giving feedback that helped me improve with each contribution. When it was time to draft my final application and proposal, I worked with my mentor, sharing my plans and got her input which helped me in creating my project timeline.&lt;/p&gt;
&lt;p&gt;Even before I knew if I’d be selected, I felt fulfilled. Contributing to Creative Commons was a rewarding experience, and I knew I wanted to continue contributing to the community, intern or not.&lt;/p&gt;
&lt;h2 id="my-internship-project"&gt;My Internship Project&lt;/h2&gt;&lt;h3 id="consolidating-and-implementing-the-vocabulary-design-system"&gt;&lt;strong&gt;Consolidating and Implementing the Vocabulary Design System&lt;/strong&gt;&lt;/h3&gt;&lt;p&gt;During my internship, I’ll be working on consolidating and implementing the Vocabulary design system across Creative Commons' ancillary websites.&lt;/p&gt;
&lt;p&gt;Vocabulary is a design system that ensures a consistent user interface (UI) and user experience (UX) across all Creative Commons websites. However, its implementation has been inconsistent, with variations in features and versions across different sites. My role is to identify these inconsistencies and work on a unified implementation that also focuses on accessibilty. I'd also be implementing features that might be a good addition to the design system.&lt;/p&gt;
&lt;p&gt;I’m excited about this project because it aligns with my passion for front-end development and allows me to contribute meaningfully to a global community. I also get to improve my skills and gain new ones.&lt;/p&gt;
&lt;h2 id="conclusion"&gt;Conclusion&lt;/h2&gt;&lt;p&gt;This internship is more than just a milestone for me—it’s a testament to perseverance and growth. I’m thrilled to embark on this journey with Creative Commons, and I can’t wait to see where it leads.&lt;/p&gt;
&lt;p&gt;If you’re considering applying for Outreachy, my advice is simple: believe in yourself, stay curious, and never stop learning. Your journey might just surprise you.&lt;/p&gt;
&lt;p&gt;Thank you for reading!&lt;/p&gt;
</content></entry><entry><title>Local Environment Creation using Ansible and Docker: Part 2</title><link href="http://opensource.creativecommons.org/blog/entries/2024-08-23-create-local-ansible-dev-env/" rel="alternate"/><updated>2024-08-23T00:00:00Z</updated><author><name>['amandayclee']</name></author><id>urn:uuid:2c9a29f3-0d0b-3daa-9fc6-280495e05ab8</id><content type="html">&lt;div style="text-align: center;"&gt;
    &lt;img src="gsoc-banner.png" alt="GSoC 2024" style="max-height: 200px;"&gt;
&lt;/div&gt;&lt;h1 id="midterm-recap"&gt;Midterm Recap&lt;/h1&gt;&lt;p&gt;I successfully created customized Dockerfiles and a docker-compose.yml for &lt;code&gt;web&lt;/code&gt;, &lt;code&gt;database&lt;/code&gt;, and &lt;code&gt;ansible&lt;/code&gt; for the past 6 weeks. However, to better replicate our production environment, which uses an AWS RDS instance, we decided to remove the customized Dockerfile for database, as SSH access is not required for the database host in this setup.&lt;/p&gt;
&lt;h3 id="week-by-week-progress"&gt;Week-by-Week Progress&lt;/h3&gt;&lt;p&gt;Following our initial architecture design, I began working on building a bastion server. One of the key lessons I learned during this process was the value of simplicity. For instance, I had to  assess the trade-offs between creating a custom Dockerfile and using a prebuilt image maintained by the community. In the world of DevOps, some terms are often loosely defined. For example, during my research on bastion servers, I encountered various use cases such as integrating MFA, logging, and other security features. However, these were beyond the scope of our current project.&lt;/p&gt;
&lt;p&gt;For this project, we are building a bastion server primarily to serve as a secure gateway for managing access to internal servers. This specific requirement dictated a more straightforward implementation. In this context, I also came across the concept of "YAGNI" (You Aren’t Gonna Need It), which reminds us to avoid adding unnecessary features until they are actually required. Along the way, while working with Creative Commons (CC), I learned an important lesson: &lt;strong&gt;with so many tools, software, and technologies available, it’s crucial to focus on implementing configurations and solutions that are tailored specifically to our environment and requirements.&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;Before setting up the bastion server, it's also very important to understand the different SSH configuration options and choose the one that best meets our security and convenience needs. For instance, passwordless SSH enhances security and convenience by enabling SSH key-based authentication, but it requires public key configuration on each server, which can be cumbersome in larger environments. SSH Agent, on the other hand, improves the security and management of private keys by keeping them in memory across multiple connections. However, it requires running the SSH Agent locally and loading keys, adding some complexity to the setup. We ultimately decided to use ProxyJump because it offers centralized control and simplifies multi-hop connections through a bastion server, which provides strong security and convenience. While ProxyJump requires moderate configuration of both the bastion and target servers, it excels in supporting multi-hop connections and ensuring secure access to internal servers.&lt;/p&gt;
&lt;p&gt;We finalized these details in the &lt;a href="https://github.com/creativecommons/ansible-dev/pull/14"&gt;Bastion Container Creation&lt;/a&gt;.&lt;/p&gt;
&lt;p&gt;The next step was to explore the best approach for integrating Ansible with Docker to closely mirror a production environment. We maintained our manual provisioning approach and focused on three key integration strategies.&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;Option 1 involves having Ansible manage containers directly through the Docker network, where all services (&lt;code&gt;bastion&lt;/code&gt;, &lt;code&gt;ansible&lt;/code&gt;, &lt;code&gt;web&lt;/code&gt;, &lt;code&gt;db&lt;/code&gt;) operate within the same network. Ansible handles the management of the web and db containers using their container names or IPs, with the bastion server acting as a jump host only when necessary. This approach treats each container as an independent host, with Ansible responsible for installing and configuring the necessary software.&lt;/li&gt;
&lt;li&gt;Option 2 leverages the &lt;code&gt;community.docker.docker_container_exec&lt;/code&gt; module to execute commands within Docker containers via Ansible playbooks. This method allows for application installation and configuration tasks to be performed directly inside the containers.&lt;/li&gt;
&lt;li&gt;Option 3 involves running only the bastion and Ansible services in Docker, while using Ansible to provision the web and db services. Ansible connects to these containers through the bastion server, allowing it to manage and configure the web and db as external resources.&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;When comparing these options, Option 1 manages applications within containers at the application layer, offering fine-grained control and simplifying setup in a unified environment. Option 2 operates at the Docker layer, providing greater flexibility and portability, ideal for quick deployments. Option 3 provides the best isolation between services, closely simulating a production environment with enhanced security, but it requires a more complex setup.&lt;/p&gt;
&lt;p&gt;After careful consideration, we decided to proceed with Option 1, which shifts most configuration tasks from the Dockerfile to Ansible playbooks. As I write this post, I am in the process of implementing these playbooks to configure the containers. You can follow the ongoing development in this &lt;a href="https://github.com/creativecommons/ansible-dev/"&gt;repository&lt;/a&gt;.&lt;/p&gt;
&lt;h1 id="acknowledgments"&gt;Acknowledgments&lt;/h1&gt;&lt;p&gt;This experience has provided me with practical skills in implementing real-world DevOps projects. I truly enjoy learning all this knowledge outside of my daily job and dedicating my personal time to something meaningful, which is often not covered in school. If this project succeeds as a proof of concept, I can gather more feedback from users, specifically open-source developers, to enhance this setup. I mentioned this in my previous blog post, but I can’t emphasize enough how grateful I am to &lt;a href="https://opensource.creativecommons.org/blog/authors/shafiya/"&gt;Shafiya&lt;/a&gt;, &lt;a href="https://opensource.creativecommons.org/blog/authors/TimidRobot/"&gt;Timid Robot&lt;/a&gt;, and &lt;a href="https://opensource.creativecommons.org/blog/authors/sara/"&gt;Sara&lt;/a&gt; for their guidance, and to Google Summer of Code for giving me the opportunity to contribute to open source. As a content creator who both produces and enjoys various open content online, I am incredibly excited and honored to contribute my technical expertise to CC.
Thanks to CC’ impact on society, I am committed to continually advancing my technical skills and supporting this organization in the long term. I look forward to continuing my involvement in the open-source community!&lt;/p&gt;
</content></entry><entry><title>Automating Quantifying the Commons: Part 2</title><link href="http://opensource.creativecommons.org/blog/entries/2024-08-22-automating-quantifying/" rel="alternate"/><updated>2024-08-22T00:00:00Z</updated><author><name>['NaishaSinha']</name></author><id>urn:uuid:a984b2ae-b334-3c7e-9b5c-54769d5d09b5</id><content type="html">&lt;p&gt;&lt;img src="/blog/entries/2024-08-22-automating-quantifying/Automating - GSoC Logo.png" alt="GSoC 2024"&gt;&lt;/p&gt;
&lt;h2 id="introduction-midterm-recap"&gt;Introduction: Midterm Recap&lt;/h2&gt;&lt;hr&gt;
&lt;p&gt;This post serves as a technical journal for the development process of the
concluding stretch of Automating Quantifying the Commons, a project initiative
for the 2024 Google Summer of Code program. Please visit &lt;strong&gt;&lt;a href="https://opensource.creativecommons.org/blog/entries/2024-07-10-automating-quantifying/"&gt;Part 1&lt;/a&gt;&lt;/strong&gt; for more context
if you haven't already done so.&lt;/p&gt;
&lt;p&gt;At the point of the midterm evaluation, I successfully completed Phases 1, 2, and 3
(&lt;code&gt;fetch&lt;/code&gt;, &lt;code&gt;process&lt;/code&gt;, and &lt;code&gt;report&lt;/code&gt;) of the Google Custom Search (GCS) data source, with a working report &lt;code&gt;README&lt;/code&gt; generation
for each quarter. My documented goal for the second half of the period was to complete a baseline automation
software for these processes across all data sources.&lt;/p&gt;
&lt;h2 id="development-process"&gt;Development Process&lt;/h2&gt;&lt;hr&gt;
&lt;h3 id="i-midpoint-reassessment"&gt;I. Midpoint Reassessment&lt;/h3&gt;&lt;p&gt;If you read my previous post, you might have seen that my next steps involved completing the phases for the remaining data sources. 
However, I soon realized that the GCS phases, along with the base analysis and visualization code from the Data Discovery Program, 
already serve as a standard reference for these tasks. Given that the primary goal of this project is to develop automation software
for these phases, my mentor suggested shifting the focus of the final time period towards programming the Git functions for automation. 
This approach, which will require more time and effort, will ensure that anyone working on the remaining data sources can easily integrate 
them using the existing code as a reference.&lt;/p&gt;
&lt;h3 id="ii-github-actions-development"&gt;II. GitHub Actions Development&lt;/h3&gt;&lt;p&gt;We defined GitHub Actions to host our CI/CD workflows, and since I had never used YAML before, 
I needed to learn and familiarize myself with this new technology. Learning YAML presented challenges, 
particularly in developing the Git automation. My mentor emphasized focusing on the Git programming due to these challenges. 
For example, I encountered errors during workflow runs without clear ways to debug them.&lt;/p&gt;
&lt;p&gt;In my previous post, I shared three strategies that helped me familiarize myself with new technology during the first half of the summer. Here, I’m sharing two additional strategies that were particularly useful for GitHub Actions programming:&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;GitHub Actions Extension for Visual Studio Code:&lt;/strong&gt; As I was using VSCode for development, I initially struggled to debug issues during workflow runs. Discovering the GitHub Actions Extension for VSCode was a game-changer. This extension highlights issues in the workflow, making it much easier to diagnose and fix problems. I highly recommend searching extensions for any development task, as having relevant tools can make programming much easier.&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;Creating Mini-Tasks for Experimentation:&lt;/strong&gt; I set up my own GitHub repository with minimal, functional code to experiment with GitHub Actions in a low-risk environment. This approach facilitated easier debugging and comparison, helping me understand why certain things weren’t working. Although I gained more repository privileges after being accepted for GSoC, I still didn’t have the same access level as my mentor. By using a separate repository, I gained a better understanding of GitHub Actions and was able to interpret error logs more effectively. For instance, I realized that the automation wasn’t working initially due to outdated repository secrets, which I discovered without access to the secrets.&lt;/p&gt;
&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;After successfully compiling the initial steps, I focused on refining the scripts for optimal performance. I moved the commit functions into a shared module, which reduced the risk of crashes by allowing functions to be called within individual scripts rather than directly in the YAML workflow. Once the workflows ran successfully, I implemented Cron functions to schedule them quarterly.&lt;/p&gt;
&lt;h3 id="iii-engineering-a-custom-error-handling-and-exception-system"&gt;III. Engineering a Custom Error Handling and Exception System&lt;/h3&gt;&lt;p&gt;A key innovation in this project was the creation of a custom &lt;code&gt;QuantifyingException&lt;/code&gt; class tailored specifically for the unique needs of the data pipeline. 
Unlike generic exceptions, this specialized exception class was designed to capture and handle errors that are particular to the Quantifying process, such as data inconsistencies, 
API rate limits, and file handling errors. By centralizing these exceptions within QuantifyingException, I ensured that all three phases could consistently manage errors in a coherent and structured manner.
While testing this system across all phases, I made sure to purposely include "edge-case" errors upon commits to guarantee that the system could handle all these errors.&lt;/p&gt;
&lt;p&gt;Upon completion of a robust error and exception handling system, I completed all phase outlines of the remainder of the data sources. For fetching data from these sources, I have developed
codebases combining the GCS fetch system and the original Data Discovery API fetching for a complete fetching system. However, it should be noted that I have not actually fetched data from these 
APIs using the new codebase, as Timid Robot will undertake an initiative to add GitHub bots for the API keys after the GSoC period — this is due to best practice purposes, as it is fundamental
to create dedicated accounts for clear API usage and automated git commits. Therefore, these fetch files may need to be slightly tweaked after that, which will be discussed in &lt;strong&gt;Next Steps&lt;/strong&gt;. 
However, I have made sure to utilize fake data to ensure that the third phase successfully generates reports within the respective README file for ALL data sources.&lt;/p&gt;
&lt;h3 id="iv-finalized-flow-of-system-data"&gt;IV. Finalized Flow of System + Data&lt;/h3&gt;&lt;p&gt;In Part 1, I had shared the initial data flow diagram (DFD) for arranging the codebase. By the end of the program, however, the DFD and the overall system had solidified into something different. 
Below is the final diagram for data flow, which establish an official framework for future endeavors.&lt;/p&gt;
&lt;p&gt;&lt;img src="/blog/entries/2024-08-22-automating-quantifying/Final DFD.png" alt="DFD"&gt;&lt;/p&gt;
&lt;h2 id="final-conclusions"&gt;Final Conclusions&lt;/h2&gt;&lt;hr&gt;
&lt;h3 id="i-all-deliverables-completed-over-the-course-of-the-program"&gt;I. All Deliverables Completed Over the Course of the Program&lt;/h3&gt;&lt;p&gt;Although this 12-week period allowed significant expansion of the Quantifying codebase, there were still time and resource constraints that we had to consider; primarily, the lack 
of data we could collect using the given APIs over this time period. However, as mentioned earlier, given strategic implementations, I was able to still complete the summer goal of developing a baseline
automation software for data gathering, flow, and report generation, ensuring script runs on a quarterly basis. The &lt;strong&gt;Next Steps&lt;/strong&gt; section will elaborate on how this software will be solidified over
the upcoming quarters and years.&lt;/p&gt;
&lt;p&gt;130+ commits, 7,615+ net code additions, and 360+ hours of work later, I present ten pivotal deliverables that I have completed over the summer period:&lt;/p&gt;
&lt;table class="datatable display"&gt;
&lt;thead class="thead-dark"&gt;&lt;tr&gt;
&lt;th&gt;Deliverable&lt;/th&gt;
&lt;th&gt;Description&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;Phase 1: Fetch Data&lt;/td&gt;
&lt;td&gt;Building on previous efforts in the Quantifying initiative, this phase efficiently fetches raw data from various data sources using APIs. The retrieved data is then stored in a structured CSV format, preparing it for processing and analysis.&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Phase 2: Process Data (Outline)&lt;/td&gt;
&lt;td&gt;This phase focuses on analyzing the fetched data between quarters. Since only &lt;code&gt;2024Q3&lt;/code&gt; data (07/01/2024 - 09/30/2024) could comprehensively be generated during the summer period, a psuedocode outline of analysis was developed. Although this phase will be further solidified as more quarters and years pass by, a base error system was tested and implemented during the GSoC period to ensure thoroughness for this phase.&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Phase 3: Generate Reports&lt;/td&gt;
&lt;td&gt;The final phase successfuly creates visualizations and reports based on the generated datasets. These reports are designed to present key findings and trends in a clear, concise manner, and have been designed to automatically be integrated into a quarterly README file to provide a comprehensive overview of license data across data sources.&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Shared Module&lt;/td&gt;
&lt;td&gt;Created a singular, shared module to organize and streamline the codebase, allowing different directories, paths, and components to be imported through that module across different files.&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Directory Sequence (OS)&lt;/td&gt;
&lt;td&gt;Using Operating System (OS) Modules, the codebase effectively facilitates the interaction between all three phases, ensuring smooth communication of 10 different data sources with their respective data storages.&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Automation using GitHub Actions CI/CD&lt;/td&gt;
&lt;td&gt;All three phases of the project — data fetching, processing, and reporting — have been automated using YAML scripts in GitHub Actions. This CI/CD pipeline ensures that every update to the codebase triggers the entire workflow, from data retrieval to the generation of final reports, maintaining consistency and reliability across the process. Cron functions are used to ensure that these scripts are run every quarter in a timely manner.&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Custom Error &amp;amp; Exception Handling System&lt;/td&gt;
&lt;td&gt;Implemented a custom exception system that centralizes the error-handling logic, keeping the codebases more specific, maintainable, and consistent overall. This system has been thoroughly tested and verified across all three phases.&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Project Directory Tree&lt;/td&gt;
&lt;td&gt;Added a structured layout of the project (hierarchical representation of directories and files with descriptive comments), which provides developers with a clear understanding of the project's organization and help them navigate through different components easily.&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Data Flow + System Design&lt;/td&gt;
&lt;td&gt;Finalized an overall data flow and system design diagram to establish an official framework for the codebase.&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Comprehensive Documentation&lt;/td&gt;
&lt;td&gt;This document was developed to serve as a reference guide for any contributors having questions or needing detailed clarification on specific topics within the Quantifying codebase — each section has its own page with expanded information. It also includes external references and documentation regarding the languages and tools used for this project.&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;
&lt;h3 id="ii-acknowledgements-impact-next-steps"&gt;II. Acknowledgements, Impact, Next Steps&lt;/h3&gt;&lt;p&gt;This project would not have been possible without the constant guidance and insights of my mentors: &lt;strong&gt;&lt;a href="https://opensource.creativecommons.org/blog/authors/TimidRobot/"&gt;Timid Robot Zehta&lt;/a&gt;&lt;/strong&gt; (lead), &lt;strong&gt;&lt;a href="https://opensource.creativecommons.org/blog/authors/shafiya/"&gt;Shafiya Heena&lt;/a&gt;&lt;/strong&gt; (supporting), and &lt;strong&gt;&lt;a href="https://opensource.creativecommons.org/blog/authors/sara/"&gt;Sara Lovell&lt;/a&gt;&lt;/strong&gt; (supporting).
I appreciate how they created a safe space for working since the very beginning. I've never felt hesitant to ask questions
and have never felt out-of-place working in the organization, despite my introductory-level skillset at the start. In fact, this allowed
me to feel open to ask questions and be able to undertake side-projects that facilitated my growth. I truly believe that being able to work in an environment like this 
has played a large role in my ability to perform well, and this was the sole reason for the overall fast progress and depth of my deliverables.&lt;/p&gt;
&lt;p&gt;As for overall impact, it is very evident that Creative Commons is integral to facilitating the sharing and utilization of creative works worldwide. With over 2.5 billion
licenses globally, Creative Commons and its open-source inititives hold heavy impact, promising to empower researchers, policymakers, and stakeholders with up-to-date insights into the global
usage patterns of open doman and CC-licensed content. Therefore, I'm looking forward to witnessing the direct influence this project holds in paving the way for future advancements
in leveraging open content licenses globally. I am extremely grateful and honored to be able to play such a major role in contributing to this organization, and am excited to see
future contributions I facilitate alongside other CC open-source developers.&lt;/p&gt;
&lt;p&gt;As for next steps, I am opening several post-GSoC issues in the Quantifying repository that can be worked on by any open-source contributor. 
These issues cover some of the necessary adjustments that need to be made once we cross certain time periods and codebase additions. 
If you're interested in getting involved, please visit the &lt;strong&gt;&lt;a href="https://github.com/creativecommons/quantifying/issues"&gt;Issues&lt;/a&gt;&lt;/strong&gt; page linked for your convenience. 
Your contributions will be invaluable as we continue to enhance and expand this project, 
and I’m eager to see the innovative solutions and improvements that will unfold these upcoming years!&lt;/p&gt;
&lt;h2 id="additional-readings"&gt;Additional Readings&lt;/h2&gt;&lt;hr&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href="https://opensource.creativecommons.org/blog/entries/2024-07-10-automating-quantifying/"&gt;Automating Quantifying the Commons: Part 1&lt;/a&gt; | Author: Naisha Sinha | Jul. 2024&lt;/li&gt;
&lt;li&gt;&lt;a href="https://opensource.creativecommons.org/blog/entries/2022-12-07-berkeley-quantifying/"&gt;Data Science Discovery: Quantifying the Commons&lt;/a&gt; | Author: Dun-Ming Huang (Brandon Huang) | Dec. 2022&lt;/li&gt;
&lt;/ul&gt;
</content></entry><entry><title>Continuing Open Collaboration: GSoC 2024 With Creative Commons</title><link href="http://opensource.creativecommons.org/blog/entries/continuing-open-collaboration-gsoc-2024-with-creative-commons/" rel="alternate"/><updated>2024-08-22T00:00:00Z</updated><author><name>['Murdock9803']</name></author><id>urn:uuid:e0361bd0-acff-36a8-879f-49a99ba31e29</id><content type="html">&lt;p&gt;As I reach the final phase of my work on the Creative Commons Resource Archive under this program, I’ve been thinking about how far we’ve come since the beginning. We started with the idea of modernizing the &lt;a href="https://resources.creativecommons.org/"&gt;resource archive website&lt;/a&gt;, and we have built features that make it safer and more accessible. This journey has had its challenges, but it’s also been very rewarding. 
In the first post, we discussed the early steps that set up this project. Now, as we are in the final weeks, I’m excited to share the progress we’ve made to turn the Resource Archive into a valuable tool for the community.&lt;/p&gt;
&lt;p&gt;&lt;img src="/blog/entries/continuing-open-collaboration-gsoc-2024-with-creative-commons/GSoC+CC-banner.png" alt="GSoC and CC banner"&gt;&lt;/p&gt;
&lt;p&gt;Join me as I take you through this complete journey of covering new features, the hurdles we’ve overcome and the final product that I hope will continue to grow and serve the open knowledge community.&lt;/p&gt;
&lt;h2 id="transitioning-from-midterm"&gt;Transitioning From Midterm&lt;/h2&gt;&lt;p&gt;After completing the Midterm milestone, the focus was to utilize the learnings and experience I got across the past weeks to complete the tasks mentioned in the timeline in the least time possible. My mentor suggested not to hurry up things too much, but just to work at a comfortable higher pace. This way, we can have some room for the implementation of stretch goals for the project. The midterm review provided valuable feedback, which helped guide the next steps. With a solid foundation in place, it was time to tackle the more complex challenges and polish the user experience. From enhancing the search functionality, filtering experience to improving the accessibility, the post midterm work aimed to ensure the resource archive becomes a great tool to serve the community.&lt;/p&gt;
&lt;h2 id="completing-the-timeline-tasks-weeks-7-8-and-9"&gt;Completing The Timeline Tasks - Weeks 7, 8 and 9&lt;/h2&gt;&lt;p&gt;These three weeks were planned with the aim of completing the timeline tasks to focus on further goals of the projects. The &lt;code&gt;UI-related&lt;/code&gt; tasks included Submission page, A guide for the newcomers to submit resources, and working on the filters.&lt;/p&gt;
&lt;h3 id="submission-page-ui-changes"&gt;Submission Page UI Changes&lt;/h3&gt;&lt;p&gt;The &lt;code&gt;submission.html&lt;/code&gt; page is responsible for the area where contributors come to contribute to the resource archive with their resources about Creative Commons or Open sharing of knowledge in general. 
With the help of the &lt;a href="https://github.com/creativecommons/cc-resource-archive/pull/315"&gt;PR#315&lt;/a&gt;, The following tasks were performed :&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;adds a new context to the element, named &lt;code&gt;submit-page&lt;/code&gt;.&lt;/li&gt;
&lt;li&gt;refactors the whole html code for &lt;code&gt;submission.html&lt;/code&gt; with semantic code.&lt;/li&gt;
&lt;li&gt;makes the page responsive, by adding &lt;code&gt;media queries&lt;/code&gt; wherever needed.&lt;/li&gt;
&lt;li&gt;adds a step by step written guide including images, for submission of resource for new github users.&lt;/li&gt;
&lt;li&gt;ensures the page meets current CC aesthetics.&lt;/li&gt;
&lt;li&gt;adds documentation for better understanding and maintainability.&lt;/li&gt;
&lt;li&gt;formats the files with &lt;code&gt;prettier code formatter&lt;/code&gt;.&lt;/li&gt;
&lt;/ul&gt;
&lt;h3 id="submission-guide-for-newcomers"&gt;Submission guide For Newcomers&lt;/h3&gt;&lt;p&gt;For people not familiar with GitHub or Opening &lt;code&gt;Pull Requests&lt;/code&gt; on GitHub, a comprehensive guide was added with step by step process to submit a resource to the resource archive. The guide included instructions to fork, clone the repository and also Open the PR by committing to the repository. This was accompanied with well-labeled images for better understandability. This work was achieved with the help of &lt;a href="https://github.com/creativecommons/cc-resource-archive/pull/315"&gt;PR#315&lt;/a&gt;. This was the final addition to the &lt;code&gt;submission.html&lt;/code&gt; page and the whole tasks related to this page were completed by this.&lt;/p&gt;
&lt;h3 id="filters-placement-and-functioning"&gt;Filters Placement and Functioning&lt;/h3&gt;&lt;p&gt;The resource archive utilizes filters to select similar resources. These filters are grouped in the form of three categories, &lt;code&gt;TOPIC&lt;/code&gt;, &lt;code&gt;MEDIUM&lt;/code&gt; and &lt;code&gt;LANGUAGE&lt;/code&gt;. Each category has some filter options to choose from. In the previous iteration of the resource archive site, the category filters were placed in the middle of the page, and they also did not have any icon for the indication of a selected filter. 
The &lt;a href="https://github.com/creativecommons/cc-resource-archive/pull/316"&gt;PR#316&lt;/a&gt; makes the filters responsiveness, and more easy to access by performing the following tasks:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;adds semantic html to &lt;code&gt;index.html&lt;/code&gt; and &lt;code&gt;all.html&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;removes the filters from &lt;code&gt;index.html&lt;/code&gt;.&lt;/li&gt;
&lt;li&gt;removes inline styles from html pages.&lt;/li&gt;
&lt;li&gt;adds a new context to &lt;code&gt;listing.html&lt;/code&gt;.&lt;/li&gt;
&lt;li&gt;works on the &lt;code&gt;see-all-resources&lt;/code&gt; link.&lt;/li&gt;
&lt;li&gt;adds checkbox in place of &lt;code&gt;[x]&lt;/code&gt; in category filters.&lt;/li&gt;
&lt;li&gt;makes the filters as a sidebar.&lt;/li&gt;
&lt;li&gt;makes the whole category filters responsive.&lt;/li&gt;
&lt;li&gt;Re-works on the &lt;code&gt;media-query&lt;/code&gt; breakpoints.&lt;/li&gt;
&lt;li&gt;formats the code with &lt;code&gt;prettier code formatter&lt;/code&gt;.&lt;/li&gt;
&lt;li&gt;adds documentation for the &lt;code&gt;index.html&lt;/code&gt;, &lt;code&gt;all.html&lt;/code&gt; and &lt;code&gt;style.css&lt;/code&gt; files.&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 id="stretch-goals-and-ideation-weeks-10-11-and-12"&gt;Stretch Goals And Ideation - Weeks 10, 11 and 12&lt;/h2&gt;&lt;p&gt;After the completion of the tasks assigned in the timeline, we shifted the focus to the Stretch goals suggested in my proposal, and also by my mentor (&lt;a href="https://github.com/possumbilities"&gt;Sara&lt;/a&gt;). There were 3 major goals that were considered for a discussion. These were, Implementation of Search Functionality through &lt;a href="https://lunrjs.com/docs/index.html"&gt;Lunr.js&lt;/a&gt;, Improving accessibility through the inclusion of &lt;a href="https://www.w3.org/WAI/standards-guidelines/aria/"&gt;ARIA&lt;/a&gt; attributes to the elements in the website, and The use of &lt;a href="https://docs.github.com/en/rest?apiVersion=2022-11-28"&gt;GitHub API&lt;/a&gt; to automate the process of submission of resources to the site. Out of these three, the goals that were to be implemented were &lt;code&gt;ARIA&lt;/code&gt; accessibility and &lt;code&gt;LUNR.js&lt;/code&gt; search functionality. This was decided keeping in mind the scope of the project and the desired limit of complexity we wanted the site to have at this point.&lt;/p&gt;
&lt;h3 id="aria-accessibility-and-search-functionsality-lunr.js"&gt;Aria Accessibility and Search Functionsality - LUNR.js&lt;/h3&gt;&lt;p&gt;My mentor suggested that I read about &lt;code&gt;WAI-ARIA&lt;/code&gt; accessibility to gain insights about the process and better select the number of attributes and features we need to implement. I studied about this thoroughly and also watched some videos on the topic. I realized about the importance of having these features in our site and how greatly they impact the accessibility for different users. 
Apart from this, we wanted to implement a search feature for the resources with the help of a lightweight searching library like &lt;code&gt;LUNR.js&lt;/code&gt;. I started to read about the library and its execution process from various sources, majorly from the &lt;a href="https://lunrjs.com/docs/index.html"&gt;LUNR Documentation&lt;/a&gt; present in their site. After reading it and a bit of panning, I started to code for this feature. The goal was to keep the UI similar to the CC Search feature present in the header of many Creative Commons sites.&lt;/p&gt;
&lt;h2 id="issues-solved-from-midterm-to-end"&gt;Issues Solved From Midterm To End&lt;/h2&gt;&lt;p&gt;The issues relevant to the project which have been solved in the period between midterm and final week are listed below:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href="https://github.com/creativecommons/cc-resource-archive/issues/52"&gt;#52&lt;/a&gt; - use checkbox for &lt;code&gt;resourcenavtopicknown&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://github.com/creativecommons/cc-resource-archive/issues/61"&gt;#61&lt;/a&gt; - change UI of the homepage&lt;/li&gt;
&lt;li&gt;&lt;a href="https://github.com/creativecommons/cc-resource-archive/issues/72"&gt;#72&lt;/a&gt; - UI refinement of the website&lt;/li&gt;
&lt;li&gt;&lt;a href="https://github.com/creativecommons/cc-resource-archive/issues/119"&gt;#119&lt;/a&gt; - adding icon on filter text&lt;/li&gt;
&lt;li&gt;&lt;a href="https://github.com/creativecommons/cc-resource-archive/issues/274"&gt;#274&lt;/a&gt; - Improve the UI of submission page with &lt;code&gt;vocabulary&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://github.com/creativecommons/cc-resource-archive/issues/306"&gt;#306&lt;/a&gt; - Language List Columns Collapsing on Website &lt;/li&gt;
&lt;li&gt;&lt;a href="https://github.com/creativecommons/cc-resource-archive/issues/310"&gt;#310&lt;/a&gt; - Add a step by step guide for submitting resources&lt;/li&gt;
&lt;li&gt;&lt;a href="https://github.com/creativecommons/cc-resource-archive/issues/311"&gt;#311&lt;/a&gt; - html markup contains inline styles&lt;/li&gt;
&lt;li&gt;&lt;a href="https://github.com/creativecommons/cc-resource-archive/issues/313"&gt;#313&lt;/a&gt; - improve mobile view layout for filter columns&lt;/li&gt;
&lt;li&gt;&lt;a href="https://github.com/creativecommons/cc-resource-archive/issues/314"&gt;#314&lt;/a&gt; - remove extra white space between main content and footer&lt;/li&gt;
&lt;li&gt;&lt;a href="https://github.com/creativecommons/cc-resource-archive/issues/318"&gt;#318&lt;/a&gt; - Links in submit page open on same page and spelling mistake-comapre&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 id="future-plans-and-execution"&gt;Future Plans And Execution&lt;/h2&gt;&lt;p&gt;The future plans include the execution of the Stretch Goals we discussed in the later weeks of the project. Firstly, I will be working on the &lt;code&gt;LUNR.js&lt;/code&gt; search functionality and will be trying to complete this in the 13th week, and also the contributions on the &lt;code&gt;ARIA&lt;/code&gt; accessibility are welcome on GitHub. Also, apart from these fixed goals, I aim to remain engaged with the community for the years ahead. I have planned to keep contributing to the organization - &lt;a href="https://github.com/creativecommons"&gt;Creative Commons&lt;/a&gt;, and especially the repository - &lt;a href="https://github.com/creativecommons/cc-resource-archive"&gt;CC-Resource-Archive&lt;/a&gt; for as long as I can. I will be contributing in the form of issues, pull requests and also code reviews. This is the first organization I got to connect professionally with, and I aim to continue to be a part of this mission of Sharing of Open Knowledge.&lt;/p&gt;
&lt;h2 id="personal-growth-and-thoughts-on-completion"&gt;Personal Growth And Thoughts On Completion&lt;/h2&gt;&lt;p&gt;As I mentioned in my previous blog post, Being a part of Google Summer of Code was a very big deal for me. With an organization like Creative Commons, this could not have been better. I did not only know about the organization before all this GSoC 2024 preparation, but also resonated with the idea and mission behind it, and was grateful for the learning opportunities it creates for people across the world. Being at the final week of this program makes me emotional as I had a really good time with the mentors and the project. In the weekly meetings we conducted, the amount of motivation I got every single time talking with my mentor was unmatched. I was a complete newbie in terms of professional work experience, and this is the way everything should have been. I am a better individual at this point, and far more experienced. I think I will be able to guide my juniors in a better way from now onwards.
This program also instilled in me a newfound confidence that is needed to take on tough tasks. I believe the program is less about coding skills and more about the self-improvement journey one has with their mentors and fellow contributors. One more thing which caught my interest is reviewing the Pull Requests of other contributors. My mentor suggested that I try reviewing pull requests of new contributors for experience. “This is a great learning opportunity for you” as they said it. Exactly as I was told, this was indeed a great and enjoyable opportunity.&lt;/p&gt;
&lt;h2 id="conclusion"&gt;Conclusion&lt;/h2&gt;&lt;h3 id="gratitude-and-acknowledgements"&gt;Gratitude And Acknowledgements&lt;/h3&gt;&lt;p&gt;&lt;a href="https://github.com/possumbilities"&gt;Sara Lovell&lt;/a&gt;, &lt;a href="https://github.com/TimidRobot"&gt;Timid Robot Zehta&lt;/a&gt; and &lt;a href="https://github.com/Shafiya-Heena"&gt;Shafiya Heena&lt;/a&gt; were the best mentors I could have asked for this project program. My primary mentor, Sara, always encouraged me to be on track whenever I lagged behind in work. Considering this was a straightforward project, I did not predict the learning opportunities to be this much in number. I will always be grateful for these 12 weeks of support, learning and growth. Thank you !&lt;/p&gt;
&lt;h3 id="for-future-contributors"&gt;For Future Contributors&lt;/h3&gt;&lt;p&gt;All the contributors that are hoping to contribute to this repository, or this organization, I welcome you with all my heart. If you are targeting to get selected in an Open Source mentorship program, that is a great idea. But do not just contribute to Open Source for the sake of resume building and stipend. I agree they are very good benefits, but Open Source is simply much more than this. Once you contribute to Open Source, you will fall in love with the support you get from this community, just like I did. You can find me on &lt;a href="https://github.com/"&gt;GitHub&lt;/a&gt; and on the &lt;a href="https://github.com/creativecommons/cc-resource-archive"&gt;CC-Resource-Archive&lt;/a&gt; repository mainly. Let’s have the conversation there!&lt;/p&gt;
</content></entry><entry><title>Local Environment Creation using Ansible and Docker: Part 1</title><link href="http://opensource.creativecommons.org/blog/entries/2024-07-19-create-local-ansible-dev-env/" rel="alternate"/><updated>2024-07-18T00:00:00Z</updated><author><name>['amandayclee']</name></author><id>urn:uuid:6b1318ac-36d5-3881-a3fb-235ad3557944</id><content type="html">&lt;p&gt;This project explores how Creative Commons
(CC) uses Ansible, an automated system administration tool, to build a local development environment. It is part of Google Summer of Code (GSoC) 2024.&lt;/p&gt;
&lt;div style="text-align: center;"&gt;
    &lt;img src="gsoc-banner.png" alt="GSoC 2024" style="max-height: 200px;"&gt;
&lt;/div&gt;&lt;h1 id="project-objective"&gt;Project Objective&lt;/h1&gt;&lt;h2 id="project-background"&gt;Project Background&lt;/h2&gt;&lt;p&gt;&lt;a href="https://github.com/creativecommons/ansible-dev"&gt;This project&lt;/a&gt; aims to establish a local development environment that closely mirrors our production setup at CC. Currently, CC uses Salt Stack for configuration management. However, the team is evaluating other tools for various reasons. In this project, we explored Ansible, renowned for its simplicity and robust automation capabilities. We combined Ansible with Docker containers to streamline and secure development processes, creating lightweight, isolated environments for running applications.&lt;/p&gt;
&lt;h2 id="challenges-and-learning-opportunities"&gt;Challenges and Learning Opportunities&lt;/h2&gt;&lt;p&gt;Before this project, I didn't have exposure to professional DevOps practices, so this project has been a significant learning experience for me. It focuses on the deployment phase of the DevOps lifecycle, particularly provisioning (setting up servers) and configuration management (managing software and settings). During our early stage exploration, we performed manual provisioning and concentrated on utilizing Ansible for configuration management. Our primary goal is to containerize existing applications, packaging them with their dependencies into Docker containers. Ansible itself operates within a container and manages other containers via SSH.&lt;/p&gt;
&lt;p&gt;&lt;img src="/blog/entries/2024-07-19-create-local-ansible-dev-env/server-structure.png" alt="Server Structure"&gt;
&lt;em&gt;This architecture diagram is designed by my mentor and project lead &lt;a href="https://opensource.creativecommons.org/blog/authors/shafiya/"&gt;Shafiya&lt;/a&gt;.&lt;/em&gt;&lt;/p&gt;
&lt;h3 id="week-by-week-progress"&gt;Week-by-Week Progress&lt;/h3&gt;&lt;p&gt;I began by following the &lt;a href="https://docs.docker.com/guides/getting-started/"&gt;Docker&lt;/a&gt; and &lt;a href="https://docs.ansible.com/ansible/latest/getting_started/index.html"&gt;Ansible&lt;/a&gt; setup guides from the official documentation to successfully deploy an initial &lt;code&gt;ansible&lt;/code&gt; container in &lt;a href="https://github.com/creativecommons/ansible-dev/pull/9"&gt;Creating Initial Structure for Ansible&lt;/a&gt;. This step was crucial for gaining a foundational understanding of Ansible's basic functionality and setup within a containerized environment.&lt;/p&gt;
&lt;p&gt;In the second week, I separated the existing &lt;a href="https://github.com/creativecommons/index-dev-env"&gt;&lt;code&gt;index-dev&lt;/code&gt;&lt;/a&gt; repository, which is the local development environment for current CreativeCommons.org, into individual containers for the &lt;code&gt;web&lt;/code&gt; server and &lt;code&gt;database&lt;/code&gt; server in &lt;a href="https://github.com/creativecommons/ansible-dev/pull/11"&gt;Setting Up Ansible Environment and Hosts&lt;/a&gt;. At the same time, I started investigating the setup of a &lt;a href="https://ovh.github.io/the-bastion/index.html"&gt;Bastion server&lt;/a&gt; and its integration into our system, aiming to enforce a security-focused approach for controlling access to a private network.&lt;/p&gt;
&lt;p&gt;In the third week, I established SSH access between the local machine and &lt;code&gt;web&lt;/code&gt;, &lt;code&gt;database&lt;/code&gt;, and &lt;code&gt;ansible&lt;/code&gt; servers with my mentor Shafiya's guidance in &lt;a href="https://github.com/creativecommons/ansible-dev/pull/12"&gt;Setting Up SSH For &lt;code&gt;web&lt;/code&gt; and &lt;code&gt;database&lt;/code&gt; and Integrate with &lt;code&gt;ansible&lt;/code&gt;&lt;/a&gt;. This step was crucial for enabling secure, automated management of the containers from the Ansible container. One important lesson I learned from Shafiya is to build things from scratch, making frequent commits that document your thought process, rather than trying to put everything together at once and complicating matters.&lt;/p&gt;
&lt;p&gt;In the fourth week, I started writing Ansible playbooks and moved several configurations originally located in the &lt;code&gt;web&lt;/code&gt; Dockerfile to the playbook. Combining Dockerfiles and Ansible playbooks is a common best practice: &lt;strong&gt;Dockerfiles are responsible for building the base image, including the OS and basic tools, while Ansible playbooks handle the application and service configurations.&lt;/strong&gt; However, this part took longer than expected, so we had to extend the work for one more week. Looking back, it was likely because I had no previous experience in developing using LAMP (Linux, Apache, MySQL, PHP) stack, and didn't know how to properly configure each component, which prevented me from successfully launching the services. As a result, I had to review the &lt;code&gt;index-dev&lt;/code&gt; repo and what Shafiya and I did in the previous week, and finally got the service to start up correctly in &lt;a href="https://github.com/creativecommons/ansible-dev/pull/13"&gt;Creating A Playbook to Configure Wordpress Over Apache2&lt;/a&gt;.&lt;/p&gt;
&lt;h3 id="communication-and-collaboration-in-open-source"&gt;Communication and Collaboration in Open Source&lt;/h3&gt;&lt;p&gt;The CC team, including mentor Shafiya and team members &lt;a href="https://opensource.creativecommons.org/blog/authors/TimidRobot/"&gt;Timid Robot&lt;/a&gt; and &lt;a href="https://opensource.creativecommons.org/blog/authors/sara/"&gt;Sara&lt;/a&gt;, provided valuable insights into system design and broader architectural considerations. Weekly sync meetings and the flexibility to schedule 1:1 sessions facilitated smooth progress. The team provided clear documentation and actively engaged in public Slack channels, making it easy for any contributor to get involved and stay informed.&lt;/p&gt;
&lt;h2 id="conclusion-and-next-steps"&gt;Conclusion and Next Steps&lt;/h2&gt;&lt;p&gt;Moving forward, the focus will be on refining the Ansible playbooks, addressing any bugs or issues, and working on security and scalability concerns. The goal is to deliver a robust and efficient local development environment that closely mirrors the production setup. I'll continue contributing to the community and providing detailed documentation to support future developers in this project.&lt;/p&gt;
</content></entry><entry><title>Empowering Open Knowledge: GSoC 2024 With Creative Commons</title><link href="http://opensource.creativecommons.org/blog/entries/empowering-open-knowledge-gsoc-2024-with-creative-commons/" rel="alternate"/><updated>2024-07-10T00:00:00Z</updated><author><name>['Murdock9803']</name></author><id>urn:uuid:e31bd330-2d85-340b-b501-7fe07a81290d</id><content type="html">&lt;p&gt;Hello everyone! My name is Ayush Sahu, and I am thrilled to announce that I have joined Creative Commons this summer through the &lt;a href="https://summerofcode.withgoogle.com/"&gt;Google Summer of Code (2024)&lt;/a&gt; program. As a passionate advocate for open knowledge and a firm believer in the power of collaborative innovation, I am grateful to contribute to an organization that has been championing the free exchange of information and creativity for years.&lt;/p&gt;
&lt;p&gt;&lt;img src="/blog/entries/empowering-open-knowledge-gsoc-2024-with-creative-commons/GSoC+CC-banner.png" alt="GSoC and CC banner"&gt;&lt;/p&gt;
&lt;p&gt;I was inspired to collaborate with Creative Commons because of the profound impact it had on me personally. As a child creating videos for my YouTube channel, I was immensely grateful for the resources provided by Creative Commons. Their promotion of free and open knowledge enabled me to access high-quality content without the constraints of traditional licensing, fostering my creativity and passion for sharing information. This experience instilled in me a deep appreciation for the organization and its mission.&lt;/p&gt;
&lt;h2 id="the-project-i-am-working-on"&gt;The Project I Am Working On&lt;/h2&gt;&lt;p&gt;The project - &lt;strong&gt;Modernize CC Resource Archive&lt;/strong&gt; focuses on implementing a comprehensive  visual overhaul to the &lt;a href="https://resources.creativecommons.org/"&gt;Resource Archive&lt;/a&gt; to align with current Creative Commons aesthetics and functionality standards. Utilizing the &lt;a href="https://github.com/creativecommons/vocabulary"&gt;Internal Design System (Vocabulary)&lt;/a&gt;, the project aims to upgrade the visual design, implement semantic, accessible, and standards-compliant &lt;code&gt;HTML&lt;/code&gt;, &lt;code&gt;CSS&lt;/code&gt;, and &lt;code&gt;JavaScript&lt;/code&gt;, and improve user experience (UX) for resource submission while ensuring site stability on &lt;code&gt;GitHub Pages&lt;/code&gt;. Through these efforts and solid documentation, the revamped Resources Archive will meet modern standards, enhance usability, and facilitate maintainability for both users and developers.&lt;/p&gt;
&lt;h2 id="community-bonding-period"&gt;Community Bonding Period&lt;/h2&gt;&lt;p&gt;The community bonding period has been an incredibly enriching experience. During this time, I had the opportunity to meet my mentors, familiarize myself with the project, and engage with the vibrant community behind Creative Commons. I participated in meetings and discussions, which have deepened my understanding of the organization's values as well as the codebase. The warm welcome and the wealth of knowledge shared by the community have been truly inspiring.&lt;/p&gt;
&lt;h2 id="environment-code-ideation-weeks-1-2-3"&gt;Environment, Code &amp;amp; Ideation - Weeks 1, 2 &amp;amp; 3&lt;/h2&gt;&lt;p&gt;These were the initial weeks of the project which went into testing the development environment, planning upcoming UI changes and getting acquainted with the working process.  Firstly, my project mentor &lt;a href="https://opensource.creativecommons.org/blog/authors/sara/"&gt;Sara&lt;/a&gt; guided me through my first contribution in the coding period. I was granted member status at the Creative Commons Organization on GitHub, which was both new and exciting for me.&lt;/p&gt;
&lt;p&gt;The key achievements were:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href="https://github.com/creativecommons/cc-resource-archive/pull/266"&gt;PR#266&lt;/a&gt; - Updated the &lt;code&gt;docker-compose.yml&lt;/code&gt; file to the current spec. With the help of my mentor, I opened this first pull request in the coding period. The file was out of specification, as the &lt;code&gt;version&lt;/code&gt; element at the top of &lt;code&gt;docker-compose.yml&lt;/code&gt; file was just informative.&lt;/li&gt;
&lt;li&gt;&lt;a href="https://github.com/creativecommons/cc-resource-archive/pull/279"&gt;Testing Docker Configurations&lt;/a&gt;: With immense help from mentors Sara and Timid Robot, I got the Docker environment ready for development.&lt;/li&gt;
&lt;li&gt;Learned more about &lt;a href="https://jekyllrb.com/docs/"&gt;Jekyll&lt;/a&gt; and read the &lt;a href="https://github.com/creativecommons/vocabulary"&gt;Vocabulary&lt;/a&gt; code. Got familiar with classes in vocabulary.css and the custom CSS variables in library-vars.css. &lt;/li&gt;
&lt;li&gt;Accessibility Improvements: Learned about keyboard navigability and optimizing the website for better accessibility using semantic HTML and appropriate CSS properties.&lt;/li&gt;
&lt;li&gt;Issue Listing: Identified and listed relevant issues related to semantic code and UI changes. Also added some issues as a to-do list, as suggested by my mentor.&lt;/li&gt;
&lt;li&gt;Reviewed the present structure of the files, and worked on ideas to improve the structure for better understandability and grouping of similar files.&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;At the end of these initial weeks, I realized that I have spent enough time on understanding the code and planning on things. But as my mentor suggested, things will get smoother once we start working on them practically. So I decided to increase the pace of work in the upcoming weeks to get the planned tasks executed.&lt;/p&gt;
&lt;h2 id="execution-updation-refactor-weeks-4-5-6"&gt;Execution, Updation &amp;amp; Refactor - Weeks 4, 5 &amp;amp; 6&lt;/h2&gt;&lt;p&gt;As the midterm evaluation approached, we held weekly review meetings to plan changes and contributions. The pace picked up in weeks 5 and 6, resulting in several presentable pull requests dedicated to UI changes and code refactoring. Notable tasks executed include:&lt;/p&gt;
&lt;h3 id="improving-file-structure"&gt;Improving File Structure&lt;/h3&gt;&lt;p&gt;With discussion with my mentor, I improved the file structure in the codebase for better understandability and maintainability. After updating the structure, the paths to all the files that were changed were modified.  This was achieved by a group of Pull Requests that were created catering to the issue. The pull requests were:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href="https://github.com/creativecommons/cc-resource-archive/pull/280"&gt;PR#280&lt;/a&gt; - Adds &lt;code&gt;footer.html&lt;/code&gt; to the &lt;code&gt;_includes&lt;/code&gt; directory.&lt;/li&gt;
&lt;li&gt;&lt;a href="https://github.com/creativecommons/cc-resource-archive/pull/281"&gt;PR#281&lt;/a&gt; - Includes &lt;code&gt;footer.html&lt;/code&gt; to all the pages of the site.&lt;/li&gt;
&lt;li&gt;&lt;a href="https://github.com/creativecommons/cc-resource-archive/pull/282"&gt;PR#282&lt;/a&gt; - Shifted &lt;code&gt;an-explanation-of-creative-commons&lt;/code&gt; to &lt;code&gt;_resources&lt;/code&gt;.&lt;/li&gt;
&lt;li&gt;&lt;a href="https://github.com/creativecommons/cc-resource-archive/pull/289"&gt;PR#289&lt;/a&gt; - Improves the file structure in the codebase.&lt;/li&gt;
&lt;li&gt;&lt;a href="https://github.com/creativecommons/cc-resource-archive/pull/292"&gt;PR#292&lt;/a&gt; - Updates the paths to downloadable resources and PDFs.&lt;/li&gt;
&lt;li&gt;&lt;a href="https://github.com/creativecommons/cc-resource-archive/pull/296"&gt;PR#296&lt;/a&gt; - Updated the &lt;code&gt;resource-template&lt;/code&gt; with new paths for images.&lt;/li&gt;
&lt;/ul&gt;
&lt;h3 id="listing-page-ui-changes"&gt;Listing Page UI Changes&lt;/h3&gt;&lt;p&gt;The &lt;code&gt;listing.html&lt;/code&gt; page is responsible for the display of resource cards on the &lt;code&gt;index.html&lt;/code&gt; and &lt;code&gt;all.html&lt;/code&gt; pages. The resource cards had an outdated visual setup and needed to be aligned with the Internal Design System of Creative Commons known as Vocabulary. 
Through the &lt;a href="https://github.com/creativecommons/cc-resource-archive/pull/298"&gt;PR#298&lt;/a&gt;, I performed the following tasks:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Refactored the html structure of the resource card to &lt;code&gt;IMAGE - TITLE - BLURB&lt;/code&gt;.&lt;/li&gt;
&lt;li&gt;Utilizing vocabulary, enhanced the style for &lt;code&gt;thumbnail list&lt;/code&gt; in &lt;code&gt;listing.html&lt;/code&gt;. Worked on the grid structure in &lt;code&gt;style.css&lt;/code&gt;.&lt;/li&gt;
&lt;li&gt;Likewise, worked on enhancing style for the &lt;code&gt;thumbnail box&lt;/code&gt;, &lt;code&gt;thumbnail title&lt;/code&gt;, &lt;code&gt;thumbnail image&lt;/code&gt; and &lt;code&gt;thumbnail blurb&lt;/code&gt;.&lt;/li&gt;
&lt;li&gt;Worked on Fonts, colors, background colors, etc. according to &lt;code&gt;vocabulary&lt;/code&gt;.&lt;/li&gt;
&lt;li&gt;Assigned properties like &lt;code&gt;--underline-background-color&lt;/code&gt; from vocabulary into style.css.&lt;/li&gt;
&lt;li&gt;Formatted the &lt;code&gt;style.css&lt;/code&gt; and &lt;code&gt;listing.html&lt;/code&gt; files with &lt;code&gt;prettier&lt;/code&gt;.&lt;/li&gt;
&lt;li&gt;Fixed the responsiveness of the resource cards.&lt;/li&gt;
&lt;li&gt;Added Documentation in &lt;code&gt;style.css&lt;/code&gt; for understandability.&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;And through the &lt;a href="https://github.com/creativecommons/cc-resource-archive/pull/302"&gt;PR#302&lt;/a&gt;, the following tasks were completed:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Added a heading to the page.&lt;/li&gt;
&lt;li&gt;Added clear documentation about various sections in the file.&lt;/li&gt;
&lt;li&gt;Formatted the code with &lt;code&gt;prettier&lt;/code&gt; code formatter.&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;All these changes gave the website a new look, aligning more closely with the standard Creative Commons design schemes.&lt;/p&gt;
&lt;h3 id="listing-page-all-javascript-changes"&gt;Listing Page (All) Javascript Changes&lt;/h3&gt;&lt;p&gt;The javascript code in listing.html file resided in the &lt;code&gt;&amp;lt;head&amp;gt;&lt;/code&gt; section of the page. The code was outdated and was lacking the ES6 Javascript concepts. For example, there were uses of &lt;code&gt;var&lt;/code&gt; keyword, &lt;code&gt;document.write()&lt;/code&gt; method, etc.. The code was responsible for a number of tasks related to the display of resources. It extracted the user-selected categories from the URL and then returned them as variables. Also, the javascript code was responsible for displaying the resources which contained the selected categories. 
Through the &lt;a href="https://github.com/creativecommons/cc-resource-archive/pull/300"&gt;PR#300&lt;/a&gt;, the following tasks were completed:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Updated the functions and code to follow ES6 javascript concepts.&lt;/li&gt;
&lt;li&gt;Replaced the &lt;code&gt;document.write()&lt;/code&gt; method with &lt;code&gt;Document Object Manipulation&lt;/code&gt;. The &lt;code&gt;document.write()&lt;/code&gt; is old and not preferable.&lt;/li&gt;
&lt;li&gt;Utilized the javascript &lt;code&gt;DOM&lt;/code&gt; for all the tasks related to filtering of resources in &lt;code&gt;listing.js&lt;/code&gt;.&lt;/li&gt;
&lt;li&gt;Assigned checks to the categories selected by the user (which are extracted through the URL), sanitizing the input and preventing any attacks on the website.&lt;/li&gt;
&lt;li&gt;Added proper documentation for all the functions and sections of code for better understandability.&lt;/li&gt;
&lt;/ul&gt;
&lt;h3 id="resource-page-ui-changes"&gt;Resource Page UI Changes&lt;/h3&gt;&lt;p&gt;The resource page is a &lt;code&gt;layout&lt;/code&gt; to show various resources that are submitted in the resource archive. This layout page accepts values from the &lt;code&gt;front matter&lt;/code&gt; of various resources. This page was overall enhanced in terms of alignment to Creative Commons’ Design System. 
The &lt;a href="https://github.com/creativecommons/cc-resource-archive/pull/304"&gt;PR#304&lt;/a&gt; performs the following tasks:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Refactors the whole code for &lt;code&gt;resource.html&lt;/code&gt; page by implementing semantic HTML.&lt;/li&gt;
&lt;li&gt;Improves the styling of the page in &lt;code&gt;styles.css&lt;/code&gt;, by utilizing vocabulary.&lt;/li&gt;
&lt;li&gt;Makes the page responsive. &lt;/li&gt;
&lt;li&gt;The inspiration is drawn from the &lt;a href="https://vocabulary-docs.netlify.app/specimen/contexts/blog-post.html"&gt;Vocabulary Blog Post Page&lt;/a&gt;.&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;These three weeks saw the most significant work being merged, resulting in a refreshed interface. Despite a slow start, consistent effort and mentor support helped me catch up by the midterm evaluation, making these weeks a great learning experience.&lt;/p&gt;
&lt;h2 id="issues-solved-till-now"&gt;Issues Solved Till Now&lt;/h2&gt;&lt;p&gt;The issues relevant to the project which have been solved until now are listed below:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href="https://github.com/creativecommons/cc-resource-archive/issues/17"&gt;#17&lt;/a&gt; - upgrade JS code in listings.html&lt;/li&gt;
&lt;li&gt;&lt;a href="https://github.com/creativecommons/cc-resource-archive/issues/176"&gt;#176&lt;/a&gt; - make thumbnails responsive&lt;/li&gt;
&lt;li&gt;&lt;a href="https://github.com/creativecommons/cc-resource-archive/issues/242"&gt;#242&lt;/a&gt; - add footer in submission and resource pages&lt;/li&gt;
&lt;li&gt;&lt;a href="https://github.com/creativecommons/cc-resource-archive/issues/265"&gt;#265&lt;/a&gt; - The docker-compose.yml file currently out of spec&lt;/li&gt;
&lt;li&gt;&lt;a href="https://github.com/creativecommons/cc-resource-archive/issues/267"&gt;#267&lt;/a&gt; - Improve documentation for Dockerfiles&lt;/li&gt;
&lt;li&gt;&lt;a href="https://github.com/creativecommons/cc-resource-archive/issues/269"&gt;#269&lt;/a&gt; - relocate footer code to separate file ‘footer.html’ for reuse&lt;/li&gt;
&lt;li&gt;&lt;a href="https://github.com/creativecommons/cc-resource-archive/issues/273"&gt;#273&lt;/a&gt; - Resource file in the wrong location&lt;/li&gt;
&lt;li&gt;&lt;a href="https://github.com/creativecommons/cc-resource-archive/issues/276"&gt;#276&lt;/a&gt; - Inconsistent docker behavior - Parsing Gemfile&lt;/li&gt;
&lt;li&gt;&lt;a href="https://github.com/creativecommons/cc-resource-archive/issues/283"&gt;#283&lt;/a&gt; - Unnecessary google analytics function in listing.html&lt;/li&gt;
&lt;li&gt;&lt;a href="https://github.com/creativecommons/cc-resource-archive/issues/285"&gt;#285&lt;/a&gt; - Unnecessary google analytics function in resource and submission.html&lt;/li&gt;
&lt;li&gt;&lt;a href="https://github.com/creativecommons/cc-resource-archive/issues/287"&gt;#287&lt;/a&gt; - The file structure in the codebase can be improved. (re-structuring)&lt;/li&gt;
&lt;li&gt;&lt;a href="https://github.com/creativecommons/cc-resource-archive/issues/288"&gt;#288&lt;/a&gt; - The style.css file is not properly organized and lacks documentation&lt;/li&gt;
&lt;li&gt;&lt;a href="https://github.com/creativecommons/cc-resource-archive/issues/290"&gt;#290&lt;/a&gt; - The download [pdf] file links at bottom of resources aren't working&lt;/li&gt;
&lt;li&gt;&lt;a href="https://github.com/creativecommons/cc-resource-archive/issues/293"&gt;#293&lt;/a&gt; - The resourcetemplate.md needs to be updated.&lt;/li&gt;
&lt;li&gt;&lt;a href="https://github.com/creativecommons/cc-resource-archive/issues/297"&gt;#297&lt;/a&gt; - Change the design of resource cards on homepage using vocabulary&lt;/li&gt;
&lt;li&gt;&lt;a href="https://github.com/creativecommons/cc-resource-archive/issues/165"&gt;#165&lt;/a&gt; - section heading for resource cards&lt;/li&gt;
&lt;li&gt;&lt;a href="https://github.com/creativecommons/cc-resource-archive/issues/301"&gt;#301&lt;/a&gt; - Add proper documentation to listing.html, refactor for structure&lt;/li&gt;
&lt;li&gt;&lt;a href="https://github.com/creativecommons/cc-resource-archive/issues/101"&gt;#101&lt;/a&gt; - Organize code with proper indentation&lt;/li&gt;
&lt;li&gt;&lt;a href="https://github.com/creativecommons/cc-resource-archive/issues/41"&gt;#41&lt;/a&gt; - UI/UX for resource page&lt;/li&gt;
&lt;li&gt;&lt;a href="https://github.com/creativecommons/cc-resource-archive/issues/272"&gt;#272&lt;/a&gt; - unwanted underline in the resource page&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 id="my-experience-from-getting-selected-to-midterm"&gt;My Experience - From Getting Selected To Midterm&lt;/h2&gt;&lt;p&gt;Getting selected to Google Summer of Code was honestly a very big deal for me. When I joined my university for my undergraduate degree, our seniors introduced us to two guys who got selected in GSoC that year. They were given immense importance and respect by our seniors and also my batchmates. From that instance I got to know that being a GSoC Contributor is a very prestigious thing for someone hoping to start their career. Having zero background knowledge in programming, I thought it’s not something that I should aim for, and leave it to the guys who already are pro at coding. But the dream of being a GSoC contributor just stuck somewhere in my head. 
Fast forward to my third year at the university, I became good with frontend development as it was something that naturally excited me. After working hard for some months, I was finally selected for the GSoC 2024 program with Creative Commons.&lt;/p&gt;
&lt;p&gt;Now after being selected to GSoC, I was very happy and satisfied as it was a dream come true. As a result of this, I could not do the amount of work that I should have, in the initial weeks of the program. I had weekly review meetings with the org mentors, who constantly supported and encouraged me to catch up to the planned timeline of tasks. As a result of their motivation and some extra efforts, I was able to finish the tasks that needed to be done till the midterm evaluation. At this point I feel really good that we are successful in completing the tasks till the midterm evaluation. The best thing about this is that it was always &lt;strong&gt;a combined effort&lt;/strong&gt;. I am planning to execute more tasks in the other half of the period, than we have till now. I’ll be faster as I have become really comfortable working with my mentors in these six weeks.&lt;/p&gt;
&lt;h2 id="gratitude-and-acknowledgements"&gt;Gratitude and Acknowledgements&lt;/h2&gt;&lt;p&gt;I would like to express my heartfelt gratitude to my mentors and the entire Creative Commons community for giving me this incredible opportunity. Your support and guidance have been invaluable. Special thanks to my mentor &lt;a href="https://opensource.creativecommons.org/blog/authors/sara/"&gt;Sara Lovell (Possumbilities)&lt;/a&gt; for the constant support that I received from you all the time. I am really grateful for not only the technical help, but also the motivation, support and encouragement I got from your side. Also &lt;a href="https://opensource.creativecommons.org/blog/authors/TimidRobot/"&gt;Timid Robot&lt;/a&gt; and &lt;a href="https://opensource.creativecommons.org/blog/authors/shafiya/"&gt;Shafiya Heena&lt;/a&gt; were always present there whenever I needed them. Be it the weekly review meetings, or my confusion related to the development environment, I never felt I’m alone in this . I am excited to work further under your guidance and contribute to the shared vision of Creative Commons.&lt;/p&gt;
&lt;h2 id="join-the-discussion"&gt;Join The Discussion&lt;/h2&gt;&lt;p&gt;There are numerous ways you can join the discussion and contribute to the project. Whether it’s by providing feedback, contributing to the codebase or simply spreading the word about open knowledge, your participation is highly encouraged. You can check out our github repository &lt;a href="https://github.com/creativecommons/cc-resource-archive"&gt;here&lt;/a&gt;, to find the codebase and join the discussion over there.&lt;/p&gt;
</content></entry><entry><title>Automating Quantifying the Commons: Part 1</title><link href="http://opensource.creativecommons.org/blog/entries/2024-07-10-automating-quantifying/" rel="alternate"/><updated>2024-07-10T00:00:00Z</updated><author><name>['NaishaSinha']</name></author><id>urn:uuid:b2a3d487-e31e-3090-8a53-296e27ced5f7</id><content type="html">&lt;p&gt;&lt;img src="/blog/entries/2024-07-10-automating-quantifying/Automating - GSoC Logo.png" alt="GSoC 2024"&gt;&lt;/p&gt;
&lt;h2 id="introduction"&gt;Introduction&lt;/h2&gt;&lt;hr&gt;
&lt;p&gt;Quantifying the Commons, an initiative emerging from the UC Berkeley Data Science Discovery Program, 
aims to quantify the frequency of open domain and CC license usage for future accessibility and analysis purposes 
(Refer to the initial CC article for Quantifying &lt;strong&gt;&lt;a href="https://opensource.creativecommons.org/blog/entries/2022-12-07-berkeley-quantifying/"&gt;here!&lt;/a&gt;&lt;/strong&gt;). 
To date, the scope of the previous project advancements has not included automation or combined reporting, 
which is necessary to minimize the potential for human error and allow for more timely updates, 
especially for a system that engages with substantial streams of data. &lt;br&gt;&lt;/p&gt;
&lt;p&gt;As a selected developer for Google Summer of Code 2024, 
my goal this summer is to develop automation software for data gathering, flow, and report generation, 
ensuring that reports are never more than 3 months out-of-date. This blog post serves as a technical journal
for my endeavor till the midterm evaluation period. &lt;strong&gt;&lt;a href="https://opensource.creativecommons.org/blog/entries/2024-08-22-automating-quantifying/"&gt;Automating Quantifying the Commons: Part 2&lt;/a&gt;&lt;/strong&gt; will be posted after successful completion of the
entire summer program.&lt;/p&gt;
&lt;h2 id="pre-program-knowledge-and-associated-challenges"&gt;Pre-Program Knowledge and Associated Challenges&lt;/h2&gt;&lt;hr&gt;
&lt;p&gt;As an undergraduate CS student, I had not yet had any experience working with codebases
as intricate as this one; the most complex software I had worked on prior to this undertaking
was most probably a medium-complexity full-stack application. In my pre-GSoC contributions to Quantifying, I did successfully 
implement logging across all the Python files (&lt;strong&gt;&lt;a href="https://github.com/creativecommons/quantifying/pull/97"&gt;PR #97&lt;/a&gt;&lt;/strong&gt;), but admittedly, I was not familiar with a lot of the other modules that 
were being used in these files. As a result, this caused minor inconveniences to my development process from the very beginning. 
For example, not being experienced with operating system (OS) modules had me confused as to how I was supposed to 
join new directories. In addition, I had never worked with such large streams of data before, so it was initially a
challenge to map out pseudocode for handling big data effectively. The next section elaborates on my development process and how I resolved these setbacks.&lt;/p&gt;
&lt;h2 id="development-process-midterm"&gt;Development Process (Midterm)&lt;/h2&gt;&lt;hr&gt;
&lt;h3 id="i-data-flow-diagram-construction"&gt;I. Data Flow Diagram Construction&lt;/h3&gt;&lt;p&gt;Before starting the code implementation, I decided to develop a &lt;strong&gt;Data Flow Diagram (DFD)&lt;/strong&gt;, which provides a visual
representation of how data flows through a software system. While researching effective DFDs for inspiration, I came across
a &lt;strong&gt;&lt;a href="https://docs.aws.amazon.com/whitepapers/latest/microservices-on-aws/distributed-data-management.html"&gt;technical whitepaper by Amazon Web Services (AWS)&lt;/a&gt;&lt;/strong&gt; on Distributed Data Management, and I found it very helpful in drafting
my own DFD. As I was still relatively new to the codebase, it helped me simplify
the current system into manageable components and better understand how to implement the rest of the project.&lt;/p&gt;
&lt;p&gt;&lt;img src="/blog/entries/2024-07-10-automating-quantifying/DFD.png" alt="DFD"&gt;
This was the initial layout for the data directory flow; however, the more I delved into the development process,
the more the steps changed. I will present the final directory flow in Part 2 at the end of the program.&lt;/p&gt;
&lt;h3 id="ii-identifying-the-first-data-source-to-target"&gt;II. Identifying the First Data Source to Target&lt;/h3&gt;&lt;p&gt;The main approach for implementing this project was to target one specific data source and complete its data extraction, analysis,
and report generation process before adding more data sources to the codebase. There were two possible strategies to consider:
(1) work on the easier data sources first, or (2) begin with the highest complexity data source and then add the easier
ones later. Both approaches have notable pros and cons; however, I decided to adopt the second strategy of 
starting with the most complex data source first. Although this would take slightly longer to implement, it would simplify the process
later on. As a result, I began implementing the software for the &lt;strong&gt;Google Custom Search&lt;/strong&gt;
data source, which has the largest number of data retrieval potential among all the other sources.&lt;/p&gt;
&lt;h3 id="iii-directory-setup-code-implementation"&gt;III. Directory Setup + Code Implementation&lt;/h3&gt;&lt;p&gt;Based on the DFD, &lt;strong&gt;&lt;a href="https://opensource.creativecommons.org/blog/authors/TimidRobot/"&gt;Timid Robot&lt;/a&gt;&lt;/strong&gt; (my mentor) and I identified the directory process to be as such: within our &lt;code&gt;scripts&lt;/code&gt; directory, we would have
separate sub-directories to reflect the phases of data flow, &lt;code&gt;1-fetch&lt;/code&gt;, &lt;code&gt;2-process&lt;/code&gt;, &lt;code&gt;3-report&lt;/code&gt;. The code would then be
set up to interact between systems in chronological order. Additionally, a shared directory was implemented to optimize similar functions and paths. &lt;br&gt;&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;&lt;code&gt;1-fetch&lt;/code&gt;&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;As I mentioned in the previous sections, starting to code the initial file was a challenge, as I had to learn how to use
new technologies and libraries on-the-go. As a matter of fact, my struggles began when I couldn't even import the 
shared module correctly. However, slowly but surely, I found that consistent research of available documentation as well
as constant insights from Timid Robot made it so that I finally understood everything that I was working with. There were
a few specific things that helped me especially, and I would like to share them here in case it helps any software
developer reading this post:&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;Reading Technical Whitepapers:&lt;/strong&gt; As I mentioned earlier, I studied a technical whitepaper by AWS to help me design my DFD.
From this, I realized that consulting relevant whitepapers by industry giants to see how they approach similar tasks
helped me a lot in understanding best practices to implementing the system. Here is another resource by Meta that I referenced, 
called &lt;strong&gt;&lt;a href="https://engineering.fb.com/2024/05/22/data-infrastructure/composable-data-management-at-meta/"&gt;Composable Data Management at Meta&lt;/a&gt;&lt;/strong&gt; (I mainly used the  &lt;em&gt;Building on Similarities&lt;/em&gt; section
to study the logical components of data systems).&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;Referencing the Most Recent Quantifying Codebase:&lt;/strong&gt; The pre-automation code that was already implemented by previous developers
for &lt;em&gt;Quantifying the Commons&lt;/em&gt;
was the closest thing to my own project that I could reference. Although not all of the code was relevant to the Automating project,
there were many aspects of the codebase I found very helpful to take inspiration from, especially when online research led to a
dead end.&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;Writing Documentation for the Code:&lt;/strong&gt; As a part of this project, I assigned myself the task of developing documentation for
the Automating Quantifying the Commons project (&lt;strong&gt;&lt;a href="https://unmarred-gym-686.notion.site/Automating-Quantifying-the-Commons-Documentation-441056ae02364d8a9a51d5e820401db5?pvs=4"&gt;can be accessed here!&lt;/a&gt;&lt;/strong&gt;). Heavily inspired by the "rubber duck debugging"
method, where explaining the code or problem step-by-step to someone or something will make the solution present itself, I decided to create documentation
for future developers to reference, in which I break down the code step-by-step to explain each module or function. I found that in
doing this, I was able to better understand my own code better.&lt;/p&gt;
&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;As for the license data retrieval process using the Google Custom Search API Key, 
I did have a little hesitation running everything for the first time. 
Since I had never worked with confidential information or such large data inputs before, 
I was scared of messing something up. Sure enough, the first time I ran everything with the language and country parameters, 
it did cause a crash, since the API query-per-day limit was crossed with one script run. As I continued to update 
the script, I learned a very useful trick when it comes to handling big data: 
to avoid hitting the query limit while testing, you can replace the actual API calls 
with logging statements to show the parameters being used. This helps you 
understand the outputs without actually consuming API quota, and it can help you identify bugs more easily. &lt;br&gt;&lt;/p&gt;
&lt;p&gt;A notable aspect of this software is the directory organization. Throughout the process, I designed it so that the datasets are automatically stored within their
respective quarter's directories rather than being stored altogether. This ensures efficient organization in order for users to easily access in the future, 
especially when the number of datasets multiplies.&lt;/p&gt;
&lt;p&gt;Upon successful completion of basic data retrieval and state management in Phase 1, 
I felt much more confident about the trajectory of this project, and implementing 
future steps and fixing new bugs became progressively easier.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;&lt;code&gt;2-process&lt;/code&gt;&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;The long-term goal of the Quantifying project is to have comprehensive datasets for each quarter, encompassing
license data that scales up to millions and even billions. For the &lt;code&gt;2-process&lt;/code&gt; phase specifically, the aim is 
to analyze and compare data between quarters to be able to display in the reports. However, given our Google Custom Search
API constraints as well as the time period we're working with for the GSoC period (most of this period is mainly
2024Q3), it is not possible to have a fully completed Phase 2. However, in order to deploy as complete of an automation software as possible,
I have set up a basic psuedocode that can be implemented
and built upon by future development efforts as more data is collected in the upcoming quarters/years.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;&lt;code&gt;3-report&lt;/code&gt;&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;As mentioned earlier, the Google Custom Search API constraints made it difficult to create a comprehensive and detailed dataset, so I plan to 
initiate the development of a more fletched-out Google Custom Search post-GSoC, when more data can be accumulated (discussed further in the next section).
As of now, there are three main completed report visualization schemes: &lt;strong&gt;(1)&lt;/strong&gt; Reports by Country, &lt;strong&gt;(2)&lt;/strong&gt; Reports by License Type,
and &lt;strong&gt;(3)&lt;/strong&gt; Reports by Language. Although the visualizations are basic in design, I made sure to incorporate accessibility into the 
visualizations for a better user experience. This included adding elements like labels on top of the bars with specific number counts for better
readability and understanding of the reports. In addition, I included three key features in the reports codebase to cater to various possible 
needs of the report users.&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;&lt;strong&gt;Key Feature #1:&lt;/strong&gt; I implemented command line arguments in which users can choose any quarter to visualize, as I believe this would be useful
for anyone in need of individual reports from previous quarters, not just reports from this quarter.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Key Feature #2:&lt;/strong&gt; Successfully stores reports into the data reports directory specific to each quarter for optimal organization (similar to the
dataset organization in Phase 1). In this way, 
reports from one quarter will not be mixed up with reports from another quarter, making it easier for users to navigate and use.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Key Feature #3:&lt;/strong&gt; The program automatically generates and/or updates an individual &lt;code&gt;README&lt;/code&gt; file for each quarter's reports. This &lt;code&gt;README&lt;/code&gt; organizes
all generated report images within that quarter into one page, alongside basic report descriptions.&lt;/li&gt;
&lt;/ol&gt;
&lt;h2 id="mid-program-conclusions-and-upcoming-tasks"&gt;Mid-Program Conclusions and Upcoming Tasks&lt;/h2&gt;&lt;hr&gt;
&lt;p&gt;Overall, my understanding and skillset for this project increased ten-fold after completing all the phases for Google Custom Search. 
Going into the second half of the Google Summer of Code program, I expect that I will complete the future data sources at a more efficient and faster rate,
given the license data sizes and my heightened expertise. In fact, as of now (the midterm evaluation point), I have completed
a relatively detailed Phase 1 for Flickr, which only involves 10 licenses. My biggest takeaway from the first half of the coding period is that rather than developing
a basic querying process and adding on later, it's easier to start off with a complex and detailed version before moving on to Phases 2 and 3. Additionally, using
the &lt;code&gt;shared&lt;/code&gt; module within the scripts can be very beneficial to simplify the coding process.&lt;/p&gt;
&lt;p&gt;In the second half of the GSoC program, I plan to keep both of these takeaways in mind when developing scripts for the rest of the data sources. On a formal level,
the final goal for the end of GSoC 2024 is to have a working codebase for Phases 1, 2, and 3 of all data sources, 
including a completed automation setup for these scripts. Due to the effectiveness of the current directory organization and report generation features, 
I will be standardizing them across all data sources.&lt;/p&gt;
&lt;p&gt;Finally, after the software is complete to the extent that is possible during the GSoC period, 
I plan to raise issues in the repository respective to all the next steps that
could be taken post-GSoC by open-source developers for a more comprehensive software system.&lt;/p&gt;
&lt;p&gt;So far, my journey at Creative Commons has significantly enhanced my skillset as a software developer, and I have never felt more motivated to take on more challenging tasks. 
I'm looking forward to more levels of growth and accomplishments in the second half of the program. 
I'll be back with Part 2 at the end of the summer with an updated, completed project!&lt;/p&gt;
&lt;h2 id="additional-readings"&gt;Additional Readings&lt;/h2&gt;&lt;hr&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href="https://opensource.creativecommons.org/blog/entries/2024-08-22-automating-quantifying/"&gt;Automating Quantifying the Commons: Part 2&lt;/a&gt; | Author: Naisha Sinha | Aug. 2024&lt;/li&gt;
&lt;li&gt;&lt;a href="https://opensource.creativecommons.org/blog/entries/2022-12-07-berkeley-quantifying/"&gt;Data Science Discovery: Quantifying the Commons&lt;/a&gt; | Author: Dun-Ming Huang (Brandon Huang) | Dec. 2022&lt;/li&gt;
&lt;/ul&gt;
</content></entry><entry><title>New CreativeCommons.org launched 2023 September</title><link href="http://opensource.creativecommons.org/blog/entries/2024-05-28-creativecommons-org/" rel="alternate"/><updated>2024-05-28T00:00:00Z</updated><author><name>['sara', 'shafiya', 'TimidRobot']</name></author><id>urn:uuid:195af2a0-2a00-31c2-864b-ab98b3cb2433</id><content type="html">&lt;p&gt;Creative Commons (CC) launched a new
&lt;a href="https://creativecommons.org/"&gt;CreativeCommons.org&lt;/a&gt; website on 2023 September
27th. This relaunch included not just the website, but the entire technology
stack (platform, server, and website components).&lt;/p&gt;
&lt;h2 id="improved-platform"&gt;Improved platform&lt;/h2&gt;&lt;p&gt;The new website is hosted on AWS. This allowed us to design a more secure
network architecture between services and deploy/manage the services using
infrastructure as code.&lt;/p&gt;
&lt;h2 id="improved-services"&gt;Improved services&lt;/h2&gt;&lt;p&gt;The services running the website were simplified and updated. The number of
distinct servers was reduced from six down to two. Previously, loading the
homepage required five services (HAProxy, Varnish, Apache2, PHP+FPM, and
MariaDB). The complexity of the old services made troubleshooting more
difficult. They were designed before Cloudflare began supporting us through
&lt;a href="https://www.cloudflare.com/galileo/"&gt;Project Galileo&lt;/a&gt;. The new website
requires only two services (Apache2 and MariaDB).&lt;/p&gt;
&lt;h2 id="improved-website-components"&gt;Improved website components&lt;/h2&gt;&lt;h3 id="vocabulary"&gt;Vocabulary&lt;/h3&gt;&lt;p&gt;The website consists of a variety of components that use the Vocabulary design
system (&lt;a href="https://github.com/creativecommons/vocabulary"&gt;creativecommons/vocabulary&lt;/a&gt;) to present a unified user
experience. This relaunch was the first implementation of the new Vocabulary.
It has returned to web core principals favoring semantic HTML and appropriately
scoped CSS styling. It keeps the style layer responsibilities firmly within the
CSS, rather than utilizing a framework like Bootstrap to add a myriad of
style-based classes to the HTML layer.  Furthermore, JavaScript use has been
kept incredibly minimal, offering routes of behavior that can’t already be
accomplished via HTML and/or CSS, letting HTML and CSS do what they do best.
This simplicity improves performance and also lowers barriers for community
contributions.&lt;/p&gt;
&lt;p&gt;Accessibility was a priority, making the code more semantic already helps, but
we went further in ensuring that all the affordances you get from HTML aren’t
blocked or altered via opinionated (and often non-standard) frameworks. The
site performs better generally, and is much kinder to slower connection speeds.&lt;/p&gt;
&lt;p&gt;The new implementation of Vocabulary includes a new Information Architecture
and more stable UX approach for better visitor experiences. CC licensed media
is one of our strengths and as such it was important to allow proper
attribution to be baked into every instance of media rendering within the
design. This means that while the image or video may be important to the flow
of content, its attribution also gets a level of appropriate importance as
well, highlighting ways in which others might handle attribution and following
through on our own mission in the pursuit of better sharing at large.&lt;/p&gt;
&lt;h3 id="wordpress"&gt;WordPress&lt;/h3&gt;&lt;p&gt;The project utilizes a custom WordPress theme
(&lt;a href="https://github.com/creativecommons/vocabulary-theme"&gt;creativecommons/vocabulary-theme&lt;/a&gt;) that implements the new
Vocabulary design system.&lt;/p&gt;
&lt;p&gt;The theme utilizes the WordPress Classic Editor because of its long-term
stability and more stable UX. Gutenberg still does not adhere to adequate
Accessibility approaches, nor does it have a sense of stable
feature-completeness. This creates an unreliable landscape to build upon.
Gutenberg also requires one to build Block composition through React.js to
accomplish tasks that are far easier and more approachable with the standard
PHP templates that the Classic Editor is compatible with. This dramatically
improves the ability for a new contributor to help, and speeds up the
development process.&lt;/p&gt;
&lt;p&gt;To allow a degree of more varied page composition, Advanced Custom Fields was
utilized to more easily add, update, and version control custom fields across
pages and page templates. This strikes a balance between more complex page
composition, but within a more controllable set of circumstances.&lt;/p&gt;
&lt;p&gt;Plugins in general were cut dramatically. The legacy site contained 20 active
plugins, while this project relies on less than half, at 9, with hopeful
pathways to eventually cut that number even further.&lt;/p&gt;
&lt;p&gt;The site utilizes several custom content types and better taxonomies to split
up the UX flow of varied kinds of content creation, allowing for smoother
multi-author attribution, site-wide notices for fundraising and event
announcements, and better blog post organization and way-finding overall.&lt;/p&gt;
&lt;h3 id="cc-legal-tools"&gt;CC Legal Tools&lt;/h3&gt;&lt;p&gt;With the deployment of our new website, we also replaced the legacy ccEngine
with the new CC Legal Tools. The current legal tool landscape is refreshingly
simple with only seven tools (CC BY 4.0, CC BY-NC 4.0, CC BY-NC-ND 4.0, CC
BY-NC-SA 4.0, CC BY-ND 4.0, CC BY-SA 4.0, CC0 1.0). However since previous
versions of the licenses were adapted to specific jurisdictions (ported) and we
collaborate with the community to support many translations, the new CC Legal
Tools app manages over 30,000 documents!&lt;/p&gt;
&lt;p&gt;The project to rewrite the CC Legal Tools and replace the legacy ccEngine began
in 2020 with a request for proposals (&lt;a href="https://docs.google.com/document/d/1mlgmjDorTEwgIRRrvILK3v0pTJbGx8fB5SE1yplrz3Y/edit"&gt;RFP: License Infrastructure - Google
Docs&lt;/a&gt;). The &lt;a href="https://www.caktusgroup.com/"&gt;Caktus Group&lt;/a&gt; began the new CC
Legal Tools using the Django Python web framework. The work was continued by
Timid Robot. Saurabh helped with RDF/XML generation (&lt;a href="/blog/entries/2023-08-25-machine-layer/"&gt;CC Legal Tools:
Machine-Readable Layer — Creative Commons Open
Source&lt;/a&gt;).&lt;/p&gt;
&lt;p&gt;The new CC Legal Tools consist of two repositories:&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;&lt;a href="https://github.com/creativecommons/cc-legal-tools-app"&gt;creativecommons/cc-legal-tools-app&lt;/a&gt;: &lt;em&gt;Static site
generator using Django&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://github.com/creativecommons/cc-legal-tools-data"&gt;creativecommons/cc-legal-tools-data&lt;/a&gt;: &lt;em&gt;Inputs and
outputs of the application&lt;/em&gt;&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;The legacy ccEngine consists of around 15,960 lines of Python 2. It was
developed and extended organically over time, resulting in a less coherent
codebase. The new CC Legal Tools has the benefit of hindsight and was
architected as a single application to meet all of current requirements of CC.
It consists of around 17,400 lines of Python 3 (including around 4,000 lines of
tests). Benefits of the new CC Legal Tools include:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Currently supported software (Python 3, Django 4.2, etc.)&lt;/li&gt;
&lt;li&gt;Simplified data model&lt;/li&gt;
&lt;li&gt;Improved translation handling&lt;/li&gt;
&lt;li&gt;Improved RDF/XML generation/management&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;In particular, the fact that the new CC Legal Tools generate static assets is
noteworthy. Static assets can be hosted performantly with a very simple service
setup.&lt;/p&gt;
&lt;h3 id="chooser"&gt;Chooser&lt;/h3&gt;&lt;p&gt;The new chooser beta (&lt;a href="https://github.com/creativecommons/chooser"&gt;creativecommons/chooser&lt;/a&gt;) was promoted to
production with the new header and footer from the Vocabulary design system for
a more uniform user experience.&lt;/p&gt;
&lt;h3 id="faq-platform-toolkit"&gt;FAQ &amp;amp; Platform Toolkit&lt;/h3&gt;&lt;p&gt;The FAQ (&lt;a href="https://github.com/creativecommons/faq"&gt;creativecommons/faq&lt;/a&gt;) and
Platform Toolkit (&lt;a href="https://github.com/creativecommons/mp"&gt;creativecommons/mp&lt;/a&gt;)
were updated to use the new header and footer from the Vocabulary design system
for a more uniform user experience.&lt;/p&gt;
&lt;h2 id="improved-development"&gt;Improved development&lt;/h2&gt;&lt;p&gt;Utilizing infrastructure as code, we now have a much more robust staging
environment. This allows us to preview larger changes so that they can be
deployed to production with minimum risk. We also improved our local
development environment and content synchronization tooling
(&lt;a href="https://github.com/creativecommons/index-dev-env"&gt;creativecommons/index-dev-env&lt;/a&gt;). This means that not only did
we fix many old bugs, but when new bugs are identified, we can fix them more
rapidly!&lt;/p&gt;
&lt;h2 id="thank-you"&gt;Thank you&lt;/h2&gt;&lt;p&gt;Thank you to the people who directly contributed to the success of the new
website!&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Nate, former Director of Communications &amp;amp; Community&lt;/li&gt;
&lt;li&gt;Sara, Full Stack Engineer&lt;/li&gt;
&lt;li&gt;Shafiya, Systems Engineer&lt;/li&gt;
&lt;li&gt;Timid Robot, Director of Technology&lt;/li&gt;
&lt;li&gt;&lt;em&gt;as well as many other previous staff, community contributors, and other
&lt;a href="/community/supporters/"&gt;supporters&lt;/a&gt;!&lt;/em&gt;&lt;/li&gt;
&lt;/ul&gt;
</content></entry><entry><title>CC Legal Tools: Machine-Readable Layer</title><link href="http://opensource.creativecommons.org/blog/entries/2023-08-25-machine-layer/" rel="alternate"/><updated>2023-08-28T00:00:00Z</updated><author><name>['saurabh']</name></author><id>urn:uuid:4405215a-c845-3736-9382-8f4e7426f4fb</id><content type="html">&lt;p&gt;Greetings, readers!🌟 I'm excited to share that as part of Google Summer of
Code (GSoC) 2023, I had the incredible opportunity to contribute to the
exciting project "CC Legal Tools: Machine-Readable Layer." This journey has
been a remarkable blend of learning, coding, and collaboration, and I'm
thrilled to share the highlights of this journey with you all.&lt;/p&gt;
&lt;p&gt;&lt;img src="/blog/entries/2023-08-25-machine-layer/gsoc2023cc.png" alt="GSoC 2023 and CC"&gt;&lt;/p&gt;
&lt;h2 id="project-overview"&gt;Project Overview&lt;/h2&gt;&lt;p&gt;The project's core focus was to enhance the Creative Commons (CC) &lt;a href="https://github.com/creativecommons/cc-legal-tools-app"&gt;Legal Tools
app&lt;/a&gt; by introducing a robust machine-readable layer. The machine-readable
layer enables computers to understand the intricacies of CC licenses, making it
easier for legal professionals, developers, and enthusiasts to work with CC
licenses programmatically.&lt;/p&gt;
&lt;h2 id="getting-started"&gt;Getting Started&lt;/h2&gt;&lt;p&gt;My journey began with delving into the existing codebase and understanding the
project's requirements i.e. understanding the app's architecture, its
components, and how it currently handled CC licenses was crucial for what lay
ahead.&lt;/p&gt;
&lt;p&gt;RDF, or Resource Description Framework, emerged as a crucial player in the
project. Grasping the intricacies of RDF and its role in representing licenses
was a necessary step in the journey.&lt;/p&gt;
&lt;h2 id="challenges-and-learning-opportunities"&gt;Challenges and Learning Opportunities&lt;/h2&gt;&lt;p&gt;One of my early challenges was unraveling the complexities of the legacy
RDF/XML files. How did they differ from the new RDF/XML files we aimed to
generate? This exploration led me to discover improvements in structure,
updated license information, and additional metadata.&lt;/p&gt;
&lt;p&gt;Generating RDF files for various licenses and versions became a puzzle to
solve. Crafting RDF triples, understanding licensing nuances, and weaving this
logic into the app's views became both a learning opportunity and a rewarding
challenge.&lt;/p&gt;
&lt;h2 id="contributions-and-the-work"&gt;Contributions and The Work&lt;/h2&gt;&lt;p&gt;As the project evolved, I worked to dynamically generate RDF/XML files,
allowing the app to generate machine-readable licenses on-the-fly.&lt;/p&gt;
&lt;p&gt;To maintain an organized approach, it is ensured that the generated RDF files
are sorted, all the credit goes to &lt;a href="/blog/authors/TimidRobot/"&gt;Timid Robot&lt;/a&gt;.&lt;/p&gt;
&lt;p&gt;The newly generated RDF/XML aims to enhance the clarity, accuracy,
compatibility, and standardization of Creative Commons license representation
in RDF format. These improvements boost machine-readability and semantic
understanding, fostering seamless integration and interpretation in digital
systems.&lt;/p&gt;
&lt;h2 id="overview-of-changes"&gt;Overview of changes:&lt;/h2&gt;&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;Improved Structure and Consistency:&lt;/strong&gt;&lt;ul&gt;
&lt;li&gt;The new RDF/XML boasts a more organized, standardized structure, aligning
with RDF standards. This enhances machine comprehension and accurate data
processing.&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Updated License Information&lt;/strong&gt;:&lt;ul&gt;
&lt;li&gt;License information has been updated to reflect the latest permissions and
restrictions. This ensures users and systems are informed accurately.&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Alignment with RDF Best Practices&lt;/strong&gt;:&lt;ul&gt;
&lt;li&gt;Changes align the representation with RDF best practices. This boosts
interoperability and compatibility, thanks to standardized namespaces,
 consistent naming, and proper relationship definitions.&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;Throughout the journey, I had the privilege of working closely with my mentor,
engaging in collaborative discussions and receiving insightful code reviews..&lt;/p&gt;
&lt;p&gt;As my GSoC journey draws to a close, I'm excited about the foundation we've
laid for the CC Legal Tools app. The machine-readable layer opens doors to a
future of smarter, automated legal processes.&lt;/p&gt;
&lt;p&gt;The improvements made during GSoC will continue to ripple through the CC Legal
Tools app, benefiting users and the broader open-source community.&lt;/p&gt;
&lt;h2 id="mentor-and-support"&gt;Mentor and Support&lt;/h2&gt;&lt;p&gt;A heartfelt thanks to my mentor, &lt;a href="/blog/authors/TimidRobot/"&gt;Timid Robot&lt;/a&gt;, for guiding me
through this incredible journey. Your unwavering support, wisdom, feedback, and
willingness to share knowledge have truly been invaluable. I'm deeply grateful
for the opportunity to learn and grow under your mentorship. Thank you for
making this journey unforgettable.&lt;/p&gt;
&lt;h2 id="takeaways-and-conclusion"&gt;Takeaways and Conclusion&lt;/h2&gt;&lt;p&gt;GSoC became a platform for me to acquire new skills, dive into complex
concepts, and broaden my horizons. The learning experience was immersive and
transformative.&lt;/p&gt;
&lt;p&gt;Being part of the open-source community was a revelation. Interacting with
like-minded individuals, contributing to a shared goal, and experiencing the
true essence of collaboration was a highlight.&lt;/p&gt;
&lt;p&gt;My GSoC journey has been a remarkable adventure of exploration, discovery, and
growth. The project's mission to create a machine-readable layer for CC Legal
Tools has left an indelible mark on my journey as a developer.&lt;/p&gt;
&lt;p&gt;Thank you for joining me on this expedition. Here's to the future of
open-source contributions and the endless possibilities they hold.&lt;/p&gt;
&lt;p&gt;Cheers,&lt;/p&gt;
&lt;p&gt;Saurabh Kumar&lt;/p&gt;
</content></entry><entry><title>New Chapter of My Professional Life</title><link href="http://opensource.creativecommons.org/blog/entries/2023-06-16-new-chapter-of-my-professional-life/" rel="alternate"/><updated>2023-06-20T00:00:00Z</updated><author><name>['shafiya']</name></author><id>urn:uuid:5c9435ea-4249-39be-8631-a8beb37f9607</id><content type="html">&lt;p&gt;Greetings, readers! I’m Shafiya Heena, from Hyderabad, India, who now finds herself immersed in the vibrant city of Toronto, Canada. After spending six fruitful years as a DevOps Engineer, I recently embarked on a new professional journey with Creative Commons, a nonprofit organization. Today, I want to share my experiences and thoughts on the stark differences in culture between these two organizations and shed light on my recent encounter with an event called InTown Week (ITW).&lt;/p&gt;
&lt;p&gt;Before joining Creative Commons, I had limited exposure to open source initiatives and nonprofit organizations. However, upon stepping foot into Creative Commons, I found myself captivated by its unique culture. The emphasis on collaboration, transparency, and fostering a sense of responsibility among staff members left me awestruck. The organization's commitment to open source and its associated ethos ignited a newfound passion within me.&lt;/p&gt;
&lt;p&gt;Prior to ITW, I had heard positive whispers of this event, but had little knowledge about its significance. Little did I know that this week-long gathering would prove to be an enlightening and transformative experience. Over the course of five days, I delved deep into self-discovery, learning more about my team members, and gaining profound insights into Creative Commons as an organization.&lt;/p&gt;
&lt;p&gt;One aspect that particularly struck me during ITW was the knowledgeable, sense of equality among staff members. Everyone was encouraged to share their opinions, even if they contradicted the prevailing decisions. This environment fostered a culture of inclusivity and collective growth. Additionally, I had the opportunity to take an insightful discovery test that provided valuable insights into my personality traits and how I could enhance my contributions within the team.&lt;/p&gt;
&lt;p&gt;During all the conversations and activities, I found myself occasionally getting lost in the whirlwind of information. Thankfully, I was fortunate to have a dedicated mentor who skillfully guided me back on track, ensuring that I comprehended the nuances of the happenings around me. Through this mentorship, I discovered how to boost my energy levels and become an even better fit within the team.&lt;/p&gt;
&lt;p&gt;While the experience of ITW was enriching, it was not without its challenges. Due to visa issues, I was not able to attend in person. Engaging in extended virtual calls throughout the week was demanding, but the active participation from every individual in all activities made it all worthwhile. One particularly heartwarming moment was bidding farewell, as everyone stood in a row to say goodbye to me personally on the screen. This gesture made me feel truly present, transcending the virtual realm, and I express my heartfelt gratitude to my mentor for facilitating such connections.&lt;/p&gt;
&lt;p&gt;A notable contrast I observed during my time at Creative Commons was the vivaciousness and approachability of the CEO. In stark contrast to my previous organization, where CEO communication was primarily limited to formal emails announcing changes or decisions, I was pleasantly surprised by the CEO's warmth and genuine interest in engaging with employees in a personable manner. This refreshing leadership style evoked a sense of enthusiasm and bolstered my commitment to the organization's goals.&lt;/p&gt;
&lt;p&gt;To encapsulate my thoughts on the open source culture at Creative Commons in a single word, I would choose "likable." My mentor, in particular, played a crucial role in establishing transparency by designing a comprehensive three-month onboarding document, which laid out expectations and goals. Here, although the infrastructure may be smaller, the workflow is streamlined, and there is an absence of restrictive IT teams that hinder access to websites or prioritize hardware security over staff responsibility. Instead, Creative Commons embraces a culture where employees take ownership of their hardware, fostering an environment of trust and empowerment.&lt;/p&gt;
</content></entry><entry><title>Many Mona Lisas? Artistic Data Quantification and Assessment</title><link href="http://opensource.creativecommons.org/blog/entries/2023-04-26-umsi-how-many-mona-lisas/" rel="alternate"/><updated>2023-04-26T00:00:00Z</updated><author><name>['grace_coleman', 'anthony_ho', 'tyler_phillips', 'claire_wan']</name></author><id>urn:uuid:3239bad8-c9da-3fd2-ba08-00e63dad99de</id><content type="html">&lt;p&gt;Quantifying the Commons&lt;/p&gt;
&lt;p&gt;University of Michigan, School of Information&lt;/p&gt;
&lt;h2 id="project-objective-and-problem-statement"&gt;Project Objective and Problem Statement&lt;/h2&gt;&lt;p&gt;Creative Commons (CC) has over one billion licensed works. However, there is no
central data or organization of CC’s licensed works, making it difficult to
quantify the number of works and to analyze which licenses are useful or should
be retired. The goal of this project is to help CC staff identify redundant
licenses and use quantitative data in marketing its impact. It focuses on Open Education Resources (OER).&lt;/p&gt;
&lt;h2 id="data-collection"&gt;Data Collection&lt;/h2&gt;&lt;p&gt;Data was collected from &lt;a href="https://www.oercommons.org/"&gt;OER Commons&lt;/a&gt;, which is one of CC’s
platforms and a library containing digital education resources. The first step
in data collection was identifying which licenses this data source uses and how
many works are under each license within OER Commons. OER Commons uses the
licenses CC-BY, CC-BY-SA, CC-BY-ND, CC-BY-NC, CC-BY-NC-SA, and CC-BY-NC-ND
which contribute to both ‘fair use’ and ‘commercial use’ assets, respectively.
The next step in data collection was querying the Application Programming
Interface (API) by license. In order to retrieve all works for a license,
queries are batched by a maximum of 50 works retrieved at once.  This process
is repeated until all works for a license are retrieved. These steps are run
for every license. For every API call, the response is in XML which is parsed
for features including education level, subject area, material type, media
format, languages, primary user, and educational use. The results are outputted
to a tab-separated CSV file.&lt;/p&gt;
&lt;h2 id="exploratory-data-analysis-eda"&gt;Exploratory Data Analysis (EDA)&lt;/h2&gt;&lt;p&gt;After collecting all of our data, we began exploring the different columns in
our dataframe. In particular, we looked at the distribution of different
languages, the distribution of items by license type, and when items were added
to the OER Commons API. Through this exploration, we were able to further
specify our analysis and dig deeper into the different relationships of the
data.&lt;/p&gt;
&lt;h3 id="diagram-1"&gt;Diagram #1:&lt;/h3&gt;&lt;p&gt;&lt;img src="/blog/entries/2023-04-26-umsi-how-many-mona-lisas/diagram_01.png" alt="Diagram #1: Percentage of Items per License Type"&gt;&lt;/p&gt;
&lt;p&gt;Diagram #1 shows the distribution of items taken from OER Commons by license
type. It is clear that the CC-BY license type is the most popular, with 43% of
the items having that license type. The CC-BY-SA license is also fairly
popular, accounting for 27% of the items collected.&lt;/p&gt;
&lt;h3 id="diagram-2"&gt;Diagram #2:&lt;/h3&gt;&lt;p&gt;&lt;img src="/blog/entries/2023-04-26-umsi-how-many-mona-lisas/diagram_02.png" alt="Diagram #2: Number of Items by Month since Dec 2015"&gt;&lt;/p&gt;
&lt;p&gt;Diagram #2 shows when items have been added to the OER Commons API. There is
little activity from December 2015, up to the beginning of 2023. However, close
to 30,000 items were added to the API in early 2023.&lt;/p&gt;
&lt;h3 id="diagram-3"&gt;Diagram #3:&lt;/h3&gt;&lt;p&gt;&lt;img src="/blog/entries/2023-04-26-umsi-how-many-mona-lisas/diagram_03.png" alt="Diagram #3: Percentage of Items by Language"&gt;&lt;/p&gt;
&lt;p&gt;Diagram #3 shows the percentage of items by language. English is the most used
language, with about 86% of the items being in English. The other languages
each have a small amount of the items.&lt;/p&gt;
&lt;h3 id="diagram-4"&gt;Diagram #4:&lt;/h3&gt;&lt;p&gt;&lt;img src="/blog/entries/2023-04-26-umsi-how-many-mona-lisas/diagram_04.png" alt="Diagram #4: Percentage of Items in English per License Type"&gt;&lt;/p&gt;
&lt;p&gt;Since English is clearly the most popular language, we decided to see the
license distribution for items that are in English. Diagram #4 shows a similar
distribution to the pie chart depicting the overall license distribution; this
is to be expected since items in English account for 86% of all items, so the
distribution of licenses is similar to the overall distribution.&lt;/p&gt;
&lt;h3 id="diagram-5"&gt;Diagram #5:&lt;/h3&gt;&lt;p&gt;&lt;img src="/blog/entries/2023-04-26-umsi-how-many-mona-lisas/diagram_05.png" alt="Diagram #5: Percentage of Items in French per License Type"&gt;&lt;/p&gt;
&lt;p&gt;We continued to look at the distribution of licenses by each language.
Diagram #5 shows that for the items in French, CC-BY license is the most
popular at 49%, with CC-BY-SA being right behind it at 32%.&lt;/p&gt;
&lt;h2 id="visualizations"&gt;Visualizations&lt;/h2&gt;&lt;h3 id="diagram-6"&gt;Diagram #6:&lt;/h3&gt;&lt;p&gt;&lt;img src="/blog/entries/2023-04-26-umsi-how-many-mona-lisas/diagram_06.png" alt="Diagram #6: License Type Breakdown by Primary User"&gt;&lt;/p&gt;
&lt;p&gt;Diagram #6 shows the distribution of items on OER commons by primary user and
broken down by license type. The platform predominantly contains items designed
for teachers and students, with the rest for parents, administrators,
librarians among others. The breakdown of licenses for each primary user is
relatively consistent with the overall breakdown of the platform, as seen from
the charts below (Diagram #7 and Diagram #8).&lt;/p&gt;
&lt;h3 id="diagram-7"&gt;Diagram #7:&lt;/h3&gt;&lt;p&gt;&lt;img src="/blog/entries/2023-04-26-umsi-how-many-mona-lisas/diagram_07.png" alt="Diagram #7: Percentage of Items Used by Teachers per License Type"&gt;&lt;/p&gt;
&lt;h3 id="diagram-8"&gt;Diagram #8:&lt;/h3&gt;&lt;p&gt;&lt;img src="/blog/entries/2023-04-26-umsi-how-many-mona-lisas/diagram_08.png" alt="Diagram #8: Percentage of Items Used by Students per License Type"&gt;&lt;/p&gt;
&lt;h3 id="diagram-9"&gt;Diagram #9:&lt;/h3&gt;&lt;p&gt;&lt;img src="/blog/entries/2023-04-26-umsi-how-many-mona-lisas/diagram_09.png" alt="Diagram #9: Subject Area by License"&gt;&lt;/p&gt;
&lt;p&gt;Another aspect analyzed was inspecting the subject areas and the licenses that
they hold as shown in Diagram #9. Some preliminary data cleaning had to be
conducted as there were too many subjects on the platform, while some subjects
had very low counts. The team grouped similar subjects into nine different
categories, for example, social science, anthropology, sociology,
communication, world cultures, psychology, women’s studies, and social work
were grouped into social sciences.&lt;/p&gt;
&lt;p&gt;It can be seen from Diagram #9 that the most popular subject areas on the
platform are health sciences, language/arts and other sciences. Diving deeper
into these subject areas, health sciences and language/arts have a higher
proportion of items with the CC-BY-NC-SA license.&lt;/p&gt;
&lt;h3 id="diagram-10"&gt;Diagram #10:&lt;/h3&gt;&lt;p&gt;&lt;img src="/blog/entries/2023-04-26-umsi-how-many-mona-lisas/diagram_10.png" alt="Diagram #10: Material Type Breakdown by Education Level"&gt;&lt;/p&gt;
&lt;p&gt;Finally, the team analyzed the material types of the items and sorted it by
education level that the items were created for. Again, some data cleaning was
required as there were too many material types to analyze and some also had
very small data counts. The seven material types shown in Diagram #10 were the
most popular, and represented roughly 2/3 of the total.&lt;/p&gt;
&lt;p&gt;After sorting the education levels in chronological order, an interesting trend
that emerged is that the number of items increases with education level from
preschool, hits a peak at the community college level, and then decreases
afterwards. A shift in the material types can also be drawn from the graph, as
lesson plans represent a large proportion of items from preschool to high
school, but become insignificant from the college level onwards. On the other
hand, this is replaced by a higher proportion of readings. Another observation
worth remarking is that there is also a higher proportion of items at the
college level for textbooks.&lt;/p&gt;
&lt;h2 id="key-value"&gt;Key Value&lt;/h2&gt;&lt;p&gt;The insights created through the analysis of this project will be helpful for
CC’s marketing efforts. The ability to understand the distribution of license
types in different contexts such as education level, will help CC be better
equipped to target their marketing toward key demographics such as preschool
education materials for example. Another take away in terms of key value was
CC’s initiative to long term preservation. CC’s need to centralize their
collaborators' content into a database warehouse system has been an identified
direction since the start of this project. Our prototype database of the OER
Commons has contributed to these efforts in both small scale implementation as
well as meeting the scope of our database system modeling. As other CC cohort
chapters contribute their own databases of licenced works, there is a hopeful
expectation that a merger of acquisition will take place with other CC chapters
in the future.&lt;/p&gt;
&lt;h2 id="next-steps"&gt;Next Steps&lt;/h2&gt;&lt;p&gt;As CC expands its contributing members into the open-source initiative of
bringing licensed works to the world, other internal systems of data
preservation and maintenance start to become a point of serious interest as the
databases start to become an integrated endeavor in the future. Running our
prototype case study of the OER-Commons database has given us insights on the
direction of CC current database system and how this system will be better
suited to evolve into a data warehouse hub as a long-term solution. When we
started the process of data mining and data analysis, using Python3 has been a
staple in both our groups efforts as well as CC’s previous protocols with Git.
So, complementing this framework with other Python libraries that allow for
easier database querying will be a step in the right direction for the next
cohort of CC contributors to further this process along. An example of this
library integration would be pandasql to utilize the family pandas library
methods along with the SQL command logic that makes database maintenance easy
and manageable. Besides updating the data storage, future work can continue to
collect data from other sources with CC licensed work including the GLAM and
Internet Archive.&lt;/p&gt;
&lt;h2 id="acknowledgements"&gt;Acknowledgements&lt;/h2&gt;&lt;p&gt;We would like to express our gratitude towards Timid Robot Zehta, our client,
for working on behalf of CC, as well as &lt;a href="https://www.oercommons.org/"&gt;OER Commons&lt;/a&gt; for their
valuable contributions towards the development of digital licensing and open
source databasing initiatives. Without them, this project would not have been
possible. Their efforts have been instrumental in giving us the tools and
resources to help progress in the open-source initiative by allowing us to
promote the free exchange of ideas, knowledge, and resources within the art,
health, and education sectors of non-profit endeavors. Open source projects are
important because they allow the public to use and work on projects without
restrictions or keys. Since this initiative is open source, our efforts can be
added to and built upon, allowing the project to continue through the addition
of new contributors with fresh perspectives. Both of their commitment to
promoting accessible and inclusive content has enabled individuals and
organizations to create and distribute digital assets without facing any legal
restrictions around the world. It has been an absolute pleasure to work with
these organizations and be a part of their mission to democratize access to
information.&lt;/p&gt;
</content></entry><entry><title>Considering Community Contributions at Creative Commons</title><link href="http://opensource.creativecommons.org/blog/entries/2023-03-24-community-contributions/" rel="alternate"/><updated>2023-03-24T00:00:00Z</updated><author><name>['sara']</name></author><id>urn:uuid:3b841b4a-e07a-36e0-8a2b-eeca42fd2ba5</id><content type="html">&lt;p&gt;Different open source communities work differently and so everyone may arrive
at Creative Commons' projects with their own set of individual expectations.
Someone might expect to directly submit a Pull Request to a project without an
Issue. Or they may submit an Issue and then immediately an associated Pull
Request. At Creative Commons we have a process we hope to follow so there's a
chance for consideration, community participation, and discussion along the
way. Where we make collaborative, well documented, and informed work more
possible!&lt;/p&gt;
&lt;p&gt;Things usually begin with an idea for new functionality, new/revised
documentation, or an encountered error of sorts. That idea or error is then
captured as a GitHub Issue used to describe its details. Think of this as the
Abstract that comes before the Implementation.&lt;/p&gt;
&lt;p&gt;It's important to first look through all the existing Issues, including ones
that have been Closed to determine if someone else has already made an
overlapping Issue. If they have, it's best to add any new information you've
discovered or thought of as a comment (or series of comments) to that Issue,
rather than create a new one.&lt;/p&gt;
&lt;p&gt;Errors (often referred to as Bugs) should be verified, and reproducible if
possible. Things like screenshots, steps to reproduce, a video, and environment
details are all incredibly helpful for others when they want to review the
error. All that information is gathered and placed in a succinct, but detailed
Issue on the associated repository. It's worth noting that the documented Issue
alone is a valued contribution. It will provide guidance and documentation for
whomever works on resolving or implementing it, so it's just as important as
the eventual code that will be written. That means it should be done well,
because the better an Issue describes an error and provides a clear way to
reproduce it the easier it will be for anyone to address it.&lt;/p&gt;
&lt;p&gt;Functionality and Feature proposals are often a little more involved. Errors
are some aberration in the existing expectations or functionality of the
codebase's state, but new/changed functionality or features introduce larger
planning considerations. They have to take into account the current state of
things and the proposed future state they're introducing as an Issue. This is
an exercise in communication and description first and foremost, and that means
that having a detailed writeup, wireframes, mockups, and evidence to support
the proposal is vital to its success. Where Errors might be able to consider a
more isolated set of consequences to fixing something, introducing new
features/functionality may have unintended side effects, it may require
multiple parts of the codebase to be changed or altered. All of these larger
picture considerations should be taken into account and addressed within the
Issue. One should expect that a Feature Issue may on average take longer to
introduce, and longer to adequately document in a clear and concise way to get
the point across to the rest of the community.&lt;/p&gt;
&lt;p&gt;Documentation can always use improvements whether within code comments, a
project's README.md, or associated documentation. These would largely be
considered a "Feature Issue" technically but it's worth pointing them out
separately because they're as important, if not more so, than fixing errors or
adding codebase level functionality. Good documentation makes the project
strong and the community more informed. Improvements here should document where
there's a gap or where revisions are needed, and how they should be corrected.&lt;/p&gt;
&lt;p&gt;Whether an Error or Feature/functionality Issue, once it's been submitted, in
accordance with the &lt;a href="/contributing-code/"&gt;Contribution
Guidelines&lt;/a&gt;, it will
move to a status of "awaiting triage". This means that it is waiting to be
reviewed by one of the core codebase contributors. While it's in this state no
implementation work should be done (no PRs, no code work to add or correct the
behavior). An Issue submitted is largely the start of a process, and a
conversation. Core contributors will review the Issue and see if it adequately
describes its appropriate details, and if its objectives fit within the larger
pattern and goals of the codebase itself. It's entirely possible that a well
thought through Feature Issue that adds some new menu functionality is in
isolation a good idea, but that it doesn't fit within the goals of the project
in question and won't move forward. And that's OK, even if an Issue doesn't
move forward it can now stand as documentation for the community on what won't
be worked on at this time, which is just as important as what will. It's a
contribution whether it moves forward or not, so long as it describes itself
well enough.&lt;/p&gt;
&lt;p&gt;If this happens, the Issue will be moved to a status of "discarded", and will
be closed with a comment explaining why. The other reason an Issue might be
moved to "discarded" is that it duplicates the work in another Issue, which is
why it's important to first check all the existing Issues prior to submitting a
new one.&lt;/p&gt;
&lt;p&gt;Sometimes an Issue might describe something much broader than can be easily
contained within itself and may be converted to a status of "discussion". This
means that the Issue should spark a larger conversation within the community to
consider all the angles of abstract, and possibly split the idea up into more
manageable pieces across multiple Issues. Other outcomes might be a discussion
that realizes that while the idea is sound, it's not implementable at this time
and won't move forward.&lt;/p&gt;
&lt;p&gt;Some Issues are solid ideas, but they are not something that can move forward
until work on other Issues is completed first. As such they tend to move to a
status of "blocked". They'll sit in that state until they're unblocked and the
work can happen.&lt;/p&gt;
&lt;p&gt;If an Issue seems like it doesn't have enough information to determine what to
do with it, then it will likely move to a status of "ticket work required" and
a comment will usually be left describing what needs to be worked on.&lt;/p&gt;
&lt;p&gt;Remember, an Issue is a form of documentation, and in a way it's a
conversation, and that means that until it moves forward it's very much a work
in progress.&lt;/p&gt;
&lt;p&gt;If an Issue passes through this period as implementable, then it'll move to a
status of "ready for work". This is the point at which it can be implemented,
and a contributor can submit a Pull Request addressing it. (See the &lt;a href="/contributing-code/repo-labels/#status"&gt;Repository
Labels Status section&lt;/a&gt; for more
information)&lt;/p&gt;
&lt;p&gt;During this process it is worth noting that there will be multiple types of
contribution. For example:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;The Issue itself is a contribution&lt;/li&gt;
&lt;li&gt;Comments on the Issue from the community refining it are each contributions&lt;/li&gt;
&lt;li&gt;Someone's comment on the Issue helping another person sort out why the Error
is occurring is a contribution.&lt;/li&gt;
&lt;li&gt;Someone finding another related Issue and linking it as relevant to that
Issue is a contribution.&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;All of these contributions occurred before a Pull Request was ever initiated.
Once an Issue enters a status of "ready for work" someone who has indicated
interest on that Issue will be assigned to it and can then fork the repository,
make a branch to work within, and once settled submit a Pull Request. That
process alone may involve several contributions as well, such as:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;The code work encounters a problem, someone asks for assistance within their
draft PR, and several members offer help as comments.&lt;/li&gt;
&lt;li&gt;Someone reviews the final PR and leaves a detailed review on what might need
addressing&lt;/li&gt;
&lt;li&gt;A discussion breaks out on the best way to resolve an encountered problem
with the PR, each of these comments is a contribution&lt;/li&gt;
&lt;li&gt;And, of course, the PR itself is a contribution.&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;If the PR passes Review then it'll be marked as Approved and merged into the
codebase, that will trigger the associated Issue to close as complete and now
the Error Fix or Functionality in question will be fully implemented into the
project.&lt;/p&gt;
&lt;p&gt;To get here it took multiple contributions, from different community members,
that's the power of open source!&lt;/p&gt;
</content></entry><entry><title>Outreachy Internship Mid-point Progress Update</title><link href="http://opensource.creativecommons.org/blog/entries/2023-02-01-outreachy-mid-point/" rel="alternate"/><updated>2023-02-01T00:00:00Z</updated><author><name>['precious']</name></author><id>urn:uuid:5a72ea28-c9b9-3a83-9064-35601dbc63e8</id><content type="html">&lt;p&gt;&lt;img src="https://res.cloudinary.com/dexcmkxjl/image/upload/v1675262087/1157214599-I-may-not-be-there-yet_s3cjxm.webp" alt="quote image"&gt;&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Outreachy Internship- Refactor CC Meta Search- Mid-point Progress Update&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;As an intern at Creative Commons, my original project timeline was to refactor the old CC search website to use semantic and modern HTML and CSS. This project was intended to improve the user experience and make the website more accessible to a broader audience. The old CC Meta Searcg website is built on PHP and JavaScript. My major goal for this internship is to convert the PHP to semantic html and modern CSS while ensuring that all neccessary functionalities are intact.&lt;/p&gt;
&lt;p&gt;I have met several of my goals in the first half of my internship. So far, I have successfully refactored the website's HTML to use semantic elements, which improves the website's accessibility and makes it easier for users to understand the content. I achieved this by creating a new index.html file and rebuilding the site with semantic HTML. Additionally, I have also implemented modern CSS techniques to improve the website's visual design and make it more responsive on various devices.  All of this is currently being reviewed by my mentors for feedback on additional changes that might be needed.&lt;/p&gt;
&lt;p&gt;However, there were some project goals that took longer than expected to complete. One of the main reasons for this was that the website's codebase was not well-organized, which made it difficult for me to navigate and understand. Additionally, the site had a pre-determined CSS file that I was supposed to follow or incorporate while building the new site, but this file was so cumbersome and most of the styles did not give the desired result. I spent a lot of time trying to understand and navigate through this and eventually I had to speak to my mentor about it, and also brought up the suggestion of me writing out my own CSS stylings, which she agreed to. Thus this made the original goal, of incorporating the CC Vocabulary CSS file, to be modified.&lt;/p&gt;
&lt;p&gt;Additionally, I had to prioritize certain tasks over others and make adjustments to my plan as necessary.&lt;/p&gt;
&lt;p&gt;The new CSS I have written so far already makes the website's layout responsive. I have also created a new script.js file and started working on the neccessary functionalities of the website. I plan to implement all feedback gotten from my mentors and debug any remaining issues. Additionally, I will be working on improving the website's overall performance by implementing several optimization techniques as necessary.&lt;/p&gt;
&lt;p&gt;Overall, My aim is to ensure that the website is fully functional and user-friendly for all users.&lt;/p&gt;
</content></entry><entry><title>How I Landed My First Internship With Outreachy</title><link href="http://opensource.creativecommons.org/blog/entries/2023-01-04-how-i-landed-my-first-internship/" rel="alternate"/><updated>2023-01-04T00:00:00Z</updated><author><name>['precious']</name></author><id>urn:uuid:5e40a203-7f1e-3406-b46e-156b060ce85b</id><content type="html">&lt;p&gt;&lt;img src="https://res.cloudinary.com/dexcmkxjl/image/upload/v1671657493/blog_image_kjvep8.jpg" alt="quote image"&gt;&lt;/p&gt;
&lt;p&gt;&lt;em&gt;Take a moment to resonate with the words above. This is a principle I always follow in life. "Doing it scared"&lt;/em&gt;&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Get To Know Me&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;My name is Precious Oritsedere. I am a Nigerian. I am a software engineer who is known for her dedication to her work and her strong core values. I believe in the power of love, contribution, and empathy, hence I use these values as my guide in both my personal and professional life.&lt;/p&gt;
&lt;p&gt;As a young girl, I have always been fascinated by technology, gadgets, and even games. However, I didn't study any technology-related courses at university. I graduated with a degree in International Studies and Diplomacy but this didn't stop my curiosity for Technology. I really wanted to pursue my passion for technology but I was unsure of the means to go about it because I had no guide.&lt;/p&gt;
&lt;p&gt;Fast-forward to January 2022, I spoke to a friend about how I really wanted to know and learn more about Software Engineering and he introduced me to AltSchool Africa. This was the starting point of my Tech Career. Subsequently, I began to learn all about Frontend Engineering, and I also got introduced to open source.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Why I applied to Outreachy&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;As a software engineer, I am committed to using my skills to make a positive impact on the world. I believe in the power of collaboration and teamwork and I am always willing to lend a helping hand to my colleagues. This was why the concept of &lt;a href="https://opensource.com/resources/what-open-source"&gt;open source&lt;/a&gt; really appealed to my personality.&lt;/p&gt;
&lt;p&gt;One of the things that motivate me, is my desire to give back to my community. I am passionate about making a difference, and this is why I applied for the &lt;a href="https://www.outreachy.org/"&gt;Outreachy&lt;/a&gt; internship. Outreachy is a program that provides paid internships in open source and open science. Outreachy provides internships to people subject to systemic bias and impacted by underrepresentation in the technology industry where they are living. Interns are paid a stipend of $7,000 for a period of 3 months.&lt;/p&gt;
&lt;p&gt;The Outreachy application process consists of three stages: the initial application, the contribution period, and the final application. And I was determined to succeed in each stage and eventually secure an internship. Which I did! Here's how;&lt;/p&gt;
&lt;p&gt;The first stage of the application process was the &lt;strong&gt;initial application&lt;/strong&gt;. I carefully reviewed the requirements and made sure I met all of them. We were asked to write 3 essays centered around how we have been underrepresented in the tech industry. I took quite some time to carefully think this through before writing my essays. After which, I submitted my application on time and waited for a response.&lt;/p&gt;
&lt;p&gt;&lt;img src="https://res.cloudinary.com/dexcmkxjl/image/upload/v1671658423/initial_applic_bnriee.png" alt="initial application mail"&gt;&lt;/p&gt;
&lt;p&gt;A few weeks later, I received an email from the Outreachy organizers stating that I had been selected to move on to the next stage: the contribution period. This stage involved making a contribution to an open-source project. I was excited to have the opportunity to make a real impact and I spent hours researching the different projects. I eventually chose to contribute to the &lt;a href="https://creativecommons.org/"&gt;Creative Commons&lt;/a&gt; project "Refactor CC Meta Search".&lt;/p&gt;
&lt;p&gt;&lt;a href="https://creativecommons.org/"&gt;Creative Commons&lt;/a&gt; is an American non-profit organization and international network devoted to educational access and expanding the range of creative works available for others to build upon legally and to share. They also help overcome legal obstacles to the sharing of knowledge and creativity to address the world’s most pressing challenges.&lt;/p&gt;
&lt;p&gt;I was so determined to make a high-quality contribution to this project. I learnt a lot during this stage. I got introduced to new tools like Docker , Linux and even PHP. I spent countless hours learning the codebase and working on my contribution. In the spirit of love and collaboration, I spent a lot of hours helping my fellow Outreachy applicants who were beginners or confused about what to do. I also reached out to the project mentors for guidance when I got stuck and feedback on the contributions I was making.&lt;/p&gt;
&lt;p&gt;My hard work paid off and I successfully submitted my contribution on time. For the final stage, I made a final application to be considered for an internship position with Creative Commons.&lt;/p&gt;
&lt;p&gt;&lt;img src="https://res.cloudinary.com/dexcmkxjl/image/upload/v1671658873/accepted_chmuad.png" alt="acceptance mail"&gt;&lt;/p&gt;
&lt;p&gt;I was so thrilled when I received the congratulatory mail some weeks later that I had been selected for the internship. My success in the Outreachy application process was a result of my dedication and hard work. I put in the time and effort to ensure I met all the requirements and made a valuable contribution to the project. And I am happy to announce that my determination and perseverance paid off and I was rewarded with a valuable internship opportunity.&lt;/p&gt;
&lt;p&gt;&lt;img src="https://res.cloudinary.com/dexcmkxjl/image/upload/v1671659054/interns_tedoag.png" alt="interns page"&gt;&lt;/p&gt;
&lt;p&gt;In conclusion, Precious Oritsedere is a talented software engineer who is dedicated to her work and driven by her core values of love, contribution, and empathy. She is motivated by her desire to make a difference, and this is evident in her commitment to her work and her participation in the Outreachy internship.&lt;/p&gt;
</content></entry><entry><title>Thinking More Openly About Working in The Open</title><link href="http://opensource.creativecommons.org/blog/entries/2022-12-16-new-to-working-in-open/" rel="alternate"/><updated>2022-12-16T00:00:00Z</updated><author><name>['sara']</name></author><id>urn:uuid:65123e14-a63f-300e-890b-de6fa0ceef60</id><content type="html">&lt;p&gt;I began working at Creative Commons (CC) as the Full Stack Engineer this year
and it’s been amazing to get to work in the open at CC. But as someone who
has been working in closed, internal source environments for a very long
time it’s definitely been a learning experience and a perspective shift.&lt;/p&gt;
&lt;p&gt;For years I benefited from, observed, and offered up personal work into the
world of open source, but I was never deeply involved in other projects in
a big way, nor was I able to contribute anything I did at my professional
day job back into the open source world (despite the benefit open source
afforded the work I did every day). It had been a hope of mine, something
I had advocated for, but had ultimately not worked out. Now at CC I
finally get to participate in projects that operate in the open, and a
larger community of contributors around the world.&lt;/p&gt;
&lt;p&gt;It's been refreshing and rewarding, but it's also been enlightening. There's
so much that's different now. Working in the open doesn't just shift the
terms under which your code is licensed or how many people can contribute, it
requires a significant shift in both approach and process.&lt;/p&gt;
&lt;p&gt;For example, working in the open means that while there may be community members
eager to contribute they may lack contextual understanding that someone more
intimately familiar with a project might develop over time and rely upon. To
support contributions well you need to have a heavily documentation-first
strategy that affords new contributors key information in understandable and
clear instructions.&lt;/p&gt;
&lt;p&gt;That also means that documenting &lt;em&gt;issues&lt;/em&gt; isn't just an item on a todo list
you'll get to later. There's extreme value in writing out detailed information
both for your future self, but also for any would-be community contributors to
understand the problem and address it. Setup instructions, contextual
documentation about the codebase, as well as detailed known issues, roadmaps,
etc. All of it needs to be documented and written out, which not only
benefits the community contributors, but also benefits the project as a
whole. It means key information has to live in the open alongside the code
it informs. It's truly a win-win all around.&lt;/p&gt;
&lt;p&gt;The process also has to shift, you can't just make a list of things you want to
tackle and get to work, you have to consider how each item can be smoothly
adopted as granular and iterative Pull Requests that might all be worked on
by entirely different individuals. The level of care in how the work is
divided and scoped matters even more in this situation than it would have
with an internal team. Working in the open doesn't just mean coding in the
open, it also means planning in the open, and that means having a clearer
view on the overall roadmap and goals the project hopes to meet.&lt;/p&gt;
&lt;p&gt;If you are the steward of a codebase any task list you create or &lt;em&gt;issues&lt;/em&gt; you
identify are ultimately not just for you alone. Putting an item on your list
when you're working alone isn't enough, you've also got to find time to work
on that item, and work your way through completing it.&lt;/p&gt;
&lt;p&gt;In the open source context, working with a community of contributors, creating
an &lt;em&gt;issue&lt;/em&gt; is just as important and meaningful as writing code, in many cases
it might actually be MORE important. Because &lt;em&gt;issues&lt;/em&gt; are often the way in
which contributors first offer up help and insight, they're the first contact
they have with your project. Furthermore, any &lt;em&gt;issue&lt;/em&gt; you create may end up
getting completed by one or more people that are not you, which means it
doesn't just sit on a list till you do it. It's a small, but significant
shift in how you think about planning and breaking down work on a codebase
in the open.&lt;/p&gt;
&lt;p&gt;It’s certainly new, but incredibly rewarding. Even on days where I might not get
to submit a Pull Request myself, or squash a bug in a meaningful way, I can still
feel I offered up meaningful contributions to the community and the codebase
through better documentation, answering someone’s question, reworking a
process, or reviewing someone else’s generous contribution. Open Source means
opening up your definition of what contribution means, and it’s a lot broader
and more meaningful than I thought.&lt;/p&gt;
</content></entry><entry><title>Data Science Discovery: Quantifying the Commons</title><link href="http://opensource.creativecommons.org/blog/entries/2022-12-07-berkeley-quantifying/" rel="alternate"/><updated>2022-12-07T00:00:00Z</updated><author><name>['Dun-MingHuang', 'ShuranYang']</name></author><id>urn:uuid:96d2ba10-db41-319e-8ab9-e1385d2b0c4a</id><content type="html">&lt;p&gt;University of California, Berkeley, Data Science Discovery Program Fall 2022&lt;/p&gt;
&lt;h2 id="project-objective"&gt;Project Objective&lt;/h2&gt;&lt;h3 id="problem-statement"&gt;Problem Statement&lt;/h3&gt;&lt;p&gt;In the previous years, from 2014 to 2017, Creative Commons (CC) have been
releasing public reports detailing the growth, size, and usage of Creative
Commons, demonstrating the significance and influences of Creative Commons.
However, the effort to quantity Creative Commons has ceased at the proceeding
year. This is the preincarnation of our current open-source project:
&lt;a href="https://github.com/creativecommons/quantifying"&gt;Quantifying the Commons&lt;/a&gt;.&lt;/p&gt;
&lt;p&gt;An example visualization from the previous report in 2017:
&lt;img src="/blog/entries/2022-12-07-berkeley-quantifying/2017_state_of_the_commons_data.png" alt="2017 State of the Commons data graph"&gt;&lt;/p&gt;
&lt;p&gt;The reason is that prior efforts to generate usage reports suffered unreliable
data retrieval methods; while prone to malfunction over the updates of website
architecture from data sources, these data extraction methods are not
particularly rigorous in performance and have a significantly low (compared to
current methods, at the scale or an hour v.s. 5 business days).&lt;/p&gt;
&lt;p&gt;To advance and continue the work of quantifying CC product states, the student
researchers are delegated the design and implementation for reliable data
retrieval processes on CC data that were employed in previous reports to
replicate past efforts of this project's preincarnation, quantify the size and
diversity of CC Product Usage on the Internet.&lt;/p&gt;
&lt;h2 id="data-retrieval"&gt;Data Retrieval&lt;/h2&gt;&lt;h3 id="how-to-detect-county-of-cc-licensed-documents"&gt;How to detect county of CC-Licensed Documents?&lt;/h3&gt;&lt;p&gt;If an online document uses a CC tool to protect it, then it will either be
labeled as license under that tool or contain a hyperlink towards a
creativecommons.org webpage that explains the license's rules (the deed).&lt;/p&gt;
&lt;p&gt;Therefore, we may use the following approach to identify and count CC-licensed
documents:&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;Select a list of CC tools to inspect (provided by CC).&lt;/li&gt;
&lt;li&gt;Use APIs of different online platforms to detect and count documents that
are labeled as license by platform and/or contains a hyperlink towards CC
license webpages.&lt;/li&gt;
&lt;li&gt;Store these data in tabular form to contain the count of documents protected
under each type of CC tools.&lt;/li&gt;
&lt;/ol&gt;
&lt;h3 id="what-platforms-to-collect-counts-from"&gt;What platforms to collect counts from?&lt;/h3&gt;&lt;p&gt;Here is a list of online platforms that we sampled document count from, as well
as the delegations for platforms' data collection, visualization, and modeling
in this project:&lt;/p&gt;
&lt;table class="datatable display"&gt;
&lt;thead class="thead-dark"&gt;&lt;tr&gt;
&lt;th&gt;Platforms Containing Webpages&lt;/th&gt;
&lt;th&gt;Platforms Containing Photos&lt;/th&gt;
&lt;th&gt;Platforms containing Videos&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;Google (Dun-Ming Huang)&lt;/td&gt;
&lt;td&gt;DeviantArt (Dun-Ming Huang)&lt;/td&gt;
&lt;td&gt;Vimeo (Dun-Ming Huang)&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Internet Archive (Dun-Ming Huang)&lt;/td&gt;
&lt;td&gt;Flickr (Shuran Yang)&lt;/td&gt;
&lt;td&gt;YouTube (Dun-Ming Huang)&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;/td&gt;
&lt;td&gt;MetMuseum (Dun-Ming Huang)&lt;/td&gt;
&lt;td&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;/td&gt;
&lt;td&gt;WikiCommons (Dun-Ming Huang)&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;
&lt;h3 id="exploratory-data-analysis-eda"&gt;Exploratory Data Analysis (EDA)&lt;/h3&gt;&lt;p&gt;Here are some significant defects found in datasets across sampled platforms
during EDA:&lt;/p&gt;
&lt;h3 id="flickr"&gt;Flickr&lt;/h3&gt;&lt;ul&gt;
&lt;li&gt;Sampled Document Count from this dataset is at 35,000% ~ 100,000% of
deviation from official statistics per CC product (license) investigated.&lt;/li&gt;
&lt;li&gt;Sampling frame locked at 4,000 available searched photos from each license.&lt;/li&gt;
&lt;li&gt;Significant duplication issue (resolved).&lt;/li&gt;
&lt;/ul&gt;
&lt;h4 id="google-custom-search-api"&gt;Google Custom Search API&lt;/h4&gt;&lt;ul&gt;
&lt;li&gt;Programmable Search Engine only reaches a subset of Google's website. The
impact is not significant (then, further resolved via sampling frame
adjustments in PSE).&lt;/li&gt;
&lt;li&gt;Accidentally used deprecated operators and parameters, causing faithfulness
problems (resolved).&lt;/li&gt;
&lt;/ul&gt;
&lt;h4 id="youtube-data-api"&gt;YouTube Data API&lt;/h4&gt;&lt;ul&gt;
&lt;li&gt;API has maximum response value on total count of YouTube videos, causing
severe underestimate.&lt;ul&gt;
&lt;li&gt;Resolved via implementing custom granularity on data to enable honest
response, conserve development cost, and introduce imputations in
visualization.&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;h3 id="expanding-the-dataset"&gt;Expanding the Dataset&lt;/h3&gt;&lt;p&gt;Here are reasons and efforts of dataset expansion on platforms that received
more data:&lt;/p&gt;
&lt;h4 id="google-custom-search-api"&gt;Google Custom Search API&lt;/h4&gt;&lt;ul&gt;
&lt;li&gt;Revised Data Sampling process to solve EDA-discovered inaccuracies.&lt;/li&gt;
&lt;li&gt;For expanding the horizons of CC product usage analyses upon past boundaries,
where visualization was only conducted to compare cross-product performance,
I incorporated further CC-product usage data across temporal axis and
geographical demographics.&lt;/li&gt;
&lt;/ul&gt;
&lt;h4 id="youtube-data-api"&gt;YouTube Data API&lt;/h4&gt;&lt;ul&gt;
&lt;li&gt;Revised Data Sampling process to solve EDA-discovered inaccuracies.&lt;/li&gt;
&lt;li&gt;To perform unprecedented analyses on media-specific time-respective
developments of CC options on popular platforms, YouTube's CC-licensed
video count across two-month periods.&lt;/li&gt;
&lt;li&gt;Introduced imputation to alleviate unresolvable capped responses from YouTube
and mitigate developmental cost in response to Youtube API's capping
behaviour.&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 id="visualization"&gt;Visualization&lt;/h2&gt;&lt;h3 id="philosophies-and-principles"&gt;Philosophies and Principles&lt;/h3&gt;&lt;p&gt;The visualizations of Quantifying the Commons is to be communicative and
exhibitory.&lt;/p&gt;
&lt;p&gt;Some new aesthetics and principles we adopted (as a response to enhancement of
prior efforts) are to:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Present length in place of area for comprehensibility&lt;/li&gt;
&lt;li&gt;Analyze product development beyond license-wise comparisons&lt;/li&gt;
&lt;li&gt;Utilize colors for presenting data inclinations via works in Pandas, Seaborn,
NumPy, Geopandas, and SpaCy&lt;/li&gt;
&lt;/ul&gt;
&lt;h3 id="exhibiting-a-selection-of-visualizations"&gt;Exhibiting a Selection of Visualizations&lt;/h3&gt;&lt;h4 id="diagram-1c"&gt;Diagram 1C&lt;/h4&gt;&lt;p&gt;Trend Chart of Creative Commons Usage on Google
&lt;img src="/blog/entries/2022-12-07-berkeley-quantifying/diagram_1c.png" alt="Trend Chart of Creative Commons Usage on Google"&gt;&lt;/p&gt;
&lt;p&gt;There are now &lt;strong&gt;more than 2.7 Billion webpages protected by Creative Commons&lt;/strong&gt;
indexed by Google!&lt;/p&gt;
&lt;h4 id="diagram-2"&gt;Diagram 2&lt;/h4&gt;&lt;p&gt;Heatmap on density of CC-licensed Google indexed webpages over country
&lt;img src="/blog/entries/2022-12-07-berkeley-quantifying/diagram_2.png" alt="Heatmap on density of CC-licensed Google indexed webpages over country"&gt;&lt;/p&gt;
&lt;p&gt;Particularly, &lt;strong&gt;Western Europe and Americas enjoy a much robust use&lt;/strong&gt; of
Creative Commons document in terms of quantity. A Development in Asia and
Africa should be encouraged.&lt;/p&gt;
&lt;h4 id="diagram-3c"&gt;Diagram 3C&lt;/h4&gt;&lt;p&gt;Barplot for number of webpages protected by six primary CC licenses
&lt;img src="/blog/entries/2022-12-07-berkeley-quantifying/diagram_3c.png" alt="Barplot for number of webpages protected by six primary CC licenses"&gt;&lt;/p&gt;
&lt;p&gt;We can see that &lt;strong&gt;Attribution&lt;/strong&gt; (BY) and &lt;strong&gt;Attribution-Nonderivative (BY-ND)
are popular licenses&lt;/strong&gt; among the 3 billion documents sampled across the
dataset.&lt;/p&gt;
&lt;h4 id="diagram-6"&gt;Diagram 6&lt;/h4&gt;&lt;p&gt;Barplot of CC-licensed documents across Free Culture and Non Free Culture
licenses
&lt;img src="/blog/entries/2022-12-07-berkeley-quantifying/diagram_6.png" alt="Barplot of CC-licensed documents across Free Culture and Non Free Culture licenses"&gt;&lt;/p&gt;
&lt;p&gt;Roughly &lt;strong&gt;45.3% of the documents under CC protection are covered by Free
Culture&lt;/strong&gt; legal tools.&lt;/p&gt;
&lt;h4 id="flickr-diagrams"&gt;Flickr Diagrams&lt;/h4&gt;&lt;p&gt;Usage of CC licenses on Flickr concentrated on Australia, Brazil, United Stated
of America while is pretty low in Asia countries.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Note:&lt;/strong&gt; Sampling Frame of these visualizations are locked at the first 4,000
search results on photos under each general license types.&lt;/p&gt;
&lt;h5 id="diagram-7a"&gt;Diagram 7A&lt;/h5&gt;&lt;p&gt;Analysis of Creative Commons Usage on Flickr&lt;/p&gt;
&lt;p&gt;&lt;img src="/blog/entries/2022-12-07-berkeley-quantifying/diagram_7a.png" alt="CC BY-SA 2.0 license usage in Flickr pictures taken during 1962-2022"&gt;&lt;/p&gt;
&lt;h5 id="diagram-7b"&gt;Diagram 7B&lt;/h5&gt;&lt;p&gt;&lt;img src="/blog/entries/2022-12-07-berkeley-quantifying/diagram_7b.png" alt="Flickr maximum views of pictures under all licenses"&gt;&lt;/p&gt;
&lt;p&gt;Photos on Flickr under Attribution-NonCommercial-NoDerivs (BY-NC-ND) license has
gained highest possible views, while usage of license Public Domain Mark has
highest increasing trend in recent years.&lt;/p&gt;
&lt;h5 id="diagram-7c"&gt;Diagram 7C&lt;/h5&gt;&lt;p&gt;&lt;img src="/blog/entries/2022-12-07-berkeley-quantifying/diagram_7c.png" alt="Flickr yearly trend of all licenses 2018-2022"&gt;&lt;/p&gt;
&lt;h5 id="diagram-7d"&gt;Diagram 7D&lt;/h5&gt;&lt;p&gt;&lt;img src="/blog/entries/2022-12-07-berkeley-quantifying/diagram_7d.png" alt="Flickr Photos under CC-BY-NC-SA 2.0 and CC BY-NC 2.0: Categories Keywords"&gt;&lt;/p&gt;
&lt;h4 id="diagram-8"&gt;Diagram 8&lt;/h4&gt;&lt;p&gt;Number of works under Creative Commons Tools across Platforms
&lt;img src="/blog/entries/2022-12-07-berkeley-quantifying/diagram_8.png" alt="Number of works under Creative Commons Tools across Platforms"&gt;&lt;/p&gt;
&lt;p&gt;DeviantArt presents the most number of works under Creative Commons licenses
and tools, followed by Wikipedia and WikiCommons. The estimate of video counts
on YouTube is understimated, as demonstrated in Diagram 11B.&lt;/p&gt;
&lt;h4 id="diagram-9b"&gt;Diagram 9B&lt;/h4&gt;&lt;p&gt;Barplot of Creative Commons Protected Documents across Countries
&lt;img src="/blog/entries/2022-12-07-berkeley-quantifying/diagram_9b.png" alt="Barplot of Creative Commons Protected Documents across Countries"&gt;&lt;/p&gt;
&lt;h4 id="diagram-10"&gt;Diagram 10&lt;/h4&gt;&lt;p&gt;Barplot of Creative Commons Protected Documents across languages
&lt;img src="/blog/entries/2022-12-07-berkeley-quantifying/diagram_10.png" alt="Barplot of Creative Commons Protected Documents across languages"&gt;&lt;/p&gt;
&lt;h4 id="diagram-11b"&gt;Diagram 11B&lt;/h4&gt;&lt;p&gt;Trend Chart of Cumulative Count of CC-Licensed YouTube Videos across Each Two-Months
&lt;img src="/blog/entries/2022-12-07-berkeley-quantifying/diagram_11b.png" alt="Trend Chart of Cumulative Count of CC-Licensed YouTube Videos across Each Two-Months"&gt;&lt;/p&gt;
&lt;p&gt;The &lt;strong&gt;orange line stand for the imputed value of new CC-Licensed YouTube video
counts based on linear regression,&lt;/strong&gt; which is the decided method of imputation
because most medias' growth of CC-licensed document count also experience a
linear growth.&lt;/p&gt;
&lt;h2 id="modeling"&gt;Modeling&lt;/h2&gt;&lt;p&gt;(A side track)&lt;/p&gt;
&lt;h3 id="objectives-of-modeling"&gt;Objectives of Modeling&lt;/h3&gt;&lt;p&gt;The models of this project aim to answer: "What is the license typing of a
webpage/web document given its content?"&lt;/p&gt;
&lt;p&gt;Individual researchers have attempted each of their solutions via different
resources, metrics, under different modeling contexts:&lt;/p&gt;
&lt;h4 id="model-of-google-webpages-dun-ming-huang"&gt;Model of Google Webpages (Dun-Ming Huang)&lt;/h4&gt;&lt;ul&gt;
&lt;li&gt;Modeling Context: Multiclass Classifier (7 classes).&lt;/li&gt;
&lt;li&gt;Modeling Training set: Text webpage contents acquired from Google API
collected webpages (Common Crawl, the original choice, was marked
unavailable due to source code corruption).&lt;/li&gt;
&lt;li&gt;Main Model Metric: Top-k accuracy, as this model is considered as the backend
of a license recommendation system that receives webpage content and
recommend 2 to 3 licenses to the user.&lt;/li&gt;
&lt;/ul&gt;
&lt;h4 id="model-for-flickr-photos-shuran-yang"&gt;Model for Flickr Photos (Shuran Yang)&lt;/h4&gt;&lt;ul&gt;
&lt;li&gt;Modeling Context: Binary Classifier (BY vs. BY-SA)&lt;/li&gt;
&lt;li&gt;Modeling Training set: Text photo descriptions acquired from Flickr API (with
sampling frame of visualizations)&lt;/li&gt;
&lt;li&gt;Main Model Metric: Accuracy&lt;/li&gt;
&lt;/ul&gt;
&lt;h3 id="training-process-summary-google-model"&gt;Training Process Summary: Google Model&lt;/h3&gt;&lt;h4 id="preprocessing-pipeline"&gt;Preprocessing Pipeline&lt;/h4&gt;&lt;ol&gt;
&lt;li&gt;Deduplication&lt;/li&gt;
&lt;li&gt;Remove Non-English Characters&lt;/li&gt;
&lt;li&gt;URL, &lt;code&gt;[^\w\s]&lt;/code&gt;, Stopword Removal&lt;/li&gt;
&lt;li&gt;Remove Non-English Words&lt;/li&gt;
&lt;li&gt;Remove Short Words, Short Contents&lt;/li&gt;
&lt;li&gt;TF-IDF + SVD&lt;/li&gt;
&lt;li&gt;SMOTE&lt;/li&gt;
&lt;/ol&gt;
&lt;h4 id="model-selection"&gt;Model Selection&lt;/h4&gt;&lt;div class="hll"&gt;&lt;pre&gt;&lt;span&gt;&lt;/span&gt;&lt;span class="n"&gt;Logistic&lt;/span&gt; &lt;span class="n"&gt;Regression&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;
    &lt;span class="n"&gt;penalty&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="s2"&gt;&amp;quot;l2&amp;quot;&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
    &lt;span class="n"&gt;solver&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="s2"&gt;&amp;quot;liblinear&amp;quot;&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
    &lt;span class="n"&gt;class_weight&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="s2"&gt;&amp;quot;balanced&amp;quot;&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
    &lt;span class="n"&gt;C&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="mf"&gt;0.1&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
&lt;span class="p"&gt;)&lt;/span&gt;
&lt;/pre&gt;&lt;/div&gt;
&lt;div class="hll"&gt;&lt;pre&gt;&lt;span&gt;&lt;/span&gt;&lt;span class="n"&gt;SVC&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;
    &lt;span class="n"&gt;C&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="mf"&gt;0.5&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
    &lt;span class="n"&gt;probability&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="kc"&gt;True&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
    &lt;span class="n"&gt;kernel&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="s2"&gt;&amp;quot;poly&amp;quot;&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
    &lt;span class="n"&gt;degreee&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="mi"&gt;1&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
    &lt;span class="n"&gt;class_weight&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="s2"&gt;&amp;quot;balanced&amp;quot;&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
&lt;span class="p"&gt;)&lt;/span&gt;
&lt;/pre&gt;&lt;/div&gt;
&lt;div class="hll"&gt;&lt;pre&gt;&lt;span&gt;&lt;/span&gt;&lt;span class="n"&gt;RandomClassifier&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;
    &lt;span class="n"&gt;class_weight&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="s2"&gt;&amp;quot;balanced_subsample&amp;quot;&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
    &lt;span class="n"&gt;n_estimators&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="mi"&gt;100&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
    &lt;span class="n"&gt;random_state&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="mi"&gt;1&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
&lt;span class="p"&gt;)&lt;/span&gt;
&lt;/pre&gt;&lt;/div&gt;
&lt;div class="hll"&gt;&lt;pre&gt;&lt;span&gt;&lt;/span&gt;&lt;span class="n"&gt;GradientBoostingClassifier&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;
    &lt;span class="n"&gt;n_estimators&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="mi"&gt;5&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
    &lt;span class="n"&gt;random_state&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="mi"&gt;1&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
&lt;span class="p"&gt;)&lt;/span&gt;
&lt;/pre&gt;&lt;/div&gt;
&lt;div class="hll"&gt;&lt;pre&gt;&lt;span&gt;&lt;/span&gt;&lt;span class="n"&gt;NultinomialNB&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;
    &lt;span class="n"&gt;fit_prior&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="kc"&gt;True&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
    &lt;span class="n"&gt;alpha&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="mi"&gt;10&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
&lt;span class="p"&gt;)&lt;/span&gt;
&lt;/pre&gt;&lt;/div&gt;
&lt;ol&gt;
&lt;li&gt;text : InputLayer&lt;/li&gt;
&lt;li&gt;preprocessing : KerasLayer&lt;/li&gt;
&lt;li&gt;BERT_encoder : KerasLayer&lt;/li&gt;
&lt;li&gt;dropout : Dropout&lt;/li&gt;
&lt;li&gt;classifier : Dense&lt;/li&gt;
&lt;/ol&gt;
&lt;h4 id="training-results"&gt;Training Results&lt;/h4&gt;&lt;p&gt;&lt;img src="/blog/entries/2022-12-07-berkeley-quantifying/training_performance.png" alt="Testing Performances across Models by Top-k Accuracy"&gt;&lt;/p&gt;
&lt;h3 id="training-process-summary-flickr-model"&gt;Training Process Summary: Flickr Model&lt;/h3&gt;&lt;h4 id="preprocessing-pipeline"&gt;Preprocessing Pipeline&lt;/h4&gt;&lt;ol&gt;
&lt;li&gt;Deduplication&lt;/li&gt;
&lt;li&gt;Translation&lt;/li&gt;
&lt;li&gt;Stopword Removal, Lemmatization&lt;/li&gt;
&lt;li&gt;TF-IDF&lt;/li&gt;
&lt;/ol&gt;
&lt;h4 id="model-selection"&gt;Model Selection&lt;/h4&gt;&lt;div class="hll"&gt;&lt;pre&gt;&lt;span&gt;&lt;/span&gt;&lt;span class="n"&gt;SVC&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;
    &lt;span class="n"&gt;C&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="mf"&gt;1.0&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
    &lt;span class="n"&gt;kernel&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="s2"&gt;&amp;quot;linear&amp;quot;&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
    &lt;span class="n"&gt;gamma&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="s2"&gt;&amp;quot;auto&amp;quot;&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
&lt;span class="p"&gt;)&lt;/span&gt;
&lt;/pre&gt;&lt;/div&gt;
&lt;h4 id="training-results"&gt;Training Results&lt;/h4&gt;&lt;p&gt;An accuracy of 66.87% was reached.&lt;/p&gt;
&lt;h2 id="next-steps"&gt;Next Steps&lt;/h2&gt;&lt;h3 id="from-preincarnation-to-present"&gt;From Preincarnation to Present&lt;/h3&gt;&lt;p&gt;Via the efforts addressed above, we have not only managed to transform a data
retrieval process from unstable, unexplored, and unavailable into an
algorithmic, deterministic process reliable, documented, and interpretable! And
the visualizations have become more exhibitory, concentrating on more
effortfully extracted insights, and look at Creative Commons in further depth
and more remarkable breadth.&lt;/p&gt;
&lt;p&gt;With significant re-implementations and designing policies to the data
retrieval process for Quantifying the Commons, visualizations can be readily,
immediately produced upon command; and upon the conceptual transformations of
visualization production, Creative Commons will obtain new insights into the
development of product and eventual policies upon the axes along which data was
extracted from. Furthermore, we expect the production of model to work beyond
the bounds of a Machine Learning product, but as a possibility to draw
inferences upon product usage upon.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Such efforts are a short jump start to the long-term reincarnation of
Quantifying the Commons.&lt;/strong&gt;&lt;/p&gt;
&lt;h3 id="from-reincarnation-onto-baton-touches"&gt;From Reincarnation onto Baton Touches&lt;/h3&gt;&lt;p&gt;The current team would encourage the future team to increase the availability
and user experience for our open source data extraction method, via automation
and by-batch data extraction methods, for which Dun-Ming has written a design
policy for. For modeling, the team also encourage building ingerence pipelines
for using ELI5 for Logistic Regression models, as well as experiment more with
loss function options of Gradient Boosting Classifier. For Flickr, the writer
of this poster would like to suggest some data extraction method outside Flickr
API but has access towards Flickr media, say Google Custom Search API.&lt;/p&gt;
&lt;h2 id="additional-reading"&gt;Additional Reading&lt;/h2&gt;&lt;ul&gt;
&lt;li&gt;Dun-Ming Huang blogs:&lt;ul&gt;
&lt;li&gt;&lt;a href="https://medium.com/@bransthre/dsd-fall-2022-quantifying-the-commons-0-10-d1844092fc7a"&gt;DSD Fall 2022: Quantifying the Commons (0/10) | by Bransthre | Nov, 2022 | Medium&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://medium.com/@bransthre/dsd-fall-2022-quantifying-the-commons-1-10-970dc24626b"&gt;DSD Fall 2022: Quantifying the Commons (1/10) | by Bransthre | Nov, 2022 | Medium&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://medium.com/@bransthre/dsd-fall-2022-quantifying-the-commons-2-10-537a5b204d7b"&gt;DSD Fall 2022: Quantifying the Commons (2/10) | by Bransthre | Nov, 2022 | Medium&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://medium.com/@bransthre/dsd-fall-2022-quantifying-the-commons-3-10-79bbfeb90daa"&gt;DSD Fall 2022: Quantifying the Commons (3/10) | by Bransthre | Nov, 2022 | Medium&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://medium.com/@bransthre/dsd-fall-2022-quantifying-the-commons-4-10-9bc90ec98262"&gt;DSD Fall 2022: Quantifying the Commons (4/10) | by Bransthre | Nov, 2022 | Medium&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://medium.com/@bransthre/dsd-fall-2022-quantifying-the-commons-5-10-475334a8895"&gt;DSD Fall 2022: Quantifying the Commons (5/10) | by Bransthre | Nov, 2022 | Medium&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://medium.com/@bransthre/dsd-fall-2022-quantifying-the-commons-6-10-961de95ef3aa"&gt;DSD Fall 2022: Quantifying the Commons (6/10) | by Bransthre | Nov, 2022 | Medium&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://medium.com/@bransthre/dsd-fall-2022-quantifying-the-commons-7a-10-ea011b9e05ee"&gt;DSD Fall 2022: Quantifying the Commons (7A/10) | by Bransthre | Nov, 2022 | Medium&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://medium.com/@bransthre/dsd-fall-2022-quantifying-the-commons-7b-10-e8bd8ba1c18a"&gt;DSD Fall 2022: Quantifying the Commons (7B/10) | by Bransthre | Nov, 2022 | Medium&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://medium.com/@bransthre/dsd-fall-2022-quantifying-the-commons-8a-10-6f5336c00d11"&gt;DSD Fall 2022: Quantifying the Commons (8A/10) | by Bransthre | Nov, 2022 | Medium&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://medium.com/@bransthre/dsd-fall-2022-quantifying-the-commons-8b-10-aa1ec8e2ae63"&gt;DSD Fall 2022: Quantifying the Commons (8B/10) | by Bransthre | Nov, 2022 | Medium&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://medium.com/@bransthre/dsd-fall-2022-quantifying-the-commons-9-10-536617bdcbb0"&gt;DSD Fall 2022: Quantifying the Commons (9/10) | by Bransthre | Nov, 2022 | Medium&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://medium.com/@bransthre/dsd-fall-2022-quantifying-the-commons-10-10-47cbcb9bc8c2"&gt;DSD Fall 2022: Quantifying the Commons (10/10) | by Bransthre | Nov, 2022 | Medium&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;Shuran Yang blog:&lt;ul&gt;
&lt;li&gt;&lt;a href="https://medium.com/@shuran1030/quantifying-the-commons-data-science-discovery-program-fall-2022-8e8c15b1ace3"&gt;Quantifying the Commons — Data Science Discovery Program Fall 2022 | by Shuran Yang | Nov, 2022 | Medium&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;/ul&gt;
</content></entry><entry><title>CalVer to SemVer</title><link href="http://opensource.creativecommons.org/blog/entries/2022-11-11-calver-to-semver/" rel="alternate"/><updated>2022-11-11T00:00:00Z</updated><author><name>['TimidRobot']</name></author><id>urn:uuid:77f93cff-41ad-3d49-978e-b02fce3099fa</id><content type="html">&lt;p&gt;Creative Commons (CC) tried to use CalVer (calendar versioning), but
encountered too many issues and decided on SemVer (semantic versioning)
instead.&lt;/p&gt;
&lt;h2 id="why-we-chose-calver"&gt;Why we chose CalVer&lt;/h2&gt;&lt;p&gt;Years ago, the CC technology team standardized on using &lt;a href="https://calver.org/"&gt;CalVer&lt;/a&gt; as our
versioning scheme. Specifically, we selected &lt;code&gt;YYYY.0M.MICRO&lt;/code&gt;. &lt;a href="https://calver.org/"&gt;CalVer&lt;/a&gt;:&lt;/p&gt;
&lt;blockquote&gt;&lt;ol&gt;
&lt;li&gt;&lt;strong&gt;&lt;code&gt;YYYY&lt;/code&gt;&lt;/strong&gt; - Full year - 2006, 2016, 2106&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;&lt;code&gt;0M&lt;/code&gt;&lt;/strong&gt; - Zero-padded month - 01, 02 ... 11, 12&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;&lt;code&gt;Micro&lt;/code&gt;&lt;/strong&gt; - The third and usually final number in the version. Sometimes
referred to as the "patch" segment.&lt;/p&gt;
&lt;/li&gt;
&lt;/ol&gt;
&lt;/blockquote&gt;
&lt;p&gt;The use of CalVer was inspired by Ubuntu, pip, SaltStack, and others. It was
thought that CalVer not only matched &lt;a href="https://semver.org/"&gt;SemVer&lt;/a&gt; in communicating
potential risks to users, but also gave additional temporal context. Also, many
argue that the promises of SemVer’s &lt;code&gt;MAJOR.MINOR.PATCH&lt;/code&gt; go unfulfilled often
enough that they lose meaning and that the differences between MINOR/PATCH are
too poorly defined (more on these later).&lt;/p&gt;
&lt;h2 id="issues-encountered-with-calver"&gt;Issues Encountered with CalVer&lt;/h2&gt;&lt;h3 id="time/duration-is-not-primarily-relevant"&gt;Time/Duration Is Not Primarily Relevant&lt;/h3&gt;&lt;p&gt;CalVer is often favored by projects for which time/duration is of primary
relevance (ex. Ubuntu releases which have a limited support window). However,
none of CC’s projects have time/duration as a primary relevance.&lt;/p&gt;
&lt;h3 id="major-expectations-and-slow-iteration"&gt;&lt;code&gt;MAJOR&lt;/code&gt; Expectations and Slow Iteration&lt;/h3&gt;&lt;p&gt;SemVer is a formalization of longstanding convention. Many many users,
especially developers, expect the first number of a versioning scheme to
indicate change severity. With &lt;code&gt;YYYY&lt;/code&gt; indicating current release year, the
&lt;code&gt;YYYY.0M.MICRO&lt;/code&gt; versioning scheme might set an expectation of significant
changes or improvements (ex. &lt;code&gt;2021.09.1&lt;/code&gt; to &lt;code&gt;2022.02.1&lt;/code&gt;) even when the content
of the changes are trivial. With &lt;code&gt;YYYY&lt;/code&gt; indicating original release year, a
slow moving but stable and functional release might appear abandoned or
insecure (ex.  &lt;code&gt;2019.03.2&lt;/code&gt; in 2022).&lt;/p&gt;
&lt;h3 id="poor-support-for-calver"&gt;Poor Support for CalVer&lt;/h3&gt;&lt;p&gt;We also encountered poor support for CalVer in software and systems. For
example, NPM currently strips leading zeros which breaks CDN integration
(&lt;a href="https://github.com/cc-archive/vocabulary-legacy/issues/588."&gt;CalVer and CDN compatibility · Issue #588 ·
creativecommons/vocabulary&lt;/a&gt;).&lt;/p&gt;
&lt;h2 id="using-semver"&gt;Using SemVer&lt;/h2&gt;&lt;p&gt;Our experiment with CalVer is a win for the scientific method. We can be more
confident, today, that SemVer will treat both the developers and users of CC
software better than CalVer.&lt;/p&gt;
&lt;h3 id="semvers-promises-commitments"&gt;SemVer’s &lt;del&gt;Promises&lt;/del&gt; Commitments&lt;/h3&gt;&lt;p&gt;The CC Technology team sees SemVer as a set of commitments we are making to the
users and developers of CC open source software. We may not achieve perfection
in fulfilling those commitments, but they outline expectations and we hope
you’ll open an issue if we make a mistake.&lt;/p&gt;
&lt;h3 id="cc-semver-specifics"&gt;CC SemVer Specifics&lt;/h3&gt;&lt;p&gt;We will be using &lt;a href="https://semver.org/"&gt;SemVer&lt;/a&gt; (semantic versioning) going forward. To add
additional clarity, we will avoid mixing functionality changes and bug fixes in
releases:&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;&lt;code&gt;MAJOR&lt;/code&gt; version when you make incompatible API changes&lt;/li&gt;
&lt;li&gt;&lt;code&gt;MINOR&lt;/code&gt; version when you add functionality in a backwards compatible manner&lt;ul&gt;
&lt;li&gt;Releases that increment the &lt;code&gt;MINOR&lt;/code&gt; version &lt;strong&gt;must not&lt;/strong&gt; include bug
fixes&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;&lt;code&gt;PATCH&lt;/code&gt; version when you make backwards compatible bug fixes&lt;ul&gt;
&lt;li&gt;Releases that increment the &lt;code&gt;PATCH&lt;/code&gt; version &lt;strong&gt;must not&lt;/strong&gt; include
functionality additions&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;When a bug fix &lt;em&gt;technically&lt;/em&gt; changes functionality, we will release a bug fix
(incrementing only the &lt;code&gt;PATCH&lt;/code&gt; version) as the change preserves the &lt;em&gt;intended
functionality&lt;/em&gt;.&lt;/p&gt;
</content></entry><entry><title>Building the CC Global Components Library</title><link href="http://opensource.creativecommons.org/blog/entries/building-the-cc-global-components-library/" rel="alternate"/><updated>2022-03-17T00:00:00Z</updated><author><name>['MuluhGodson']</name></author><id>urn:uuid:66c3e40a-0e23-35b4-ad3b-aa3943c91242</id><content type="html">&lt;h3 id="introduction"&gt;Introduction&lt;/h3&gt;&lt;p&gt;During the course of my Outreachy internship with the Creative Commons, I got to work on some cool projects, one of which is the CC Global Components
library supervised by my mentor &lt;a href="/blog/authors/brylie/"&gt;Brylie Christopher Oxley&lt;/a&gt;.&lt;/p&gt;
&lt;p&gt;Having a unified design theme/look or experience accross the different CC websites has always been an important factor while developing these
websites.
With this in mind, there are several components which are part of most CC web properties. The three components in particular are:-&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt; The Global navigation menu &lt;/strong&gt; : displayed on sub-paths of the main creativecommons.org website, such as /licenses&lt;/li&gt;
&lt;li&gt;&lt;strong&gt; The Global footer &lt;/strong&gt; : displayed on most Creative Commons properties&lt;/li&gt;
&lt;li&gt;&lt;strong&gt; The Explore CC component &lt;/strong&gt; : displayed on all CC web properties, such as Global Summit etc.&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;Instead of having each project implement these components leading to code duplication accross projects and maintenance issues, we decided it was
preferable
to have a seperate library of these components which finally led to the CC Global Components project.&lt;/p&gt;
&lt;h3 id="choosing-a-technology"&gt;Choosing a technology&lt;/h3&gt;&lt;p&gt;The goal of the Global components library was to build a custom web component that can be served via CDN. While planning, we needed to decide on
the technology to use. Agreeably, most web frameworks like React and Vue can be used to develop this but we wanted
a simple implementation with fewer dependencies. Some ideal characteristics of what we were looking for was a technology that meets the following
criteria:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Web Standards oriented&lt;/li&gt;
&lt;li&gt;Clean separation of HTML, CSS, and JavaScript (structure, aesthetics, and functionality)&lt;/li&gt;
&lt;li&gt;Lightweight / small bundle size&lt;/li&gt;
&lt;li&gt;Loosely coupled (no tight or unrelated dependencies)&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;The two primary technologies we were considering were &lt;a href="https://v3.vuejs.org"&gt;Vue JS&lt;/a&gt; and &lt;a href="https://lwc.dev"&gt;Lightning Web Components&lt;/a&gt; but finally
decided to use Vue JS
since we already had other projects developed in Vue (such as the Chooser project).&lt;/p&gt;
&lt;h3 id="building-the-components"&gt;Building the components&lt;/h3&gt;&lt;p&gt;To scaffold the project, we used &lt;a href="https://www.npmjs.com/package/vue-sfc-rollup"&gt;Vue SFC rollup&lt;/a&gt;, which is a CLI templating utility that scaffolds
a minimal setup for compiling a library of multiple Vue SFCs (Single File Components) - into a form ready to share via npm. With this,
we could just focus on building the templates. We used &lt;a href="https://cc-vocabulary.netlify.app/"&gt;Vocabulary CSS&lt;/a&gt;, our own CC design package to style
the components.&lt;/p&gt;
&lt;h4 id="1-cc-global-footer"&gt;1) CC Global Footer&lt;/h4&gt;&lt;p&gt;The CC Global Footer component was the easiest given that it's mostly static HTML. This component takes two attributes:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;code&gt;logo-url&lt;/code&gt;: which should point to the logo of the website it is used on.&lt;/li&gt;
&lt;li&gt;&lt;code&gt;donation-url&lt;/code&gt;: which is used for the donation button.&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;After importing the CDN script for the CC Global components, we can then use the CC Global footer in any page as such:&lt;/p&gt;
&lt;div class="hll"&gt;&lt;pre&gt;&lt;span&gt;&lt;/span&gt;&lt;span class="p"&gt;&amp;lt;&lt;/span&gt;&lt;span class="nt"&gt;cc-global-footer&lt;/span&gt;
  &lt;span class="na"&gt;donation-url&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="s"&gt;&amp;quot;http://example.com&amp;quot;&lt;/span&gt;
  &lt;span class="na"&gt;logo-url&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="s"&gt;&amp;quot;/example/logo-white.png&amp;quot;&lt;/span&gt;
&lt;span class="p"&gt;/&amp;gt;&lt;/span&gt;
&lt;/pre&gt;&lt;/div&gt;
&lt;p&gt;and this renders as shown below:&lt;/p&gt;
&lt;p&gt;&lt;img src="/blog/entries/building-the-cc-global-components-library/cc_global_footer.png" alt="CC Global Footer"&gt;&lt;/p&gt;
&lt;h4 id="2-cc-explore"&gt;2) CC Explore&lt;/h4&gt;&lt;p&gt;The CC Explore component is an expandable banner which coontains links to all the CC Web properties. This component use a click listener which just
toggles the expandable banner to show or hide when it is clicked. As with the CC Global Footer component, the CC Explore component takes two attributes.&lt;/p&gt;
&lt;div class="hll"&gt;&lt;pre&gt;&lt;span&gt;&lt;/span&gt;&lt;span class="p"&gt;&amp;lt;&lt;/span&gt;&lt;span class="nt"&gt;cc-explore&lt;/span&gt;
  &lt;span class="na"&gt;donation-url&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="s"&gt;&amp;quot;http://example.com&amp;quot;&lt;/span&gt;
  &lt;span class="na"&gt;logo-url&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="s"&gt;&amp;quot;/example/logo-white.png&amp;quot;&lt;/span&gt;
&lt;span class="p"&gt;/&amp;gt;&lt;/span&gt;
&lt;/pre&gt;&lt;/div&gt;
&lt;p&gt;and this renders as shown below:&lt;/p&gt;
&lt;p&gt;&lt;img src="/blog/entries/building-the-cc-global-components-library/cc_explore.gif" alt="CC Explore"&gt;&lt;/p&gt;
&lt;h4 id="3-cc-global-header"&gt;3) CC Global Header&lt;/h4&gt;&lt;p&gt;The CC Global Header was an important component given that we had to make API calls to be able to render the Menu items for downstream projects
such as the &lt;a href="https://github.com/creativecommons/cc-legal-tools-app"&gt;Licenses and Tools&lt;/a&gt;. We used the Axios library for the API calls to the Wordpress
backend of the parent project &lt;a href="https://github.com/creativecommons/project_creativecommons.org"&gt;Projec_creativecommons.org&lt;/a&gt;.&lt;/p&gt;
&lt;p&gt;The CC Global Header has three required attributes, &lt;code&gt;base-url&lt;/code&gt;, &lt;code&gt;donation-url&lt;/code&gt; and &lt;code&gt;logo-url&lt;/code&gt;, which are the URLs used for the API call,
Donation button and Logo respectively. There is one additional attribute &lt;code&gt;use-menu-placeholders&lt;/code&gt; you can set which renders placeholder Menu Items
if you are in a development environment. However, for a stagin/production setup we do not use this attribute.&lt;/p&gt;
&lt;div class="hll"&gt;&lt;pre&gt;&lt;span&gt;&lt;/span&gt;&lt;span class="p"&gt;&amp;lt;&lt;/span&gt;&lt;span class="nt"&gt;cc-global-header&lt;/span&gt;
  &lt;span class="na"&gt;base-url&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="s"&gt;&amp;quot;http://127.0.0.1:8000&amp;quot;&lt;/span&gt;
  &lt;span class="na"&gt;donation-url&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="s"&gt;&amp;quot;http:/example.com&amp;quot;&lt;/span&gt;
  &lt;span class="na"&gt;use-menu-placeholders&lt;/span&gt;
  &lt;span class="na"&gt;logo-url&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="s"&gt;&amp;quot;/example/logo-black.png&amp;quot;&lt;/span&gt;
&lt;span class="p"&gt;/&amp;gt;&lt;/span&gt;
&lt;/pre&gt;&lt;/div&gt;
&lt;p&gt;and this renders as shown:&lt;/p&gt;
&lt;p&gt;&lt;img src="/blog/entries/building-the-cc-global-components-library/cc_global_header.png" alt="CC Global Header"&gt;&lt;/p&gt;
&lt;h3 id="conclusion"&gt;Conclusion&lt;/h3&gt;&lt;p&gt;The first version of this library (0.1.1) was released and published to NPM on Dec 10, 2021. Till date [the time of this writing] we have had several
changes and optimizations to the code and are currently on version &lt;code&gt;0.5.0&lt;/code&gt;. This was a really enriching experience for me as it was my first time
working with Vue JS. We've also had additional code review and optimizations from &lt;a href="/blog/authors/TimidRobot/"&gt;Timid Robot&lt;/a&gt;.&lt;/p&gt;
&lt;p&gt;The CC Global Components with all 3 components used renders as:&lt;/p&gt;
&lt;p&gt;&lt;img src="/blog/entries/building-the-cc-global-components-library/cc_global_components.gif" alt="CC global components"&gt;&lt;/p&gt;
&lt;p&gt;You can find the CC Global Components project at:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;GitHub: &lt;a href="https://github.com/cc-archive/cc-global-components"&gt;CC Global Components&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;NPM: &lt;a href="https://www.npmjs.com/package/@creativecommons/cc-global-components"&gt;cc-global-components&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
</content></entry><entry><title>CC Messaging Update 2022Q1 (Dropping IRC)</title><link href="http://opensource.creativecommons.org/blog/entries/2022-01-06-cc-messaging/" rel="alternate"/><updated>2022-01-06T00:00:00Z</updated><author><name>['TimidRobot']</name></author><id>urn:uuid:3dff9668-8e79-342b-aa35-028ff2541416</id><content type="html">&lt;h2 id="past-moved-to-slack"&gt;Past: Moved to Slack&lt;/h2&gt;&lt;p&gt;In 2016, Creative Commons (CC) moved to Slack as our primary messaging platform
(&lt;a href="https://creativecommons.org/2016/10/18/slack-announcement/"&gt;We're on Slack! Join us! - Creative Commons&lt;/a&gt;). We are very thankful
for the generous support that Slack has provided. The Slack messaging platform
is far more accessible than IRC. We saw an immediate and sustained increase in
our messaging community (&lt;a href="https://creativecommons.org/2016/12/09/a-month-of-slack/"&gt;A month of Slack: Growing global communities every
day - Creative Commons,  Lessons learned from a year of Slack, 1000 members,
and immeasurable community growth - Creative Commons&lt;/a&gt;). We
currently have 10,293 members in our Slack workspace. Of those, we see daily
activity from an average of 250 of them spread across almost 70 public
channels. The Slack platform is not without valid criticisms, but those will be
addressed in the Future: Open Source section, below.&lt;/p&gt;
&lt;h2 id="present-dropping-irc"&gt;Present: Dropping IRC&lt;/h2&gt;&lt;p&gt;When CC moved to Slack, we also set up a bridge with our three IRC channels on
Freenode. However those channels only see ones of active users and tens of
messages per year. With the hostile takeover of Freenode in 2021, the
Free/Libre and Open Source (FOSS) community has largely moved to
&lt;a href="https://libera.chat/"&gt;libera.chat&lt;/a&gt;. However, we will not be moving our Slack/IRC bridge
there. &lt;strong&gt;Effective 2022-01-24 we are dropping IRC as an officially supported
messaging platform.&lt;/strong&gt; In addition to there having been very few active users on
IRC, many of the active IRC users also have active Slack accounts. Dropping IRC
will allow us to better allocate our technical resources to better serve the
community as a whole.&lt;/p&gt;
&lt;h2 id="future-open-source"&gt;Future: Open Source&lt;/h2&gt;&lt;p&gt;Over the years, Slack has had performance and UX issues. It is also designed
around assumptions that do not fit a large open community. Those issues have
not prevented it from being a strong and capable messaging platform that has
served our community well. However, an Open Source messaging platform would
better align with the Creative Commons community and the values we champion.
The Open Source and Open Content communities have long enjoyed a significant
overlap and collaboration. With regards to messaging, we hope to increase that
overlap in the next year or two.&lt;/p&gt;
</content></entry><entry><title>Upcoming Changes to the CC Open Source Community</title><link href="http://opensource.creativecommons.org/blog/entries/2020-12-07-upcoming-changes-to-community/" rel="alternate"/><updated>2020-12-07T00:00:00Z</updated><author><name>['kgodey']</name></author><id>urn:uuid:6ddb1b15-743c-33df-8908-af1a328988d8</id><content type="html">&lt;p&gt;Creative Commons (CC) is adopting a brand new organizational strategy in 2021, just in time for our 20th anniversary. As part of the organization's evolution in alignment with the new strategy, &lt;a href="/blog/authors/aldenpage/"&gt;Alden Page&lt;/a&gt;, &lt;a href="/blog/authors/mathemancer/"&gt;Brent Moran&lt;/a&gt;, &lt;a href="/blog/authors/hugosolar/"&gt;Hugo Solar&lt;/a&gt;, and I (&lt;a href="/blog/authors/kgodey/"&gt;Kriti Godey&lt;/a&gt;) will have departed Creative Commons by the end of December. Moving forward, the CC staff engineering team of &lt;a href="/blog/authors/TimidRobot/"&gt;Timid Robot Zehta&lt;/a&gt; and &lt;a href="/blog/authors/zackkrida/"&gt;Zack Krida&lt;/a&gt; will focus on supporting a smaller set of core projects.&lt;/p&gt;
&lt;p&gt;We are extremely proud of the work we have done together to build CC's vibrant open source community over the past two years. And of course, we're thankful for all the amazing contributions that all our community members have made. We've made significant improvements to existing tools, and launched entirely new projects with your help. &lt;a href="/blog/categories/cc-vocabulary/"&gt;We created Vocabulary,&lt;/a&gt; a design system for Creative Commons and launched half a dozen sites using it.  We added &lt;a href="/blog/categories/cc-catalog/"&gt;dozens of new sources to CC Search&lt;/a&gt; and improved &lt;a href="/blog/authors/AyanChoudhary/"&gt;its accessibility&lt;/a&gt;. We released tools such as the &lt;a href="/blog/authors/ahmadbilaldev/"&gt;CC WordPress plugin&lt;/a&gt; and &lt;a href="/blog/authors/makkoncept/"&gt;CC Search browser extension&lt;/a&gt; that integrated CC licensing with widely used software. And, there's so much more.&lt;/p&gt;
&lt;h3 id="community-changes"&gt;Community Changes&lt;/h3&gt;&lt;p&gt;The CC Open Source community remains central to our engineering work, and we will continue to support you in every way we can. However, based on the new staff capacity, we will be making a few changes to our community processes:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Community Team members will no longer have access to CC's Asana. Most tasks are tracked on GitHub, and managing Asana adds unnecessary complexity to the community team.&lt;/li&gt;
&lt;li&gt;We will invite all Community Team members to meetings and documents open to the community, regardless of role.&lt;/li&gt;
&lt;li&gt;We will deprecate the  "community-team-core" mailing list in favor of a single "community-team" mailing list.&lt;/li&gt;
&lt;li&gt;We will have a new monthly Open Source Community meeting and cancel the existing biweekly Engineering Meeting.&lt;/li&gt;
&lt;li&gt;We will no longer have a paid Open Source Community Coordinator, &lt;a href="/community/community-team/community-building-roles/"&gt;relying instead on volunteers&lt;/a&gt; to help assist new community members, maintain our Twitter account, etc.&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;We welcome new Community Team members and we will continue to participate in internship programs such as Google Summer of Code.&lt;/p&gt;
&lt;h3 id="project-changes"&gt;Project Changes&lt;/h3&gt;&lt;p&gt;With a smaller engineering team, we will need to support fewer projects. Please see below for the current status of all projects with at least one Community Team member.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Active Development&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;We will continue to actively develop the following projects:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href="https://github.com/creativecommons/ccsearch-browser-extension"&gt;CC Search Browser Extension&lt;/a&gt; (maintainer: Mayank Nader)&lt;/li&gt;
&lt;li&gt;&lt;a href="https://github.com/creativecommons/ccos-website-source"&gt;CC Open Source website&lt;/a&gt; (maintainers: Zack Krida &amp;amp; Timid Robot Zehta)&lt;/li&gt;
&lt;li&gt;&lt;a href="https://github.com/creativecommons/creativecommons-base"&gt;CC WordPress base&lt;/a&gt; &amp;amp; child themes (new maintainer: Zack Krida)&lt;/li&gt;
&lt;li&gt;&lt;a href="https://github.com/creativecommons/legaldb"&gt;CC Legal Database&lt;/a&gt; (maintainer: Timid Robot Zehta)&lt;/li&gt;
&lt;li&gt;&lt;a href="https://github.com/creativecommons/chooser"&gt;CC Chooser&lt;/a&gt; (maintainer: Zack Krida)&lt;/li&gt;
&lt;li&gt;&lt;a href="https://github.com/creativecommons/cc-link-checker/"&gt;CC Link Checker&lt;/a&gt; (maintainer: Timid Robot Zehta)&lt;/li&gt;
&lt;li&gt;&lt;a href="https://github.com/creativecommons/licensebuttons/"&gt;License Buttons&lt;/a&gt; (maintainer: Timid Robot Zehta)&lt;/li&gt;
&lt;li&gt;&lt;a href="https://github.com/creativecommons/mp/"&gt;Platform Toolkit&lt;/a&gt; (maintainer: Timid Robot Zehta)&lt;/li&gt;
&lt;li&gt;&lt;a href="https://github.com/creativecommons/vocabulary"&gt;Vocabulary&lt;/a&gt; (maintainers: Zack Krida &amp;amp; Dhruv Bhanushali)&lt;/li&gt;
&lt;li&gt;&lt;a href="https://github.com/cc-archive/wp-plugin-creativecommons"&gt;WordPress Plugin&lt;/a&gt; (new maintainer: Zack Krida)&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;&lt;strong&gt;Maintenance Mode&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;The following projects are entering maintenance mode. The services will remain online, but we will not accept any new pull requests or deploy new code after Dec 15, 2020.&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href="https://github.com/cc-archive/cccatalog"&gt;CC Catalog&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://github.com/cc-archive/cccatalog-api"&gt;CC Catalog API&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://github.com/cc-archive/cccatalog-frontend/"&gt;CC Search&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://github.com/cc-archive/cccatalog-dataviz/"&gt;Linked Commons&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;Catalog, API, and Linked Commons contributors are encouraged to contribute  to our other Python projects such as the &lt;a href="https://github.com/creativecommons/legaldb"&gt;CC Legal Database&lt;/a&gt; or the upcoming &lt;a href="https://github.com/creativecommons/cc-licenses"&gt;CC Licenses&lt;/a&gt; project. If you are a CC Search contributor, we recommend checking out frontend projects such as the &lt;a href="https://github.com/creativecommons/chooser"&gt;CC Chooser&lt;/a&gt; or &lt;a href="https://github.com/creativecommons/vocabulary"&gt;Vocabulary&lt;/a&gt;.&lt;/p&gt;
&lt;h3 id="thank-you"&gt;Thank You!&lt;/h3&gt;&lt;p&gt;We cannot express our gratitude for our community enough. You are all an absolute pleasure to work with, and we're looking forward to continuing to collaborate with you for years to come.&lt;/p&gt;
</content></entry><entry><title>Vocabulary Landing Page &amp; Usage Guide Final Report</title><link href="http://opensource.creativecommons.org/blog/entries/cc-vocabulary-docs-updates-closing/" rel="alternate"/><updated>2020-12-03T00:00:00Z</updated><author><name>['nimishbongale']</name></author><id>urn:uuid:c9d85fac-5e9a-388a-ba75-1e84fee57c64</id><content type="html">&lt;p&gt;We have reached the end of this wonderful journey. Let's comprehensively recap all my contributions during the GSoD internship period!&lt;/p&gt;
&lt;h2 id="vocabulary-site-updates-edition-4/4"&gt;Vocabulary Site Updates (Edition 4/4)&lt;/h2&gt;&lt;p&gt;After securing acceptance, I received the necessary github invites. I was given write access to the &lt;a href="https://github.com/creativecommons/vocabulary"&gt;Vocabulary GitHub repository&lt;/a&gt; as a &lt;strong&gt;CC Vocabulary Core Committer&lt;/strong&gt;.&lt;/p&gt;
&lt;h3 id="proposed-initial-plan"&gt;Proposed Initial Plan&lt;/h3&gt;&lt;h4 id="project-synopsis"&gt;Project Synopsis&lt;/h4&gt;&lt;p&gt;Vocabulary has immense potential to be used as a primary UI component library for website building. What it needs is a robust yet layman-friendly how-to guide. Important developer information such as component guides, usage specifications and configuration tweaks form an essential part of any documentation. This will not only encourage existing users to get a feel of how vocabulary continues to grow and reach new milestones, but also promote the usage of Vocabulary in comparatively newer projects. The desired outcomes of my stint as an intern would not only involve penning out a no-nonsense guide to using the pre-existing components but also the designing and developing of a home page (leading to an integrated documentation for each) for Vocabulary, Vue-Vocabulary and Fonts.&lt;/p&gt;
&lt;h3 id="proposed-improvised-timelines-deliverables"&gt;Proposed &amp;amp; Improvised Timelines &amp;amp; Deliverables&lt;/h3&gt;&lt;p&gt;Here's a list of all the weekly goals that I met:&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Pre-Internship&lt;/strong&gt;&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Understood Creative Commons as an organisation, its work and related ethics.&lt;/li&gt;
&lt;li&gt;Had a look at CC’s github repositories and understand the code structure.&lt;/li&gt;
&lt;li&gt;Opened Issues and PR’s to get acquainted with the repository workflows.&lt;/li&gt;
&lt;li&gt;Interacted with my mentor and established the basic ideas regarding the project in question.&lt;/li&gt;
&lt;li&gt;Further researched about the needs of the project, and ponder over its potential impact after implementation.&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;&lt;strong&gt;Week 1&lt;/strong&gt;
(09/14 - 09/21)&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Understood Vocabulary, Vue-Vocabulary and Fonts in greater depth, and their existing components.&lt;/li&gt;
&lt;li&gt;Designed a first look unified landing page for Vocabulary, Vue-Vocabulary and Fonts based on Vocabulary components.&lt;/li&gt;
&lt;li&gt;Interacted with my mentor and other team members and established a rapport.&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;&lt;strong&gt;Week 2&lt;/strong&gt;
(09/22 - 09/28)&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Tackled queries regarding the choice of design, page structure etc., and sought approval from CC’s UX Designer.&lt;/li&gt;
&lt;li&gt;Began to write the content which will need to fill up the main landing page.&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;&lt;strong&gt;Week 3&lt;/strong&gt;
(09/29 - 10/06)&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Finalized the headings, sub-headings and other sections which will need to be present in the landing site &amp;amp; documentation.&lt;/li&gt;
&lt;li&gt;Kept the code ready for accepting documentation contents. Have github pages/netlify/surge configured for continuous integration and deployment.&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;&lt;strong&gt;Week 4&lt;/strong&gt;
(10/07 - 10/14)&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Began to write under “Introduction”, “Getting Started” and ”Grid Components” sub-headings of the documentation.&lt;/li&gt;
&lt;li&gt;Started developing the main landing page using Vocabulary components.&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;&lt;strong&gt;Week 5&lt;/strong&gt;
(10/15 - 10/22)&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Got complete approval for the main page contents.&lt;/li&gt;
&lt;li&gt;Worked on coding the “Dark Theme”.&lt;/li&gt;
&lt;li&gt;Facilitated hacktoberfest contributors and spoke at a CCOS event.&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;&lt;strong&gt;Week 6&lt;/strong&gt;
(10/23 - 10/30)&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Wrote a mid-internship blog post describing work done and how the experience has been so far with CC.&lt;/li&gt;
&lt;li&gt;Started compiling the document guides for all the components in Vocabulary. Made revamps where necessary.&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;&lt;strong&gt;Week 7&lt;/strong&gt;
(10/31 - 11/07)&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Integrated the main page contents and the main landing page itself, had it up and running.&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;&lt;strong&gt;Week 8&lt;/strong&gt;
(11/08 - 11/15)&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Finished writing the Vocabulary usage guide and seek initial approval.&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;&lt;strong&gt;Week 9&lt;/strong&gt;
(11/16 - 11/23)&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Finalized on the guides and the main page contents.&lt;/li&gt;
&lt;li&gt;Carried out the necessary landing page to doc integration.&lt;/li&gt;
&lt;li&gt;Published a sample build using surge for viewing and surveying purposes.&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;&lt;strong&gt;Week 10&lt;/strong&gt;
(11/24 - 11/30)&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Surveyed development builds for Accessibility using WAVE and Accessibility Insights for Web.&lt;/li&gt;
&lt;li&gt;Surveyed the site for responsiveness using Chrome Dev Tools.&lt;/li&gt;
&lt;li&gt;Generated Lighthouse reports.&lt;/li&gt;
&lt;li&gt;Optimised for Search Engines using meta tags and external links.&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;&lt;strong&gt;Week 11&lt;/strong&gt;
(11/30 - 12/05)&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Worked towards improving the report statistics until they reach a respectable target.&lt;/li&gt;
&lt;li&gt;Wrote a blog post summarizing everything, and about my performance cum involvement in CC.&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;&lt;strong&gt;Week 12&lt;/strong&gt;
(12/06 - 12/12)&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Sought daily approvals until everything is finalised.&lt;/li&gt;
&lt;li&gt;Go through my writings and code upteen times for any miniscule errors.&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;&lt;strong&gt;Week 13&lt;/strong&gt;
(12/13 - 12/19)&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Cleaned code, make sure everything is properly linted and ready before the final closing commits.&lt;/li&gt;
&lt;li&gt;Published the “Concluding Internship” blog post, rounding up my wholesome journey.&lt;/li&gt;
&lt;li&gt;Sought final closing approval.&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;&lt;strong&gt;Post-Internship&lt;/strong&gt;&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Promote the use of CC attributed works.&lt;/li&gt;
&lt;li&gt;Interact with the community, answer queries or doubts regarding CC.&lt;/li&gt;
&lt;li&gt;Carry out community work of the repositories I’ve contributed to.&lt;/li&gt;
&lt;li&gt;Leverage experience gained during this internship for future endeavours.&lt;/li&gt;
&lt;/ul&gt;
&lt;h3 id="the-vocabulary-site"&gt;The Vocabulary Site&lt;/h3&gt;&lt;p&gt;Here's the link to &lt;a href="https://cc-vocab-draft.web.app"&gt;the landing site&lt;/a&gt;.&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Went through &lt;strong&gt;3&lt;/strong&gt; Design Iterations.&lt;/li&gt;
&lt;li&gt;Designed the mockups in &lt;a href="https://figma.com"&gt;Figma&lt;/a&gt;.&lt;/li&gt;
&lt;li&gt;Wrote the content filling up the landing page.&lt;/li&gt;
&lt;li&gt;After approval from the UX Designer, waited for an approval from the Frontend Engineer.&lt;/li&gt;
&lt;li&gt;Sought continuous approval from my mentor &lt;a href="/blog/authors/dhruvkb/"&gt;dhruvkb&lt;/a&gt;.&lt;/li&gt;
&lt;li&gt;Used &lt;a href="https://vuejs.org"&gt;Vue.js&lt;/a&gt; + &lt;a href="https://www.npmjs.com/package/@creativecommons/vocabulary"&gt;CC Vocabulary&lt;/a&gt; to build a highly modularised site.&lt;/li&gt;
&lt;li&gt;Went through a couple of iterations of the website itself.&lt;/li&gt;
&lt;li&gt;Made about &lt;strong&gt;112&lt;/strong&gt; commits (&lt;strong&gt;15,000&lt;/strong&gt; lines of code) in my &lt;em&gt;gsod-nimish&lt;/em&gt; branch.&lt;/li&gt;
&lt;/ul&gt;
&lt;pre&gt;
&lt;center&gt;
&lt;img alt"Contributions to CC" src="github.png"/&gt;&lt;br&gt;
&lt;small class="muted"&gt;All my contributions to Creative Commons!&lt;/small&gt;
&lt;/center&gt;
&lt;/pre&gt;&lt;ul&gt;
&lt;li&gt;Used Github API to display repository statistics.&lt;/li&gt;
&lt;/ul&gt;
&lt;pre&gt;
&lt;center&gt;
&lt;img alt"Fetch stats from Github API" src="stats.png"/&gt;&lt;br&gt;
&lt;small class="muted"&gt;Fetching dynamic stats from the GitHub API&lt;/small&gt;
&lt;/center&gt;
&lt;/pre&gt;&lt;ul&gt;
&lt;li&gt;PR was reviewed and merged on the &lt;strong&gt;25th of November&lt;/strong&gt;.&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;Here's how the site looks right now:&lt;/p&gt;
&lt;pre&gt;
&lt;center&gt;
&lt;img alt"The final website!" src="website.png"/&gt;&lt;br&gt;
&lt;small class="muted"&gt;Snapshot of the final website!&lt;/small&gt;
&lt;/center&gt;
&lt;/pre&gt;&lt;ul&gt;
&lt;li&gt;Used &lt;a href="https://surge.sh"&gt;surge&lt;/a&gt; &amp;amp; &lt;a href="https://web.app"&gt;firebase&lt;/a&gt; for draft deploys.&lt;/li&gt;
&lt;li&gt;Carried out &lt;a href="https://developers.google.com/web/tools/lighthouse"&gt;lighthouse&lt;/a&gt; testing.&lt;/li&gt;
&lt;/ul&gt;
&lt;pre&gt;
&lt;center&gt;
&lt;img alt="Lighthouse reports" src="light.png"/&gt;&lt;br&gt;
&lt;small class="muted"&gt;Lighthouse reports for our live site&lt;/small&gt;
&lt;/center&gt;
&lt;/pre&gt;&lt;ul&gt;
&lt;li&gt;Prompted changes to improve accessibility, SEO and PWA characteristics.&lt;/li&gt;
&lt;/ul&gt;
&lt;h3 id="core-documentation"&gt;Core Documentation&lt;/h3&gt;&lt;p&gt;Here's the link to the &lt;a href="https://cc-vocabulary.netlify.app"&gt;documentation site&lt;/a&gt;.&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Used &lt;a href="https://storybook.js.org/"&gt;StorybookJS&lt;/a&gt;.&lt;/li&gt;
&lt;li&gt;Modified the existing overview page.&lt;/li&gt;
&lt;li&gt;Removed highly verbose sections from the docs.&lt;/li&gt;
&lt;li&gt;Documented Vocabulary sprint planning workflow.&lt;/li&gt;
&lt;li&gt;Documented how to use a markdown component with CC Vocabulary.&lt;/li&gt;
&lt;li&gt;Embedded hyperlink to other open source projects to improve SEO.&lt;/li&gt;
&lt;li&gt;Increased uniformity across documentation present in the storybooks.&lt;/li&gt;
&lt;li&gt;Added alt descriptions &amp;amp; aria labels for certain images to improve accessibility.&lt;/li&gt;
&lt;/ul&gt;
&lt;h3 id="my-learnings-and-challenges"&gt;My Learnings And Challenges&lt;/h3&gt;&lt;ul&gt;
&lt;li&gt;Design is more than just picking colors and placing components on a grey screen.&lt;/li&gt;
&lt;li&gt;It's important to read your own writings from an unbiased perspective to actually understand how well it would be perceived.&lt;/li&gt;
&lt;li&gt;Publishing to npmjs is not difficult!&lt;/li&gt;
&lt;li&gt;Knowing the previously existing code in your project is of serious essence. It's important to understand the code styles, structure &amp;amp; activity of the code that you are dealing with.&lt;/li&gt;
&lt;li&gt;Be patient! Its fine to delay something if it makes sense to have it logically accomplished only after certain other tasks are done &amp;amp; dusted with.&lt;/li&gt;
&lt;li&gt;How essential it is to write neat code is something that's not spoken too often. (I wonder why...)&lt;/li&gt;
&lt;li&gt;I always thought Vue.js sets up SPA's by default. I'm surprised you need to configure it additionally to do just that!&lt;/li&gt;
&lt;li&gt;Storybook is just a really nifty OSS with great community support!&lt;/li&gt;
&lt;li&gt;Vue.js is fantastic. Maybe I'm a Vue.js fan now. Should I remain loyal to React? I don't know.&lt;/li&gt;
&lt;li&gt;Making a site responsive isn't the easiest of tasks, but it's certainly doable after a lot of stretching &amp;amp; compressing; lets say that.&lt;/li&gt;
&lt;li&gt;"Code formatting is essential" would be an understatement to make.&lt;/li&gt;
&lt;li&gt;Monorepo's have their own pro's and con's. But in our case the con's were negligible, thankfully!&lt;/li&gt;
&lt;li&gt;GSoD isn't just about documentation; there's some serious amount of coding too!&lt;/li&gt;
&lt;li&gt;You don't have to sit and write code for hours together. Take breaks, come back, and the fix will strike you sooner than ever.&lt;/li&gt;
&lt;li&gt;Timelines change; improvisation being an essential aspect of any project!&lt;/li&gt;
&lt;li&gt;MDX is a neat little format to code in! Documenting code is just so much easier.&lt;/li&gt;
&lt;li&gt;Things become obsolete. Versions become outdated. Code maintaining is therefore, easier said than done!&lt;/li&gt;
&lt;/ul&gt;
&lt;h3 id="issues-pr-s-raised-during-gsod-period"&gt;Issues &amp;amp; PR's raised during GSoD period&lt;/h3&gt;&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;Repository&lt;/th&gt;
&lt;th&gt;Contribution&lt;/th&gt;
&lt;th&gt;Relevant links&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td rowspan=14&gt;&lt;a href="https://github.com/creativecommons/vocabulary"&gt;@creativecommons/vocabulary&lt;/a&gt;&lt;/td&gt;
&lt;td&gt;Developed the CC Vocabulary Landing Page&lt;/td&gt;
&lt;td&gt;&lt;a href="https://github.com/cc-archive/vocabulary-legacy/pull/747"&gt;https://github.com/cc-archive/vocabulary-legacy/pull/747&lt;br&gt;&lt;a href="https://cc-vocab-draft.web.app"&gt;https://cc-vocab-draft.web.app&lt;/a&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Implemented dark mode for our storybooks&lt;/td&gt;
&lt;td&gt;&lt;a href="https://github.com/cc-archive/vocabulary-legacy/pull/806"&gt;https://github.com/cc-archive/vocabulary-legacy/pull/806&lt;/a&gt;&lt;br&gt;&lt;a href="https://cc-vocabulary.netlify.app"&gt;https://cc-vocabulary.netlify.app&lt;/a&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Carried out a monorepo wide documentation revamp&lt;/td&gt;
&lt;td&gt;&lt;a href="https://github.com/cc-archive/vocabulary-legacy/pull/813"&gt;https://github.com/cc-archive/vocabulary-legacy/pull/813&lt;/a&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Wrote the Monorepo Documentation Story&lt;/td&gt;
&lt;td&gt;&lt;a href="https://github.com/cc-archive/vocabulary-legacy/pull/785"&gt;https://github.com/cc-archive/vocabulary-legacy/pull/785&lt;/a&gt;&lt;br&gt;&lt;a href="https://cc-vocabulary.netlify.app/?path=/docs/vocabulary-structure--page#why-is-vocabulary-a-monorepo"&gt;https://cc-vocabulary.netlify.app/?path=/docs/vocabulary-structure--page#why-is-vocabulary-a-monorepo&lt;/a&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Wrote the Grid Documentation Story&lt;/td&gt;
&lt;td&gt;&lt;a href="https://github.com/cc-archive/vocabulary-legacy/pull/802"&gt;https://github.com/cc-archive/vocabulary-legacy/pull/802&lt;/a&gt;&lt;br&gt;&lt;a href="https://cc-vocabulary.netlify.app/?path=/docs/layouts-grid--fullhd#grid-system"&gt;https://cc-vocabulary.netlify.app/?path=/docs/layouts-grid--fullhd#grid-system&lt;/a&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Wrote the "Getting Started" Usage Guide&lt;/td&gt;
&lt;td&gt;&lt;a href="https://github.com/cc-archive/vocabulary-legacy/pull/774"&gt;https://github.com/cc-archive/vocabulary-legacy/pull/774&lt;/a&gt;&lt;br&gt;&lt;a href="https://cc-vocabulary.netlify.app/?path=/story/vocabulary-getting-started--page#getting-started"&gt;https://cc-vocabulary.netlify.app/?path=/story/vocabulary-getting-started--page#getting-started&lt;/a&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Added a CHANGELOG.md to adhere to OSS conventions&lt;/td&gt;
&lt;td&gt;&lt;a href=https://github.com/cc-archive/vocabulary-legacy/pull/671"&gt;https://github.com/cc-archive/vocabulary-legacy/pull/671&lt;/a&gt;&lt;br&gt;&lt;a href="https://github.com/cc-archive/vocabulary-legacy/blob/main/CHANGELOG.md"&gt;https://github.com/cc-archive/vocabulary-legacy/blob/main/CHANGELOG.md&lt;/a&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Unified README.md and updated monorepo build process&lt;/td&gt;
&lt;td&gt;&lt;a href="https://github.com/cc-archive/vocabulary-legacy/pull/649"&gt;https://github.com/cc-archive/vocabulary-legacy/pull/649&lt;/a&gt;&lt;br&gt;&lt;a href="https://www.npmjs.com/package/@creativecommons/vocabulary"&gt;https://www.npmjs.com/package/@creativecommons/vocabulary&lt;/a&gt;&lt;br&gt;&lt;a href="https://www.npmjs.com/package/@creativecommons/fonts"&gt;https://www.npmjs.com/package/@creativecommons/fonts&lt;/a&gt;&lt;br&gt;&lt;a href="https://www.npmjs.com/package/@creativecommons/vue-vocabulary"&gt;https://www.npmjs.com/package/@creativecommons/vue-vocabulary&lt;/a&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Configured GitHub native dependabot&lt;/td&gt;
&lt;td&gt;&lt;a href="https://github.com/cc-archive/vocabulary-legacy/pull/452"&gt;https://github.com/cc-archive/vocabulary-legacy/pull/452&lt;/a&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Added phone screen backgrounds&lt;/td&gt;
&lt;td&gt;&lt;a href="https://github.com/cc-archive/vocabulary-legacy/pull/445"&gt;https://github.com/cc-archive/vocabulary-legacy/pull/445&lt;/a&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Introduce Snapshot Testing to Vocabulary using Chromatic&lt;/td&gt;
&lt;td&gt;&lt;a href="https://github.com/cc-archive/vocabulary-legacy/issues/735"&gt;https://github.com/cc-archive/vocabulary-legacy/issues/735&lt;/a&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Add a maintained with Lerna badge&lt;/td&gt;
&lt;td&gt;&lt;a href="https://github.com/cc-archive/vocabulary-legacy/issues/807"&gt;https://github.com/cc-archive/vocabulary-legacy/issues/807&lt;/a&gt;&lt;br&gt;&lt;a href="https://github.com/cc-archive/vocabulary-legacy/blob/main/README.md"&gt;https://github.com/cc-archive/vocabulary-legacy/blob/main/README.md&lt;/a&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Add new install size badges for our packages&lt;/td&gt;
&lt;td&gt;&lt;a href="https://github.com/cc-archive/vocabulary-legacy/issues/776"&gt;https://github.com/cc-archive/vocabulary-legacy/issues/776&lt;/a&gt;&lt;br&gt;&lt;a href="https://github.com/cc-archive/vocabulary-legacy/blob/main/README.md"&gt;https://github.com/cc-archive/vocabulary-legacy/blob/main/README.md&lt;/a&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Customise individual README's for our packages&lt;/td&gt;
&lt;td&gt;&lt;a href="https://github.com/cc-archive/vocabulary-legacy/issues/736"&gt;https://github.com/cc-archive/vocabulary-legacy/issues/736&lt;/a&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td rowspan=5&gt;&lt;a href="https://github.com/creativecommons/ccos-website-source"&gt;@creativecommons/ccos-website-source&lt;/a&gt;&lt;/td&gt;
&lt;td&gt;Introductory First Blog Post&lt;/td&gt;
&lt;td&gt;&lt;a href="https://github.com/creativecommons/ccos-website-source/pull/530"&gt;https://github.com/creativecommons/ccos-website-source/pull/530&lt;/a&gt;&lt;br&gt;&lt;a href="/blog/entries/cc-vocabulary-docs-intro/"&gt;/blog/entries/cc-vocabulary-docs-intro/&lt;/a&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Vocabulary Site Update v1&lt;/td&gt;
&lt;td&gt;&lt;a href="https://github.com/creativecommons/ccos-website-source/pull/549"&gt;https://github.com/creativecommons/ccos-website-source/pull/549&lt;/a&gt;&lt;br&gt;&lt;a href="/blog/entries/cc-vocabulary-docs-updates-1/"&gt;/blog/entries/cc-vocabulary-docs-updates-1/&lt;/a&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Vocabulary Mid Internship Update v2&lt;/td&gt;
&lt;td&gt;&lt;a href="https://github.com/creativecommons/ccos-website-source/pull/555"&gt;https://github.com/creativecommons/ccos-website-source/pull/555&lt;/a&gt;&lt;br&gt;&lt;a href="/blog/entries/cc-vocabulary-docs-updates-2/"&gt;/blog/entries/cc-vocabulary-docs-updates-2/&lt;/a&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Vocabulary Site Update v3&lt;/td&gt;
&lt;td&gt;&lt;a href="https://github.com/creativecommons/ccos-website-source/pull/561"&gt;https://github.com/creativecommons/ccos-website-source/pull/561&lt;/a&gt;&lt;br&gt;&lt;a href="/blog/entries/cc-vocabulary-docs-updates-3/"&gt;/blog/entries/cc-vocabulary-docs-updates-3/&lt;/a&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Vocabulary Site Final Update&lt;/td&gt;
&lt;td&gt;&lt;a href="https://github.com/creativecommons/ccos-website-source/pull/564"&gt;https://github.com/creativecommons/ccos-website-source/pull/564&lt;/a&gt;&lt;br&gt;&lt;a href="/"&gt;/blog/entries/cc-vocabulary-docs-updates-closing/&lt;/a&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;a href="https://github.com/cc-archive/cccatalog-api"&gt;@cc-archive/cccatalog-api&lt;/a&gt;&lt;/td&gt;
&lt;td&gt;Configured GitHub native dependabot&lt;/td&gt;
&lt;td&gt;&lt;a href="https://github.com/cc-archive/cccatalog-api/pull/53"&gt;https://github.com/cc-archive/cccatalog-api/pull/53&lt;/a&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;a href="https://github.com/creativecommons/ccos-scripts"&gt;@creativecommons/ccos-scripts&lt;/a&gt;&lt;/td&gt;
&lt;td&gt;Fix file extension in README.md docs&lt;/td&gt;
&lt;td&gt;&lt;a href="https://github.com/creativecommons/ccos-scripts/pull/100"&gt;https://github.com/creativecommons/ccos-scripts/pull/100&lt;/a&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;&lt;p&gt;Follow along my complete GSoD journey through &lt;a href="/blog/series/gsod-2020-vocabulary-usage-guide/"&gt;these series of posts&lt;/a&gt;.&lt;/p&gt;
&lt;h3 id="memorable-milestones-screenshots"&gt;Memorable Milestones Screenshots&lt;/h3&gt;&lt;pre&gt;
&lt;center&gt;
&lt;img alt"Merged!" src="merged747.png"/&gt;&lt;br&gt;
&lt;small class="muted"&gt;GSoD PR merged!&lt;/small&gt;
&lt;/center&gt;
&lt;/pre&gt;
&lt;br&gt;
&lt;pre&gt;
&lt;center&gt;
&lt;img alt"Dark Mode" src="darkmode.png"/&gt;&lt;br&gt;
&lt;small class="muted"&gt;Behold the dark theme!&lt;/small&gt;
&lt;/center&gt;
&lt;/pre&gt;
&lt;br&gt;
&lt;pre&gt;
&lt;center&gt;
&lt;img alt"Grid Docs" src="grid.png"/&gt;&lt;br&gt;
&lt;small class="muted"&gt;Grid Documenation Story&lt;/small&gt;
&lt;/center&gt;
&lt;/pre&gt;
&lt;br&gt;
&lt;pre&gt;
&lt;center&gt;
&lt;img alt"Monorepo Document Story" src="structure.png"/&gt;&lt;br&gt;
&lt;small class="muted"&gt;Monorepo Structure Story&lt;/small&gt;
&lt;/center&gt;
&lt;/pre&gt;&lt;h3 id="conclusion"&gt;Conclusion&lt;/h3&gt;&lt;p&gt;My GSoD internship has been by far, a very successful and a fruitful one. I thank the the GSoD team for all their efforts in oragnising it this year. I would also like to thank the entire Creative Commons team for all their motivation and support. The onboarding &amp;amp; see-off was very smooth indeed!&lt;/p&gt;
&lt;p align="center"&gt;
    &lt;strong&gt;Thank you for all your time! This was the final blog post under the Vocabulary docs series. I'll be around for times to come, but until then, sayonara!&lt;/strong&gt;
&lt;/p&gt;</content></entry><entry><title>Summary: My GSoD 2020 Journey</title><link href="http://opensource.creativecommons.org/blog/entries/summary-my-gsod-2020-journey/" rel="alternate"/><updated>2020-12-02T00:00:00Z</updated><author><name>['ariessa']</name></author><id>urn:uuid:6a45214f-1da2-3be9-a913-89e5cf9ed69c</id><content type="html">&lt;p&gt;Thank you for the wonderful experience, Creative Commons!&lt;/p&gt;
&lt;p&gt;This blog post serves as a project report for ‘Improve CC Catalog API Usage Guide’.
It describes the work that I’ve done during my Google Season Of Docs (GSOD) 2020.
My mentors for this project are Alden Page and Kriti Godey from Creative Commons.&lt;/p&gt;
&lt;p&gt;In total, there are 12 weeks in the Doc Development Phase.
Every 2 weeks, I would publish a blog post to update my progress to my mentors and organization.&lt;/p&gt;
&lt;h3 id="week-1"&gt;Week 1&lt;/h3&gt;&lt;p&gt;So, the first two weeks of Google Season of Docs have passed.
For the first week, I added examples to perform the query using curl command.
I hit some problem with a Forbidden error. Turns out my access key got expired.
My problem was solved after obtaining a new access key.&lt;/p&gt;
&lt;h3 id="week-2"&gt;Week 2&lt;/h3&gt;&lt;p&gt;For the second week, I started to write response samples.
It was tough as I have a hard time understanding drf-yasg, which is an automatic Swagger generator.
It can produce Swagger / OpenAPI 2.0 specifications from a Django Rest Framework API.
I tried to find as many examples as I could to increase my understanding.
Funny, but it took me awhile to realise that drf-yasg is not made up of random letters.
The DRF part stands for Django Rest Framework while YASG stands for Yet Another Swagger Generator.&lt;/p&gt;
&lt;h3 id="week-3"&gt;Week 3&lt;/h3&gt;&lt;p&gt;Week 3 was quite hectic.
I moved back to my hometown during week 3.
Took 3 days off to settle my stuff and set up a workspace.
I worked on my GSoD project for only 2 days, Monday and Tuesday.
I managed to create response samples for most API endpoints.
Had a monthly video call with Kriti this week.&lt;/p&gt;
&lt;h3 id="week-4"&gt;Week 4&lt;/h3&gt;&lt;p&gt;I reviewed what I’ve done and what I haven’t to estimate new completion time.
Thank god, I have a buffer week in my GSoD timeline and deliverables.
So yeah, all is good in terms of completion time.
I started to write descriptions for API endpoints.
Submitted first PR and published blog entry.&lt;/p&gt;
&lt;h3 id="week-5"&gt;Week 5&lt;/h3&gt;&lt;p&gt;I managed to add a lot of stuff into the documentation.
I figured out how to add help texts to classes and how to create serializers.
I also managed to move all code examples under response samples.
In order to do this, I created a new class called CustomAutoSchema to add x-code-samples.
Other stuff that I did include creating new sections such as “Register and Authenticate” and “Glossary”.
The hardest part of this week is probably trying to figure out how to add request body examples and move code examples.&lt;/p&gt;
&lt;h3 id="week-6"&gt;Week 6&lt;/h3&gt;&lt;p&gt;I added another section called Contribute that provides a todolist to start contributing on Github.
I also wrote and published this blog post.&lt;/p&gt;
&lt;h3 id="week-7"&gt;Week 7&lt;/h3&gt;&lt;p&gt;I restructured the file README in CC Catalog API repository.
I added a step by step guide on how to run the server locally.
I hope new users will be less intimidated to contribute to this project with the updated guide on how to run the server locally.&lt;/p&gt;
&lt;h3 id="week-8"&gt;Week 8&lt;/h3&gt;&lt;p&gt;I created Documentation Guidelines which provides steps on how to contribute to CC Catalog API documentation, documentation styles, and cheat sheet for drf-yasg.
I also wrote and published this blog post.&lt;/p&gt;
&lt;h3 id="week-9"&gt;Week 9&lt;/h3&gt;&lt;p&gt;I had completed all GSoD tasks by week 9.
So, I took a couple of days off and fixed last week's PR.
Kriti assigned me with new tasks, which is to port CC Catalog documentation from the internal wiki into GitHub repository.
Brent, the CC Catalog maintainer explained to me about what needs to be done.&lt;/p&gt;
&lt;h3 id="week-10"&gt;Week 10&lt;/h3&gt;&lt;p&gt;I started exploring CC Catalog and its documentation.
Reminds me a lot about the first and second weeks of GSoD.
Trying to understand new stuff and having an "aha" moment when the dots finally connect.
I started to move the documentation from the internal wiki to CC Catalog’s GitHub repository.
I also wrote and published this blog post.&lt;/p&gt;
&lt;h3 id="week-11"&gt;Week 11&lt;/h3&gt;&lt;p&gt;I finished working on porting CC Catalog documentation from internal wiki to CC Catalog’s GitHub repository.
Kriti told me that there would be a meeting in which I have to present what I've done for GSoD.
Since the meeting will take place at 1AM in my local time, Kriti told me that I should send a video presentation instead.&lt;/p&gt;
&lt;h3 id="week-12"&gt;Week 12&lt;/h3&gt;&lt;p&gt;I submitted a video presentation to Kriti.
Finished writing project report and evaluation for GSoD.
I published 2 blog posts this week.
One for updates on Week 11 and Week 12.
Another one is this blog post.&lt;/p&gt;
&lt;p&gt;&lt;br/&gt;&lt;/p&gt;
&lt;hr&gt;
&lt;p&gt;You can view the latest CC Catalog API documentation &lt;a href="https://api.creativecommons.engineering/v1/"&gt;here&lt;/a&gt;.&lt;/p&gt;
</content></entry><entry><title>Finish Video Presentation, Project Report and Evaluation Form</title><link href="http://opensource.creativecommons.org/blog/entries/finish-video-presentation-project-report-and-evaluation-form/" rel="alternate"/><updated>2020-12-01T00:00:00Z</updated><author><name>['ariessa']</name></author><id>urn:uuid:ce71600f-f8a9-3593-b5c6-f0b875ab8014</id><content type="html">&lt;p&gt;For week 10 and 11, I finished porting CC Catalog documentation, submitted a video presentation, and wrapped up my GSoD 2020 journey.&lt;/p&gt;
&lt;h3 id="week-11"&gt;Week 11&lt;/h3&gt;&lt;p&gt;For Week 11, I finished working on porting CC Catalog documentation from internal wiki to CC Catalog’s GitHub repository.
Kriti told me that there would be a meeting in which I have to present what I've done for GSoD.
Since the meeting will take place at 1AM in my local time, Kriti told me that I should send a video presentation instead.&lt;/p&gt;
&lt;h3 id="week-12"&gt;Week 12&lt;/h3&gt;&lt;p&gt;For this week, I submitted a video presentation to Kriti.
Finished writing project report and evaluation for GSoD.
I published 2 blog posts this week.
One for updates on Week 11 and Week 12.
Another one is a summary of my GSoD 2020 journey, which also serves as a project report.&lt;/p&gt;
&lt;hr&gt;
&lt;p&gt;Signing off.&lt;/p&gt;
</content></entry><entry><title>Presenting CC Base docs - A WordPress Base Theme Usage Guide for the CC Base Theme</title><link href="http://opensource.creativecommons.org/blog/entries/cc-wp-base-theme-docs-launch/" rel="alternate"/><updated>2020-11-27T00:00:00Z</updated><author><name>['JackieBinya']</name></author><id>urn:uuid:709b01b4-8a76-378d-bda1-a52995e88bb8</id><content type="html">&lt;p&gt;We are live 🎉&lt;/p&gt;
&lt;p&gt;The CC Base documentation is live and its available on this &lt;a href="https://cc-wp-theme-base.netlify.app/"&gt;link&lt;/a&gt;.&lt;/p&gt;
&lt;p&gt;The docs were successfully migrated from Google Docs to the site! One of the most notable changes in the theme and consequently reflected in the documentation is the product name change. The CC WP Theme Base has been renamed to CC Base.&lt;/p&gt;
&lt;p&gt;But the old adage says good documentation is never complete, we hope to engage the Creative Commons Community and perform usability tests. Any feed back gathered from the usability tests will then be used to further improve the CC Base docs.&lt;/p&gt;
&lt;p&gt;In future iterations of the docs development we hope to include the following features:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Increase the quantity of illustrative media so as to make the docs more intuitive this will be marked by adding video tutorials on how to use certain features of the CC Base theme and also adding illustrative tree diagrams to explain hierarchy of key directories and files in the CC Base project structure.&lt;/li&gt;
&lt;li&gt;Integration of &lt;a href="https://www.algolia.com/"&gt;Algolia&lt;/a&gt; a software tool used to power search functionality in static generated sites.&lt;/li&gt;
&lt;li&gt;We also hope to improve SEO for the site.&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;All the above mentioned improvements are geared at improving the overall user experience of the docs as well as ensure faster onboarding for our community members to get started on using the CC Base theme.&lt;/p&gt;
&lt;p&gt;In conclusion I would like to thank all members of the Creative Commons engineering team, with special mention to Hugo Solar and Kriti Godey. Thank you for your guidance and faith in my abilities as a technical writer and software developer.&lt;/p&gt;
</content></entry><entry><title>Vocabulary Site Updates (Part 3/n)</title><link href="http://opensource.creativecommons.org/blog/entries/cc-vocabulary-docs-updates-3/" rel="alternate"/><updated>2020-11-25T00:00:00Z</updated><author><name>['nimishbongale']</name></author><id>urn:uuid:507beaf2-e097-3c39-b06f-9684e44ccf6c</id><content type="html">&lt;p&gt;Excited to know more about this week's vocabulary site updates? Read on to find out!&lt;/p&gt;
&lt;h2 id="vocabulary-site-updates-edition-3/many-more-to-come"&gt;Vocabulary Site Updates (Edition 3/many more to come)&lt;/h2&gt;&lt;h3 id="what-i-ve-been-up-to"&gt;What I've been up to&lt;/h3&gt;&lt;center&gt;
&lt;img alt"Halfway There" src="merged.png"/&gt;&lt;br&gt;
&lt;small class="muted"&gt;The surreal feeling...&lt;/small&gt;
&lt;/center&gt;&lt;p&gt;Merged? Yes. &lt;strong&gt;Merged&lt;/strong&gt;. Here's my story!&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;After getting a thumbs up from the UX Designer, I put up my &lt;a href="https://github.com/cc-archive/vocabulary-legacy/pull/747"&gt;GSoD Website PR&lt;/a&gt; for review.&lt;/li&gt;
&lt;li&gt;I was confident there would be changes, and I let them roll in. It's important to note here that what seems perfect to you may not be so to others, and only experience teaches you the right from the wrong.&lt;/li&gt;
&lt;li&gt;There were a few of them, mainly dealing with spacing, textual content and colors. I resolved them as soon as I could.&lt;/li&gt;
&lt;li&gt;&lt;a href="/blog/authors/zackkrida/"&gt;zackkrida&lt;/a&gt; has been kind enough to point and enumerate all of them for me!&lt;/li&gt;
&lt;li&gt;After receiving a final approval from the engineering team, my PR was finally merged!&lt;/li&gt;
&lt;li&gt;The final draft of the vocabulary site is live! It will soon be deployed (on &lt;a href="https://netlify,com"&gt;Netlify&lt;/a&gt;) and be made available for public viewing.&lt;/li&gt;
&lt;li&gt;For my readers, here's &lt;a href="https://cc-vocab-draft.web.app"&gt;exclusive preview&lt;/a&gt; of the final draft.&lt;/li&gt;
&lt;li&gt;I've tried making it as optimised as possible, but if you have any inputs whatsoever feel free to raise issues over on our &lt;a href="https://github.com/creativecommons/vocabulary"&gt;GitHub repository&lt;/a&gt;.&lt;/li&gt;
&lt;li&gt;The famed &lt;a href="https://developers.google.com/web/tools/lighthouse"&gt;Lighthouse report&lt;/a&gt; suggests that it's a pretty good start! I've also taken care of the &lt;a href="https://www.w3.org/standards/webdesign/accessibility"&gt;accessibility aspect&lt;/a&gt; wherever applicable.&lt;/li&gt;
&lt;/ul&gt;
&lt;center&gt;
&lt;img alt"Halfway There" src="light.png"/&gt;&lt;br&gt;
&lt;small class="muted"&gt;Aiming high!&lt;/small&gt;
&lt;/center&gt;&lt;h3 id="what-i-ve-learnt"&gt;What I've learnt&lt;/h3&gt;&lt;ul&gt;
&lt;li&gt;GSoD isn't just about documentation; there's some serious amount of coding too!&lt;/li&gt;
&lt;li&gt;You don't have to sit and write code for hours together. Take breaks, come back, and the fix will strike you sooner than ever.&lt;/li&gt;
&lt;li&gt;Timelines change; improvisation being an essential aspect of any project!&lt;/li&gt;
&lt;li&gt;&lt;a href="https://mdxjs.com/"&gt;MDX&lt;/a&gt; is a neat little format to code in! Documenting code is just so much easier.&lt;/li&gt;
&lt;li&gt;Things become obsolete. Versions become outdated. Code maintaining is therefore, easier said than done!&lt;/li&gt;
&lt;/ul&gt;
&lt;h3 id="other-community-work-tidbits"&gt;Other community work tidbits&lt;/h3&gt;&lt;p&gt;Being a part of an open source organisation also means that I must try to bring in contributions from existing &amp;amp; first time contributors. Here's a peek into my efforts for the same:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;The &lt;a href="https://github.com/cc-archive/vocabulary-legacy/pull/806"&gt;dark mode PR&lt;/a&gt; started off as a hacktoberfest contribution, and it is now complete!&lt;/li&gt;
&lt;li&gt;Created a &lt;code&gt;/shared&lt;/code&gt; package to house common files between packages (such as the dark &amp;amp; light theme after referring to the &lt;a href="https://reactjs.org/"&gt;React&lt;/a&gt; documentation.&lt;/li&gt;
&lt;li&gt;The automated npm &lt;a href="https://github.com/cc-archive/vocabulary-legacy/pull/746"&gt;README.md customisation&lt;/a&gt; is now up and running. (really had a blast solving that issue!)&lt;/li&gt;
&lt;li&gt;If the snapshot testing stands approved, we'll have it running on chromatic!&lt;/li&gt;
&lt;li&gt;Raised issues to add multiple badges to the root README.md  file; namely &lt;code&gt;maintained with Lerna&lt;/code&gt; &amp;amp; custom badges for package sizes from &lt;a href="https://packagephobia.com/"&gt;packagephobia&lt;/a&gt;.&lt;/li&gt;
&lt;/ul&gt;
&lt;p align="center"&gt;
    &lt;strong&gt;Thank you for your time! Stay put for the season finale!&lt;/strong&gt;
&lt;/p&gt;</content></entry><entry><title>Finish GSoD Tasks and Explore CC Catalog Documentation</title><link href="http://opensource.creativecommons.org/blog/entries/finish-gsod-tasks-and-explore-cc-catalog-documentation/" rel="alternate"/><updated>2020-11-20T00:00:00Z</updated><author><name>['ariessa']</name></author><id>urn:uuid:cb15a8e1-87d2-37b4-b699-be579f80f08f</id><content type="html">&lt;p&gt;Today marks my fifth blog entry on Creative Commons.
For week 9 and 10, I explored CC Catalog documentation and began improving the documentation by removing keys and generalizing instructions.&lt;/p&gt;
&lt;h3 id="week-9"&gt;Week 9&lt;/h3&gt;&lt;p&gt;I had completed all GSoD tasks by week 9.
So, I took a couple of days off and fixed last week's PR.
Kriti assigned me with new tasks, which is to port CC Catalog documentation from the internal wiki into GitHub repository.
Brent, the CC Catalog maintainer explained to me about what needs to be done.&lt;/p&gt;
&lt;h3 id="week-10"&gt;Week 10&lt;/h3&gt;&lt;p&gt;For week 10, I started exploring CC Catalog and its documentation.
Reminds me a lot about the first and second weeks of GSoD.
Trying to understand new stuff and having an "aha" moment when the dots finally connect.
I started to move the documentation from the internal wiki to CC Catalog’s GitHub repository.
I also wrote and published this blog post.&lt;/p&gt;
&lt;hr&gt;
&lt;p&gt;End of blog entry.&lt;/p&gt;
</content></entry><entry><title>Content Creation Phase: WordPress Base Theme Usage Guide</title><link href="http://opensource.creativecommons.org/blog/entries/cc-wp-base-theme-docs-content-creation/" rel="alternate"/><updated>2020-11-10T00:00:00Z</updated><author><name>['JackieBinya']</name></author><id>urn:uuid:9ea78ea3-f8df-3d37-a0df-5297eb1c42df</id><content type="html">&lt;p&gt;For the past couple of weeks we have been actively creating content for the Creative Commons WordPress Base Theme Usage Guide. Currently the draft content is under final review before it is migrated to the main docs site.&lt;/p&gt;
&lt;h2 id="our-strategy"&gt;Our Strategy&lt;/h2&gt;&lt;p&gt;Our main goal in creating the docs is to create rich, intuitive, engaging, and beautifully presented community facing documentation for the Creative Commons WordPress Base Theme.&lt;/p&gt;
&lt;p&gt;In alignment with the defined goal, our core focus is to create the docs collaboratively.&lt;/p&gt;
&lt;p&gt;The CC WordPress team consists of I, Jacqueline Binya, Hugo Solar and Timid Robot Zehta. Although our team is small it is quite diverse. It consists of a diverse mix of technical skills: I am a junior developer whereas Hugo and Timid are way senior. We also have non-native and native English speakers.&lt;/p&gt;
&lt;p&gt;Diversity is important as we hope to create a high quality product that caters for everyone.&lt;/p&gt;
&lt;p&gt;My role as the tech writer/frontend developer is to create the content: write the documentation, build the docs site and also to create all illustrative media.&lt;/p&gt;
&lt;p&gt;During the content creation phase, the first step involved creating the skeleton of the actual docs site. We created a git branch called &lt;em&gt;docs&lt;/em&gt; within the &lt;a href="https://github.com/creativecommons/wp-theme-base"&gt;creative-commons/wp-base-theme&lt;/a&gt; repository. All content related to the documentation is persisted in that branch. So,please feel free to contribute. We then used &lt;a href="https://gridsome.org/starters/jamdocs/"&gt;JamDocs&lt;/a&gt;, a &lt;a href="https://gridsome.org/"&gt;Gridsome&lt;/a&gt; theme to quickly scaffold the site. We had to adapt the theme so as to make it meet our own specific needs, this involved overhauling the styles and changing the functionality of some of the features in the theme. After that was completed, we then created a &lt;a href="https://docs.google.com/document/d/1yfAQGG70T8BUhZYWglAlQ_lTo4_tYpyjhPN5FsZnSvI/edit?usp=sharing"&gt;Google Doc&lt;/a&gt; we use for collaboratively writing the draft content for the docs site.&lt;/p&gt;
&lt;h2 id="tech-stack"&gt;Tech Stack&lt;/h2&gt;&lt;p&gt;As it was mentioned we used &lt;a href="https://gridsome.org/"&gt;Gridsome&lt;/a&gt; a static generator for &lt;a href="https://vuejs.org/"&gt;Vuejs&lt;/a&gt;. We chose Gridsome because:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;p&gt;We wanted to lower the barrier of entry to contributing:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Gridsome/Vuejs community is very active, help is but a click away.&lt;/li&gt;
&lt;li&gt;The Gridsome official documentation is very resourceful and well maintained.&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Gridsome is highly flexible: The content for the actual documentation is written in &lt;a href="https://www.markdownguide.org/getting-started/"&gt;Markdown&lt;/a&gt; but using &lt;a href="https://gridsome.org/plugins/@gridsome/vue-remark"&gt;@gridsome/vue-remark&lt;/a&gt;, which is a Gridsome plugin, we are able to use javascript in Markdown. We intend to include a copy to the clipboard Vuejs component in the site.&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Time Constraint: This project is a short running project which has to be completed in a 3 month period. Through the use of JamDocs, a Gridsome templating theme as well various plugins it was easy and fast to get started we were able to add more functionality to the theme with minimal effort.&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Ease of integrating &lt;a href="https://cc-vocabulary.netlify.app/"&gt;CC Vocabulary&lt;/a&gt; with Gridsome: it is a requirement that the general aesthetics of all front facing Creative Commons applications is derived from the CC Vocabulary Design System. Major cons for using a design system include the ensuring uniformity in design for all front facing CC products.&lt;/p&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 id="tools-used"&gt;Tools Used&lt;/h2&gt;&lt;ul&gt;
&lt;li&gt;&lt;a href="https://www.figma.com/"&gt;Figma&lt;/a&gt;:&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;&lt;img src="/blog/entries/cc-wp-base-theme-docs-content-creation/image.png" alt="An example of illustrative media"&gt;&lt;/p&gt;
&lt;p&gt;Figma was used to make assets(banners, logos and illustrations) in the theme. The illustrative media was created with accessibility in mind and all the topography used in the illustrative assets was derived from the CC Vocabulary.&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;p&gt;&lt;a href="https://linuxecke.volkoh.de/vokoscreen/vokoscreen.html"&gt;VokoScreenNG&lt;/a&gt;: an open source screencast recording tool used to record all the screen cast demos available in the docs site.&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;a href="https://shotcut.org/"&gt;ShortCut&lt;/a&gt;: an open source video editing tool.&lt;/p&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 id="what-comes-next"&gt;What comes next ?&lt;/h2&gt;&lt;p&gt;After the final review is completed and all feedback implemented we will migrate all the content to the main docs site.&lt;/p&gt;
&lt;p&gt;&lt;em&gt;Stay tuned for an update about the launch of the CC WP Base Theme Docs site.&lt;/em&gt;&lt;/p&gt;
</content></entry><entry><title>Vocabulary Site Mid-Internship Update (v2)</title><link href="http://opensource.creativecommons.org/blog/entries/cc-vocabulary-docs-updates-2/" rel="alternate"/><updated>2020-11-09T00:00:00Z</updated><author><name>['nimishbongale']</name></author><id>urn:uuid:8222e673-fc0d-31e0-b068-bc802bdb5459</id><content type="html">&lt;p&gt;This is a mid-internship blog post. Wait. what!? Already? Let's glance over my progress, shall we?&lt;/p&gt;
&lt;h2 id="vocabulary-site-updates-edition-2/many-more-to-come"&gt;Vocabulary Site Updates (Edition 2/many more to come)&lt;/h2&gt;&lt;p&gt;Oh boy! 1.5 months have passed since I've been investing time in building a landing site &amp;amp; usage guide for CC Vocabulary. A lot has changed since the time of posting my last blog post. &lt;strong&gt;A lot&lt;/strong&gt;.&lt;/p&gt;
&lt;center&gt;
&lt;img alt"Halfway There" src="speed.gif"/&gt;&lt;br&gt;
&lt;small class="muted"&gt;Hitting "the point of no return" has never been this exciting! Time to step on the throttle! Source: &lt;a href="https://cliply.co"&gt;Cliply&lt;/a&gt;&lt;/small&gt;
&lt;/center&gt;&lt;h3 id="what-i-ve-been-up-to"&gt;What I've been up to&lt;/h3&gt;&lt;blockquote&gt;&lt;p&gt;&lt;strong&gt;Designing&lt;/strong&gt; ⇨ &lt;strong&gt;Drafting&lt;/strong&gt; ⇨ &lt;strong&gt;Developing&lt;/strong&gt; ⇨ &lt;strong&gt;Debugging&lt;/strong&gt; ⇨ &lt;strong&gt;Deploying&lt;/strong&gt;&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;And the cycle contrinues. I guess it sums it all up very nicely. &lt;em&gt;Can somebody appreciate the alliteration though?&lt;/em&gt;&lt;/p&gt;
&lt;p&gt;Here's a gist of what I've achieved so far:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;I've gone through &lt;strong&gt;2&lt;/strong&gt; iterations of the design. I'm happy with how the new site looks (and I genuinely hope the design team does too!).&lt;/li&gt;
&lt;li&gt;I've drafted around &lt;strong&gt;5+&lt;/strong&gt; writeups dealing with Monorepo Migration, Getting Started guide, Vocabulary Overview and of course these blog posts.&lt;/li&gt;
&lt;li&gt;My branch on the vocabulary repository now has over &lt;strong&gt;50+&lt;/strong&gt; commits &amp;amp; over &lt;strong&gt;13,000&lt;/strong&gt; lines of code (not that I've written all of them, but you know, just for the stats)&lt;/li&gt;
&lt;li&gt;The first draft of the vocabulary site is now live! I'm expecting a whole bunch of changes still, but here it is if you want to have a sneak peek: &lt;a href="https://cc-vocab-draft.surge.sh"&gt;https://cc-vocab-draft.surge.sh&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;I've consumed the &lt;a href="https://docs.github.com/en/free-pro-team@latest/rest"&gt;Github API&lt;/a&gt; to get live release history, forks and starrers count. I think it adds a really nice touch to the site in general.&lt;/li&gt;
&lt;li&gt;I've used &lt;a href="https://surge.sh"&gt;surge.sh&lt;/a&gt; to deploy the draft site. I believe it's a really simple tool to have your site deployed within seconds!&lt;/li&gt;
&lt;/ul&gt;
&lt;center&gt;
&lt;img alt"Github commit gif" src="github.png"/&gt;&lt;br&gt;
&lt;small class="muted"&gt;My github contribution chart is filling up!&lt;/small&gt;
&lt;/center&gt;&lt;h3 id="what-i-ve-learnt"&gt;What I've learnt&lt;/h3&gt;&lt;p&gt;Some say it's hard to learn through virtual internships. Well, let me prove you wrong. Here are my leanings in the past few weeks:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;It's surprising how subjective (&amp;amp; yet objective) designing really is.&lt;/li&gt;
&lt;li&gt;Vue.js is &lt;em&gt;fantastic&lt;/em&gt;. Maybe I'm a Vue.js fan now. Should I remain loyal to React? I don't know.&lt;/li&gt;
&lt;li&gt;Making a site responsive isn't the &lt;em&gt;easiest&lt;/em&gt; of tasks, but it's certainly doable after a lot of stretching &amp;amp; compressing; lets say that.&lt;/li&gt;
&lt;li&gt;"Code formatting is essential" would be an &lt;em&gt;understatement&lt;/em&gt; to make.&lt;/li&gt;
&lt;li&gt;Monorepo's have their own pro's and con's. But in our case the con's were negligible, thankfully!&lt;/li&gt;
&lt;li&gt;I'll be following up with some performance &amp;amp; accessibility testing this coming week, so let's see how that plays out!&lt;/li&gt;
&lt;li&gt;A mentor plays a vital role in any project. My mentor &lt;code&gt;@dhruvkb&lt;/code&gt; has been very supportive and has made sure I stick to my timeline!&lt;/li&gt;
&lt;/ul&gt;
&lt;h3 id="other-community-work-tidbits"&gt;Other community work tidbits&lt;/h3&gt;&lt;p&gt;I believe apart from the internship work that I'm engaged in, I should also help around with some community PR work. I've been told I'm always welcome to, which is great!&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;I got the opportunity to speak at a CCOS event alongwith fellow speakers &lt;a href="/blog/authors/dhruvkb/"&gt;dhruvkb&lt;/a&gt; &amp;amp; &lt;a href="/blog/authors/dhruvi16/"&gt;dhruvi16&lt;/a&gt;. I had a blast talking to budding students from DSC-IIT Surat &amp;amp; DSC-RIT.&lt;/li&gt;
&lt;li&gt;The dark mode (as promised) should be out before my next blog post.&lt;/li&gt;
&lt;li&gt;Deployed the vocabulary storybook on &lt;a href="https://chromatic.com"&gt;Chromatic&lt;/a&gt; and compared &amp;amp; contrasted the pros &amp;amp; cons. Snapshot testing in the near future maybe?&lt;/li&gt;
&lt;li&gt;Completed the hacktoberfest challenge.&lt;/li&gt;
&lt;/ul&gt;
&lt;h3 id="bonus-content"&gt;Bonus content&lt;/h3&gt;&lt;p&gt;Not many of you may know this, but this site uses the &lt;a href="https://getlektor.com"&gt;Lektor&lt;/a&gt; CMS. I needed to have it installed on my system (windows 10 OS) to run the code in our site repository.
Lektor suggests running the following code in powershell as an installation step:&lt;/p&gt;
&lt;div class="hll"&gt;&lt;pre&gt;&lt;span&gt;&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nb"&gt;new-object&lt;/span&gt; &lt;span class="n"&gt;net&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="n"&gt;webclient&lt;/span&gt;&lt;span class="p"&gt;).&lt;/span&gt;&lt;span class="n"&gt;DownloadString&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="s1"&gt;&amp;#39;https://www.getlektor.com/installer.py&amp;#39;&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt; &lt;span class="p"&gt;|&lt;/span&gt; &lt;span class="n"&gt;python&lt;/span&gt;
&lt;/pre&gt;&lt;/div&gt;
&lt;p&gt;I just didn't think this is a very elegant way. Being an ardent &lt;a href="/blog/entries/cc-vocabulary-docs-updates-2/chocolatey.org"&gt;chocolatey.org&lt;/a&gt; fan, I just had to have it up on there! Now the installation step for lektor is simply:&lt;/p&gt;
&lt;div class="hll"&gt;&lt;pre&gt;&lt;span&gt;&lt;/span&gt;&lt;span class="n"&gt;choco&lt;/span&gt; &lt;span class="n"&gt;install&lt;/span&gt; &lt;span class="n"&gt;lektor&lt;/span&gt;
&lt;/pre&gt;&lt;/div&gt;
&lt;p&gt;on the Windows PowerShell!&lt;/p&gt;
&lt;p&gt;Have a look at the package here:&lt;/p&gt;
&lt;p&gt;&lt;a href="https://chocolatey.org/packages/lektor"&gt;https://chocolatey.org/packages/lektor&lt;/a&gt;&lt;/p&gt;
&lt;p align="center"&gt;
    &lt;strong&gt;Thank you for your time! Stay put for the next Vocabulary site update!&lt;/strong&gt;
&lt;/p&gt;</content></entry><entry><title>Restructure README and Add Documentation Guidelines</title><link href="http://opensource.creativecommons.org/blog/entries/restructure-readme-and-add-documentation-guidelines/" rel="alternate"/><updated>2020-11-05T00:00:00Z</updated><author><name>['ariessa']</name></author><id>urn:uuid:9d0c575b-8276-32b1-a4e5-42c2674b4e36</id><content type="html">&lt;p&gt;This is my fourth blog entry on Creative Commons.
For week 7 and 8, I restructured the file README to be more digestible to new users and created Documentation Guidelines for CC Catalog API documentation.&lt;/p&gt;
&lt;h3 id="week-7"&gt;Week 7&lt;/h3&gt;&lt;p&gt;For this week, I restructured the file README in CC Catalog API repository.
I added a step by step guide on how to run the server locally.
I hope new users will be less intimidated to contribute to this project with the updated guide on how to run the server locally.&lt;/p&gt;
&lt;h3 id="week-8"&gt;Week 8&lt;/h3&gt;&lt;p&gt;For week 8, I created Documentation Guidelines which provides steps on how to contribute to CC Catalog API documentation, documentation styles, and cheat sheet for drf-yasg.
I also wrote and published this blog post.&lt;/p&gt;
&lt;hr&gt;
&lt;p&gt;Finis.&lt;/p&gt;
</content></entry><entry><title>Vocabulary Site Updates (v1)</title><link href="http://opensource.creativecommons.org/blog/entries/cc-vocabulary-docs-updates-1/" rel="alternate"/><updated>2020-10-26T00:00:00Z</updated><author><name>['nimishbongale']</name></author><id>urn:uuid:34777cb0-bbaa-3e90-90e9-72d944d86abf</id><content type="html">&lt;p&gt;Hello there! Well well well. It has been an eventful first few weeks, to say the least! Let's gauge my progress, shall we?&lt;/p&gt;
&lt;h2 id="vocabulary-site-updates-edition-1/many-more-to-come"&gt;Vocabulary Site Updates (Edition 1/many more to come)&lt;/h2&gt;&lt;h3 id="what-i-ve-been-upto"&gt;What I've been upto&lt;/h3&gt;&lt;p&gt;I've mainly got myself invested in a survey of the existing documentation that vocabulary currently possesses, and find places where it could be made better. After clearing those issues out, I began building the main landing site for &lt;code&gt;Vocabulary&lt;/code&gt;, &lt;code&gt;Vue-vocabulary&lt;/code&gt; and &lt;code&gt;Fonts&lt;/code&gt;. It wasn't particularly difficult to establish the necessary workflows as I had done something similar before. During the process of designing the basic structure of the site, I came across a few instances where I felt we needed new/improved components &amp;amp; I discussed the same with my team over on the sprint calls. The design of the site is nearly done. I'm also building the site parallelly &amp;amp; seeking approval from the CC Design Team. I've gotten myself involved in multiple other community contributions to CC as well across multiple of our repositories.&lt;/p&gt;
&lt;h3 id="what-i-ve-learnt"&gt;What I've learnt&lt;/h3&gt;&lt;ul&gt;
&lt;li&gt;Knowing the previously existing code in your project is of serious essence. It's important to understand the code styles, structure &amp;amp; activity of the code that you are dealing with.&lt;/li&gt;
&lt;li&gt;Be patient! Its fine to delay something if it makes sense to have it logically accomplished only after certain other tasks are done &amp;amp; dusted with.&lt;/li&gt;
&lt;li&gt;How essential it is to write &lt;em&gt;neat code&lt;/em&gt; is something that's not spoken too often. (I wonder why...)&lt;/li&gt;
&lt;li&gt;I always thought VueJS sets up SPA's by default. I'm surprised you need to configure it additionally to do just that!&lt;/li&gt;
&lt;li&gt;Storybook is just a really nifty OSS with great community support!&lt;/li&gt;
&lt;/ul&gt;
&lt;h3 id="other-community-work-tidbits"&gt;Other community work tidbits&lt;/h3&gt;&lt;ul&gt;
&lt;li&gt;I've been working on the Dark Mode (a much awaited feature, at least for me!) for our storybooks with some support from our community. It should be up and running shortly!&lt;/li&gt;
&lt;li&gt;Fixed some formatting bugs in the &lt;code&gt;README.md&lt;/code&gt; &amp;amp; suggested changes wrt to &lt;code&gt;npm v7&lt;/code&gt; considerations.&lt;/li&gt;
&lt;li&gt;Fixed storybook components docs for 2 features.&lt;/li&gt;
&lt;li&gt;Raised a ticket for a component to render markdown text within vocabulary itself.&lt;/li&gt;
&lt;li&gt;Raised a few other issues for potential hacktoberfest contributions.&lt;/li&gt;
&lt;/ul&gt;
&lt;p align="center"&gt;
    &lt;strong&gt;Thank you for your time! To be continued...&lt;/strong&gt;
&lt;/p&gt;</content></entry><entry><title>Add New Sections, Descriptions, Help Texts, Code Examples, Schemas, and Serializers</title><link href="http://opensource.creativecommons.org/blog/entries/add-new-sections-descriptions-help-texts-code-examples-schemas-and-serializers/" rel="alternate"/><updated>2020-10-21T00:00:00Z</updated><author><name>['ariessa']</name></author><id>urn:uuid:43320831-236b-305f-8ed1-eec9bb877b09</id><content type="html">&lt;p&gt;Welcome to my third blog entry! For week 5 and 6, I added new sections, descriptions, help texts, code examples, schemas, and serializers. I was so productive these past two weeks.&lt;/p&gt;
&lt;h3 id="week-5"&gt;Week 5&lt;/h3&gt;&lt;p&gt;For this week, I managed to add a lot of stuff into the documentation.
I figured out how to add help texts to classes and how to create serializers.
I also managed to move all code examples under response samples.
In order to do this, I created a new class called CustomAutoSchema to add &lt;a href="https://github.com/Redocly/redoc/blob/master/docs/redoc-vendor-extensions.md#x-codesamples"&gt;x-code-samples&lt;/a&gt;.
Other stuff that I did include creating new sections such as “Register and Authenticate” and “Glossary”.
The hardest part of this week is probably trying to figure out how to add request body examples and move code examples.&lt;/p&gt;
&lt;h3 id="week-6"&gt;Week 6&lt;/h3&gt;&lt;p&gt;For week 6, I added another section called Contribute that provides a todolist to start contributing on Github.
I also wrote and published this blog post.&lt;/p&gt;
&lt;hr&gt;
&lt;p&gt;All caught up!&lt;/p&gt;
</content></entry><entry><title>Add Response Samples and Descriptions for API Endpoints</title><link href="http://opensource.creativecommons.org/blog/entries/add-response-samples-and-descriptions-for-api-endpoints/" rel="alternate"/><updated>2020-10-09T00:00:00Z</updated><author><name>['ariessa']</name></author><id>urn:uuid:960bbb95-4421-36be-87c0-9b7972a19ca8</id><content type="html">&lt;p&gt;Well, hello again 👋! For week 3 and week 4, I added response samples and descriptions for API endpoints. Writing documentation feels a bit like coding at this point because I need to read a lot about drf-yasg, dig through issues and questions at Github / Stackoverflow to ensure that I don’t ask redundant (or even stupid) questions.&lt;/p&gt;
&lt;h3 id="week-3"&gt;Week 3&lt;/h3&gt;&lt;p&gt;Week 3 was quite hectic. I moved back to my hometown during week 3.
Took 3 days off to settle my stuff and set up a workspace.
I worked on my GSoD project for only 2 days, Monday and Tuesday.
I managed to create response samples for most API endpoints.
Had a monthly video call with Kriti this week.&lt;/p&gt;
&lt;h3 id="week-4"&gt;Week 4&lt;/h3&gt;&lt;p&gt;For this week, I reviewed what I’ve done and what I haven’t to estimate new completion time.
Thank god, I have a buffer week in my GSoD timeline and deliverables.
So yeah, all is good in terms of completion time.
I started to write descriptions for API endpoints.
Submitted first PR and published blog entry.&lt;/p&gt;
&lt;hr&gt;
&lt;p&gt;Over and out.&lt;/p&gt;
</content></entry><entry><title>Vocabulary Site &amp; Usage Guide Introduction (GSoD'20)</title><link href="http://opensource.creativecommons.org/blog/entries/cc-vocabulary-docs-intro/" rel="alternate"/><updated>2020-10-02T00:00:00Z</updated><author><name>['nimishbongale']</name></author><id>urn:uuid:28ffb4e1-b12b-31ab-80dc-ce80b9ab7f68</id><content type="html">&lt;p&gt;Hey there! I'm Nimish Bongale, a Technical Writer &amp;amp; Software Developer based out of Bangalore, India. My other hobbies include playing chess and the guitar. I look forward to build the CC Vocabulary site and usage guides as a part of GSoD'20.&lt;/p&gt;
&lt;h2 id="but-what-is-gsod"&gt;But what is GSoD?&lt;/h2&gt;&lt;p&gt;GSoD, or Google Season of Docs, is a program that stresses on the importance of the documentation aspect of Open Source projects. It invites technical writers from across the world to submit proposals based on projects floated in by the participating Open Source Organisations. The selected technical writers then work with the their respective organisations and look to complete their work by the end of their internship period. More information about the same can be found &lt;a href="https://developers.google.com/season-of-docs"&gt;here&lt;/a&gt;.&lt;/p&gt;
&lt;p&gt;Let's talk a bit about my project, shall we?&lt;/p&gt;
&lt;h2 id="vocabulary-site-usage-guide"&gt;Vocabulary Site &amp;amp; Usage Guide&lt;/h2&gt;&lt;h3 id="introduction"&gt;Introduction&lt;/h3&gt;&lt;p&gt;&lt;a href="https://github.com/creativecommons/vocabulary"&gt;CC Vocabulary&lt;/a&gt; is a cohesive design system &amp;amp; Vue component library to unify the web-facing Creative Commons. It's currently comprised of 3 packages, namely Vocabulary, Vue-Vocabulary &amp;amp; Fonts. My contribution to this project would majorly involve building the landing site for CC Vocabulary, and refactor the documentation wherever necessary.&lt;/p&gt;
&lt;h3 id="what-drives-me"&gt;What drives me&lt;/h3&gt;&lt;p&gt;Documentation is one of the primary reasons which determines how successful a certain open source library will be. The major question that developers think of while choosing a suitable tech stack to build their applications is:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Is the library &lt;em&gt;well documented&lt;/em&gt;?&lt;/li&gt;
&lt;li&gt;Is it &lt;em&gt;well maintained&lt;/em&gt;?&lt;/li&gt;
&lt;li&gt;Does it have some &lt;em&gt;considerable usage and error support&lt;/em&gt;?&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;These are exactly the questions I should be asking myself while going about this project idea.&lt;/p&gt;
&lt;p&gt;As aforementioned, there is an immanent need to have a concise and consolidated documentation. The lack of documentation hurts the future perspectives of open source applications, and is by far, an essential and non-negligible component. Linking to these documentations should be an appealing home page, which captures the interest of the people in an instant. The documentation should be well organised, thereby enabling a seamless flow through it.&lt;/p&gt;
&lt;h3 id="tech-stack-of-the-project"&gt;Tech stack of the project&lt;/h3&gt;&lt;p&gt;We have decided to move forward with &lt;a href="https://vuejs.org/"&gt;Vuejs&lt;/a&gt; for building the site, and continue work on the existing &lt;a href="https://storybook.js.org/"&gt;storybooks&lt;/a&gt; of Vocabulary, Vue-Vocabulary and Fonts. Storybookjs has had some great improvements in recent times, and the new addons that are offered will greatly support my work. Besides these, I will also be using &lt;a href="https://stackedit.io/"&gt;StackEdit&lt;/a&gt; to write and share Markdown files of my writings.&lt;/p&gt;
&lt;h3 id="progress-baby-steps"&gt;Progress - Baby Steps&lt;/h3&gt;&lt;p&gt;I have contributed to CC in the past. It would now be my first time contributing to a specific project within CC, while being a member of CC Open Source. Some tasks that I've been able to initiate/accomplish so far:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Look at Open Source documentation conventions, and see if we violate any.&lt;/li&gt;
&lt;li&gt;Understand the level of existing documentation currently present in our storybooks.&lt;/li&gt;
&lt;li&gt;Discuss about the Monorepo migration and help out with the implementation.&lt;/li&gt;
&lt;li&gt;Migrate &lt;code&gt;storybookjs&lt;/code&gt; to the latest version.&lt;/li&gt;
&lt;li&gt;Implement &lt;code&gt;addon-controls&lt;/code&gt; for vocabulary.&lt;/li&gt;
&lt;li&gt;Design the vocabulary site.&lt;/li&gt;
&lt;li&gt;Promote the involvement of CC Open Source in &lt;a href="https://hacktoberfest.digitalocean.com/"&gt;Hacktoberfest&lt;/a&gt; 2020.&lt;/li&gt;
&lt;/ul&gt;
&lt;h3 id="what-did-i-learn"&gt;What did I learn?&lt;/h3&gt;&lt;ul&gt;
&lt;li&gt;Design is more than just picking colors and placing components on a grey screen.&lt;/li&gt;
&lt;li&gt;It's important to read your own writings from an unbiased perspective to actually understand how well it would be perceived.&lt;/li&gt;
&lt;li&gt;Interacting with your mentor on a regular basis is of the absolute essence.&lt;/li&gt;
&lt;li&gt;Publishing to &lt;a href="/blog/entries/cc-vocabulary-docs-intro/npmjs.com"&gt;npmjs&lt;/a&gt; is not difficult!&lt;/li&gt;
&lt;/ul&gt;
&lt;p align="center"&gt;
    &lt;strong&gt;Thank you for your time!&lt;/strong&gt;
&lt;/p&gt;</content></entry><entry><title>Creative Commons WordPress plugin: attribution for images</title><link href="http://opensource.creativecommons.org/blog/entries/cc-wp-plugin-attribution-for-images/" rel="alternate"/><updated>2020-10-01T00:00:00Z</updated><author><name>['rczajka']</name></author><id>urn:uuid:49e0ab27-05c5-339a-b5f8-a7bcc2d7548b</id><content type="html">&lt;p&gt;As a part of &lt;a href="https://centrumcyfrowe.pl"&gt;Centrum Cyfrowe&lt;/a&gt;'s &lt;a href="https://otwartakultura.org/noworries/"&gt;#NoWorries project&lt;/a&gt; funded by EUIPO,
I have had the pleasure of enhancing the Creative Commons Wordpress plugin.
The new version of CC's Wordpress plugin has a feature called
“attribution information for images”. It works like this:&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;you upload an image to the Wordpress Media Library and fill out the
correct attribution information there.&lt;/li&gt;
&lt;li&gt;You then insert the image into a page using the Image Gutenberg block.&lt;/li&gt;
&lt;li&gt;When the image is then displayed on site, the plugin will show the
attribution information – the name of the author, the image's title
and link to source, and the CC license used – right there, in a nice
semi-transparent overlay over the image.&lt;/li&gt;
&lt;/ol&gt;
&lt;h2 id="how-does-it-work"&gt;How does it work?&lt;/h2&gt;&lt;p&gt;To find the relevant information from the Media Library, the plugin
reuses the information already provided by Gutenberg Image Blocks.
Each time an image is inserted using such a block, Wordpress adds a
special CSS class to it, in the form of &lt;code&gt;wp-image-{id}&lt;/code&gt;, containing
the image's identifier in the Media Library. It can be used to add
individual styles to a specific image – we're using it to find the
relevant entry in the Media Library and add individual attribution
information. With this approach, we avoid the need for any custom
markup – while also only hitting the database with a query when an
actual image from the Media Library is found on the page.&lt;/p&gt;
&lt;p&gt;All you need to do is make sure the licensing information is there in
the Media Library, and that the images are inserted using the Image
block.&lt;/p&gt;
&lt;p&gt;This wasn't the first attempt at adding a similar function to the CC
Wordpress plugin. The previous attempt used a &lt;code&gt;[license]&lt;/code&gt; shortcode
wrapping the image – which it's unwieldy with the current Wordpress
Gutenberg editor. It also used multiple calls to
&lt;code&gt;attachment_url_to_postid&lt;/code&gt; to locate the image in the Media Library, which
meant executing more database queries for each image. With the new
approach, the user doesn't have to change their posts at all – all
they need to do is install the plugin and add attribution information
in the Media Library, and it will automatically start working for
their normally inserted images.&lt;/p&gt;
&lt;p&gt;See here how to install the plugin:&lt;/p&gt;
&lt;video src="install.mp4" controls&gt;&lt;/video&gt;&lt;p&gt;See here how to use the image attribution function:&lt;/p&gt;
&lt;video src="use.mp4" controls&gt;&lt;/video&gt;</content></entry><entry><title>WordPress Base Theme Usage Guide (GSOD-2020): Hello World!</title><link href="http://opensource.creativecommons.org/blog/entries/cc-wp-base-theme-docs-intro/" rel="alternate"/><updated>2020-09-30T00:00:00Z</updated><author><name>['JackieBinya']</name></author><id>urn:uuid:e8753062-5d8f-3a0f-a5b8-93d23e48f56d</id><content type="html">&lt;p&gt;My name is Jacqueline Binya. I am a software developer and technical writer from Zimbabwe. I am going to write a series of blog posts documenting my experience and lessons as I contribute to the &lt;a href="https://github.com/creativecommons/wp-theme-base"&gt;Creative Commons WordPress Base Theme(CC WP Base Theme)&lt;/a&gt; during the &lt;a href="https://developers.google.com/season-of-docs"&gt;Google Season of Docs (GSOD-2020)&lt;/a&gt; as a technical writer.&lt;/p&gt;
&lt;h2 id="what-is-google-season-of-docs"&gt;What is Google Season of Docs?&lt;/h2&gt;&lt;p&gt;The Google Season of the Docs was born out of a need to improve the quality of open-source documentation as well as to advocate for open source, for documentation, and for technical writing. Annually during the GSOD, technical writers are invited to contribute to open-source projects through a highly intensive process geared at ensuring that the technical writers and the projects they contribute to during GSOD are a good fit, after that has been determined GSOD then resumes.&lt;/p&gt;
&lt;h2 id="building-the-docs"&gt;Building the docs&lt;/h2&gt;&lt;p&gt;The CC WP Base theme is a WordPress theme used to create front-facing Creative Commons (CC) websites. My task is to collaborate with the engineering team to create community facing docs for the theme.&lt;/p&gt;
&lt;h3 id="guiding-principles"&gt;Guiding principles&lt;/h3&gt;&lt;p&gt;The docs should be inclusive meaning: they should be written in an easy-to-understand manner taking care to avoid the use of excessive technical jargon, they should be accessible and they should have support for internationalization. We hope to provide our users with a smooth and memorable experience whilst using the docs hence the docs site should be fast and easy to navigate.&lt;/p&gt;
&lt;h3 id="technical-stack-of-the-project"&gt;Technical stack of the project&lt;/h3&gt;&lt;p&gt;We decided to build the docs using &lt;a href="https://jamstack.org/"&gt;Jamstack&lt;/a&gt;, to be specific we are using  &lt;a href="https://gridsome.org/"&gt;Gridsome&lt;/a&gt; a static generator for &lt;a href="https://vuejs.org/"&gt;Vuejs&lt;/a&gt;. We are using Gridsome as it is highly performant, and it also integrates smoothly with the &lt;a href="https://cc-vocabulary.netlify.app/"&gt;CC Vocabulary&lt;/a&gt;. Gridsome also has out-of-the-box support for important features like Google Analytics and &lt;a href="https://www.algolia.com/"&gt;Angolia&lt;/a&gt;, these features will obviously be useful in future iterations of the docs. To quickly scaffold the docs we used a Gridsome theme called &lt;a href="https://gridsome.org/starters/jamdocs/"&gt;JamDocs&lt;/a&gt;.&lt;/p&gt;
&lt;h3 id="progress"&gt;Progress&lt;/h3&gt;&lt;p&gt;Currently, the project is on track. As it's been stated we are creating the docs collaboratively. The very first step in our workflow is to create draft content using Google docs. That task is assigned to me, it involves doing lots of research, reading and also testing out the theme. Afterwards, my mentors Hugo Solar and Timid Robot Zehta then give me feedback on the draft. Then I implement the feedback and continuously work on improvements. The final step is migrating the approved draft content to the docs projects in markdown format.&lt;/p&gt;
&lt;h3 id="my-lessons-so-far"&gt;My lessons so far:&lt;/h3&gt;&lt;ul&gt;
&lt;li&gt;Always ask questions: frankly, the only way you can create good content is when you have a solid understanding of the subject matter.&lt;/li&gt;
&lt;li&gt;It's better to over-communicate than under-communicate especially when working in a remotely, this is especially more important if you encounter blockers whilst executing your work.&lt;/li&gt;
&lt;li&gt;Push that code and open PR quickly and then go ahead and ask for a review don't procrastinate this will ensure  fast turnover you get feedback quickly and can work on improvements.&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;&lt;em&gt;Thank you for reading, watch out for the next update which will be posted soon.&lt;/em&gt;&lt;/p&gt;
</content></entry><entry><title>Add Query Using curl Command and Provide Response Samples</title><link href="http://opensource.creativecommons.org/blog/entries/add-query-using-curl-command-and-provide-response-samples/" rel="alternate"/><updated>2020-09-25T00:00:00Z</updated><author><name>['ariessa']</name></author><id>urn:uuid:f7441253-e7b7-3e14-86d5-b455887028de</id><content type="html">&lt;p&gt;First of all, I’m very thankful to get selected as a Google Season of Docs participant under Creative Commons. My project name is Improve CC Catalog API Usage Guide. The project aims to revamp the existing CC Catalog API documentation to include more narrative elements and increase user friendliness. As the focal point of this project will potentially be delivered before the end of the GSOD period, this project will also improve the CC Catalog API repo documentation for potential contributors. This project will also produce guidelines for contributing to documentation. For this project, my mentor is Alden Page.&lt;/p&gt;
&lt;h3 id="week-1"&gt;Week 1&lt;/h3&gt;&lt;p&gt;So, the first two weeks of Google Season of Docs have passed. For the first week, I added examples to perform the query using curl command. I hit some problem with a Forbidden error. Turns out my access key got expired. My problem was solved after obtaining a new access key.&lt;/p&gt;
&lt;h3 id="week-2"&gt;Week 2&lt;/h3&gt;&lt;p&gt;For the second week, I started to write response samples. It was tough as I have a hard time understanding &lt;a href="https://github.com/axnsan12/drf-yasg"&gt;drf-yasg&lt;/a&gt;, which is an automatic Swagger generator. It can produce Swagger / OpenAPI 2.0 specifications from a Django Rest Framework API. I tried to find as many examples as I could to increase my understanding. Funny, but it took me awhile to realise that drf-yasg is not made up of random letters. The DRF part stands for Django Rest Framework while YASG stands for Yet Another Swagger Generator.&lt;/p&gt;
&lt;hr&gt;
&lt;p&gt;That’s all!&lt;/p&gt;
</content></entry><entry><title>The specifics - Revamping CCOS</title><link href="http://opensource.creativecommons.org/blog/entries/the-specifics-revamping-CCOS/" rel="alternate"/><updated>2020-09-02T00:00:00Z</updated><author><name>['dhruvi16']</name></author><id>urn:uuid:9fcf46c8-a613-316f-ab20-15a9292b490b</id><content type="html">&lt;p&gt;In this blog, I will be talking about how I managed to use Vocabulary ( Creative Commons's Design Library ) efficiently in our Open Source website.&lt;/p&gt;
&lt;h3 id="what-is-vocabulary"&gt;What is Vocabulary?&lt;/h3&gt;&lt;p&gt;&lt;a href="https://cc-vocabulary.netlify.app/?path=/story/vocabulary-introduction--page"&gt;Vocabulary&lt;/a&gt; is a cohesive design system to unite the web-facing Creative Commons. In essence Vocabulary is a component library that uses and extends Bulma CSS library. Vocabulary makes it easier to develop Creative Commons apps while ensuring a consistently familiar experience. This project is still under development.&lt;/p&gt;
&lt;h3 id="why-vocabulary"&gt;Why Vocabulary?&lt;/h3&gt;&lt;p&gt;Vocabulary is used to describe the overall visual design of our digital products. At first glance, it appears to be: an amalgamation of component designs with a consistent visual aesthetic and brand, typically accompanied by usage guidelines in the form of online documentation. But there is a lot more to it.
When it comes to a large software community with a huge range of products, certain problems come along. One of those problems is maintaining the level of harmony across all the products of the network. So, there comes a need for a unified visual language that heightens the level of harmony in a digital ecosystem. And in our case, Vocabulary solves this problem.
This design system is well built and helps us bring the following aspects to the table -&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;Recognizability&lt;/li&gt;
&lt;li&gt;Consistency&lt;/li&gt;
&lt;li&gt;Authenticity&lt;/li&gt;
&lt;li&gt;Efficiency&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;And many more.&lt;/p&gt;
&lt;h3 id="how-did-i-use-it-examples"&gt;How did I use it? — Examples&lt;/h3&gt;&lt;p&gt;As I stated before, I have added Vocabulary by updating all the Templates in the CCOS &lt;a href="https://www.getlektor.com/"&gt;Lektor&lt;/a&gt; project.&lt;/p&gt;
&lt;p&gt;As far as components are concerned, I just had to paste the code snippets given on the Vocabulary’s website with the requires changes -&lt;/p&gt;
&lt;h4 id="integration-of-breadcrumb"&gt;Integration of Breadcrumb -&lt;/h4&gt;&lt;figure style="text-align: center;"&gt;
    &lt;img src="breadcrumb.png" alt="Breadcrumb"&gt;
    &lt;figcaption&gt;Screenshot — &lt;a href="https://cc-vocabulary.netlify.app/?path=/docs/navigation-breadcrumb--default-story"&gt;Breadcrumb&lt;/a&gt; (Vocabulary)&lt;/figcaption&gt;
&lt;/figure&gt;&lt;p&gt;The code for integration —&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;&amp;lt;!-- Breadcrumb --&amp;gt;
  {% if this._path !=  '/'%}
    &amp;lt;div class="breadcrumb-container"&amp;gt;
      &amp;lt;nav class="container breadcrumb caption bold" aria-label="breadcrumbs"&amp;gt;
        &amp;lt;ul&amp;gt;
          {% set crumbs = [] %}
          {% set current = {'crumb': this} %}
          &amp;lt;!-- Extracting the slugs of URL --&amp;gt;
          {% for i in this._path.split("/") %}
            {% if current.crumb is not none %}
              {% if crumbs.insert(0, current.crumb._slug) %}{% endif %}
              {% if current.update({"crumb": current.crumb.parent}) %}{% endif %}
            {% endif %}
          {% endfor %}
          {% for crumb in crumbs %}
            &amp;lt;!-- Active link --&amp;gt;
            {% if this._slug == crumb %}
              &amp;lt;li class="is-active"&amp;gt;&amp;lt;a aria-current="page displayed"&amp;gt;{{ crumb | title | replace('-', ' ') }}&amp;lt;/a&amp;gt;&amp;lt;/li&amp;gt;
            {% else %}
              &amp;lt;!-- Forming the URL using extracted slugs --&amp;gt;
              {% set i = loop.index %}
              {% set ns = namespace (link = '') %}
              {% for j in range(i) %}
                {% set ns.link = ns.link + crumbs[j] + '/' %}
              {% endfor %}
              &amp;lt;li&amp;gt;&amp;lt;a class="link" href="{{ ns.link|url }}"&amp;gt;
              {% if crumb != '' %}
                {{ crumb | title | replace('-', ' ') }}
              {% else %}
                Home
              {% endif %}
              &amp;lt;/a&amp;gt;&amp;lt;/li&amp;gt;
            {% endif %}
          {% endfor %}
        &amp;lt;/ul&amp;gt;
      &amp;lt;/nav&amp;gt;
    &amp;lt;/div&amp;gt;
  {% endif %}
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;Other than the components, there are other visual elements like typography, colors, spacing, and others that are extensively used in CCOS.&lt;/p&gt;
&lt;p&gt;This is code for the Hero section of the home page.&lt;/p&gt;
&lt;h5 id="the-block-template"&gt;The block template -&lt;/h5&gt;&lt;pre&gt;&lt;code&gt;&amp;lt;section class="hero"&amp;gt;
  &amp;lt;div class="container"&amp;gt;
    &amp;lt;div class="hero-title column is-12 is-paddingless"&amp;gt;
      &amp;lt;h1&amp;gt;
        {{ this.title }}
      &amp;lt;/h1&amp;gt;
    &amp;lt;/div&amp;gt;
    &amp;lt;div class="columns"&amp;gt;
      &amp;lt;div class="column is-5"&amp;gt;
        &amp;lt;p class="hero-description"&amp;gt;
          {{ this.description }}
        &amp;lt;/p&amp;gt;
        {{ this.links }}
      &amp;lt;/div&amp;gt;
    &amp;lt;/div&amp;gt;
  &amp;lt;/div&amp;gt;
  &amp;lt;div class="level-right hero-image"&amp;gt;
    &amp;lt;img class="image" src="./github.svg" /&amp;gt;
  &amp;lt;/div&amp;gt;
&amp;lt;/section&amp;gt;
&lt;/code&gt;&lt;/pre&gt;
&lt;h5 id="the-block-styling"&gt;The block styling -&lt;/h5&gt;&lt;pre&gt;&lt;code&gt;// Hero section - Home page
.hero {
  @extend .margin-top-large;

  .hero-title {
    @extend .padding-horizontal-big;
  }

  .hero-description {
    @extend .body-bigger;
    @extend .padding-top-big;
    @extend .padding-horizontal-big;
  }

  .hero-links {
    @extend .margin-vertical-normal;
    @extend .padding-horizontal-big;

    .button {
      @extend .margin-top-normal;
      text-decoration: none;

      .icon {
        @extend .margin-right-small;
        @extend .padding-vertical-smaller;
      }
    }
  }

  .hero-image {
    @include from($fullhd) {
      margin-top: -20rem;
      .image {
        width: 50%;
      }
    }
    @include until($fullhd) {
      .image {
        width: 100%;
      }
    }
  }
}
&lt;/code&gt;&lt;/pre&gt;
&lt;figure&gt;
    &lt;img src="output.png" alt="Output"&gt;
    &lt;figcaption&gt;Output&lt;/figcaption&gt;
&lt;/figure&gt;&lt;h3 id="improvements-in-the-lektor-project"&gt;Improvements in the Lektor project -&lt;/h3&gt;&lt;p&gt;I tried to write the perfect code that is cleaner and readable. I would try to demonstrate my effort using the home page code where I used &lt;a href="https://www.getlektor.com/docs/models/flow/"&gt;Lektor Flowblocks&lt;/a&gt;. The new homepage design have four sections where each section communicated something and I realized they were all independent and building the whole page through one single template would become a bit messy and hard to handle. So I did some research and found a way where I could build sub-templates and use them all to develop a single page and Lektor’s flowblocks allowed me to do so. Here is one of the flowblock and if you want to check out the whole working you can go to — &lt;a href="https://github.com/creativecommons/ccos-website-source"&gt;CCOS Repository&lt;/a&gt;.&lt;/p&gt;
&lt;h4 id="recent-blog-post-block"&gt;Recent Blog Post block -&lt;/h4&gt;&lt;h5 id="the-block-template"&gt;The block Template -&lt;/h5&gt;&lt;pre&gt;&lt;code&gt;{% from "macros/author_name.html" import render_author_name %}

&amp;lt;section class="recent-posts"&amp;gt;
  &amp;lt;div class="container"&amp;gt;
    &amp;lt;div class="level"&amp;gt;
      &amp;lt;h2 class="is-paddingless level-left"&amp;gt;
        {{ this.title }}
      &amp;lt;/h2&amp;gt;
      &amp;lt;span class="level-right"&amp;gt;
        &amp;lt;a class="posts-link" href="/blog"&amp;gt;See all posts &amp;lt;i class="icon angle-right"&amp;gt;&amp;lt;/i&amp;gt;&amp;lt;/a&amp;gt;
      &amp;lt;/span&amp;gt;
    &amp;lt;/div&amp;gt;
    &amp;lt;div class="columns"&amp;gt;
      {% for post in site.query('/blog/entries') %}
        {% if loop.index &amp;lt;= 3 %}
          {% set author = post.parent.parent.children.get('authors').children.get(post.author) %}
          &amp;lt;div class="column is-one-third is-paddingless padding-horizontal-big padding-top-bigger"&amp;gt;
            &amp;lt;article class="card entry-post horizontal no-border blog-entry"&amp;gt;
              &amp;lt;header&amp;gt;
                &amp;lt;figure class="image blog-image"&amp;gt;
                {% if author.about %}
                  {% if author.md5_hashed_email %}
                    &amp;lt;img class="profile" src="https://secure.gravatar.com/avatar/{{ author.md5_hashed_email }}?size=200"
                    alt="gravatar" /&amp;gt;
                  {% endif %}
                {% endif %}
                &amp;lt;/figure&amp;gt;
              &amp;lt;/header&amp;gt;
              &amp;lt;div class="blog-content"&amp;gt;
                &amp;lt;h4 class="b-header"&amp;gt;&amp;lt;a class="blog-title" href="{{ post|url }}"&amp;gt;{{ post.title }}&amp;lt;/a&amp;gt;&amp;lt;/h4&amp;gt;
                &amp;lt;span class="blog-author"&amp;gt;by &amp;lt;a class="author-name" href="{{ author|url }}"&amp;gt;{{ render_author_name(author) }}&amp;lt;/a&amp;gt;
                on {{ post.pub_date|dateformat("YYYY-MM-dd") }}&amp;lt;/span&amp;gt;
                &amp;lt;div class="excerpt"&amp;gt;
                  {{ post.body | excerpt | string | striptags() | truncate(100) }}
                &amp;lt;/div&amp;gt;
              &amp;lt;/div&amp;gt;
            &amp;lt;/article&amp;gt;
          &amp;lt;/div&amp;gt;
        {% endif %}
      {% endfor %}
    &amp;lt;/div&amp;gt;
  &amp;lt;/div&amp;gt;
&amp;lt;/section&amp;gt;
&lt;/code&gt;&lt;/pre&gt;
&lt;h5 id="the-block-model"&gt;The block Model -&lt;/h5&gt;&lt;pre&gt;&lt;code&gt;[block]
name = Recent Posts

[fields.title]
label = Title
type = string
&lt;/code&gt;&lt;/pre&gt;
&lt;h5 id="the-block-styling"&gt;The block styling -&lt;/h5&gt;&lt;pre&gt;&lt;code&gt;// Recent-posts section - Home page
.recent-posts {
  background-color: rgba(4, 166, 53, 0.1);

  .container {
    @extend .padding-vertical-xl;
    @extend .padding-horizontal-big;

    .columns {
      @extend .padding-top-bigger;
      @extend .padding-bottom-xl;
    }
  }

  .blog-title {
    @extend .has-color-dark-slate-gray;
  }

  .posts-link {
    @extend .has-color-forest-green;
    @extend .body-normal;

    font-weight: bold;
    line-height: 1.5;
    text-decoration: none;

    .icon {
      @extend .has-color-forest-green;
      @extend .padding-left-small;
    }
  }
}
&lt;/code&gt;&lt;/pre&gt;
&lt;figure&gt;
    &lt;img src="output2.png" alt="Output"&gt;
    &lt;figcaption&gt;Output — Recent blog posts.&lt;/figcaption&gt;
&lt;/figure&gt;&lt;p&gt;I would also like to point out the amazing Query functionality provided by Lektor where you can access the child pages of the root. Here I am accessing blog posts from our Blog page and limiting the count of posts to three.&lt;/p&gt;
&lt;h3 id="difference-in-experience"&gt;Difference in Experience&lt;/h3&gt;&lt;p&gt;The level of user experience has been significantly elevated due to the use of Vocabulary. I would like to point one of the major experience change here. The major part of the website is guidelines — we have guidelines for contributing, guidelines for how to join a community, guidelines for how to write a blog and many more. The new website has cleaner and readable guideline with a proper hierarchy and every piece of information is made accessible using secondary navigation.&lt;/p&gt;
&lt;h5 id="below-are-the-images-of-some-guidelines-pages-from-new-website"&gt;Below are the images of some guidelines pages from new website.&lt;/h5&gt;&lt;figure&gt;
    &lt;img width="300" height="300" src="new1.png" alt="Screenshot"&gt;
    &lt;img width="300" height="300" src="new2.png" alt="Screenshot"&gt;
    &lt;img width="300" height="300" src="new3.png" alt="Screenshot"&gt;
    &lt;figcaption&gt;Screenshots from new website&lt;/figcaption&gt;
&lt;/figure&gt;&lt;h5 id="below-are-the-images-of-some-guidelines-pages-from-old-website-you-can-see-the-difference-of-experience-in-both-cases"&gt;Below are the images of some guidelines pages from old website. You can see the difference of experience in both cases.&lt;/h5&gt;&lt;figure&gt;
    &lt;img width="400" src="old1.png" alt="Screenshot"&gt;
    &lt;img width="400" src="old2.png" alt="Screenshot"&gt;
    &lt;figcaption&gt;Screenshots from old website&lt;/figcaption&gt;
&lt;/figure&gt;&lt;h3 id="how-you-can-use-vocabulary-and-also-contribute-to-it"&gt;How you can use Vocabulary and also contribute to it?&lt;/h3&gt;&lt;p&gt;Vocabulary is very easy to use. It is intuitive, consistent and highly reusable. Vocabulary uses Storybook to present each visual element that makes it very convenient for a user to integrate Vocabulary in their project. The code snippets attached with every element can be copied as it is and can be used. The code snippets above indicate how the library can be used and how easily you can achieve desired web pages. For more details, you can visit &lt;a href="https://cc-vocabulary.netlify.app/?path=/docs/vocabulary-usage--page"&gt;usage guidelines&lt;/a&gt;.&lt;/p&gt;
&lt;p&gt;Vocabulary is still under development, feedback and bug reports are welcome, fixes and patches even more so. Here is the link to &lt;a href="https://cc-vocabulary.netlify.app/?path=/docs/vocabulary-contribution--page"&gt;contribution guidelines&lt;/a&gt;.&lt;/p&gt;
</content></entry><entry><title>Accessibility and Internationalization: WrapUp GSoC 2020</title><link href="http://opensource.creativecommons.org/blog/entries/cc-search-accessibility-wrapup/" rel="alternate"/><updated>2020-08-31T00:00:00Z</updated><author><name>['AyanChoudhary']</name></author><id>urn:uuid:850e5432-1654-3940-aec6-1caa4b24c66c</id><content type="html">&lt;p&gt;These is the final blog of my internship with CC. I am working on improving the accessibility of cc-search and internationalizing it as well.
This blog is the conclusion of my work. These past 10 weeks with CC have taught me a lot and I am really grateful to have got this opportunity.
The experience was just amazing and the poeple are so helpful I really enjoyed working with them and am looking forward to continue working with the CC team.&lt;/p&gt;
&lt;p&gt;You can glance through my work through these blog posts:&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;&lt;a href="/blog/entries/cc-search-accessibility-and-internationalization/"&gt;CC Search, Proposal Drafting and Community Bonding&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="/blog/entries/cc-search-accessibility-week1-2/"&gt;CC Search, Setting up vue-i18n and internationalizing homepage&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="/blog/entries/cc-search-accessibility-week3-4/"&gt;Internationalization Continued: Handling strings in the store&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="/blog/entries/cc-search-accessibility-week5-6/"&gt;Internationalization continued: Modifying tests&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="/blog/entries/cc-search-accessibility-week7-8/"&gt;CC Search, Initial Accessibility Improvements&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="/blog/entries/cc-search-accessibility-week9-10/"&gt;Accessibility Improvements: Final Changes and Modal Accessilibity&lt;/a&gt;&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;The progress of the project can be tracked on &lt;a href="https://github.com/cc-archive/cccatalog-frontend"&gt;cc-search&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;CC Search Accessiblity is my GSoC 2020 project under the guidance of &lt;a href="https://creativecommons.org/author/zackcreativecommons-org/"&gt;Zack Krida&lt;/a&gt; and &lt;a href="/blog/authors/akmadian/"&gt;Ari Madian&lt;/a&gt;, who is the primary mentor for this project, &lt;a href="https://creativecommons.org/author/annacreativecommons-org/"&gt;Anna Tumadóttir&lt;/a&gt; for helping all along and engineering director &lt;a href="https://creativecommons.org/author/kriticreativecommons-org/"&gt;Kriti
Godey&lt;/a&gt;, have been very supportive.&lt;/p&gt;
</content></entry></feed>