-
-
Notifications
You must be signed in to change notification settings - Fork 12
/
Copy pathfeed.xml
3460 lines (3433 loc) · 458 KB
/
feed.xml
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
280
281
282
283
284
285
286
287
288
289
290
291
292
293
294
295
296
297
298
299
300
301
302
303
304
305
306
307
308
309
310
311
312
313
314
315
316
317
318
319
320
321
322
323
324
325
326
327
328
329
330
331
332
333
334
335
336
337
338
339
340
341
342
343
344
345
346
347
348
349
350
351
352
353
354
355
356
357
358
359
360
361
362
363
364
365
366
367
368
369
370
371
372
373
374
375
376
377
378
379
380
381
382
383
384
385
386
387
388
389
390
391
392
393
394
395
396
397
398
399
400
401
402
403
404
405
406
407
408
409
410
411
412
413
414
415
416
417
418
419
420
421
422
423
424
425
426
427
428
429
430
431
432
433
434
435
436
437
438
439
440
441
442
443
444
445
446
447
448
449
450
451
452
453
454
455
456
457
458
459
460
461
462
463
464
465
466
467
468
469
470
471
472
473
474
475
476
477
478
479
480
481
482
483
484
485
486
487
488
489
490
491
492
493
494
495
496
497
498
499
500
501
502
503
504
505
506
507
508
509
510
511
512
513
514
515
516
517
518
519
520
521
522
523
524
525
526
527
528
529
530
531
532
533
534
535
536
537
538
539
540
541
542
543
544
545
546
547
548
549
550
551
552
553
554
555
556
557
558
559
560
561
562
563
564
565
566
567
568
569
570
571
572
573
574
575
576
577
578
579
580
581
582
583
584
585
586
587
588
589
590
591
592
593
594
595
596
597
598
599
600
601
602
603
604
605
606
607
608
609
610
611
612
613
614
615
616
617
618
619
620
621
622
623
624
625
626
627
628
629
630
631
632
633
634
635
636
637
638
639
640
641
642
643
644
645
646
647
648
649
650
651
652
653
654
655
656
657
658
659
660
661
662
663
664
665
666
667
668
669
670
671
672
673
674
675
676
677
678
679
680
681
682
683
684
685
686
687
688
689
690
691
692
693
694
695
696
697
698
699
700
701
702
703
704
705
706
707
708
709
710
711
712
713
714
715
716
717
718
719
720
721
722
723
724
725
726
727
728
729
730
731
732
733
734
735
736
737
738
739
740
741
742
743
744
745
746
747
748
749
750
751
752
753
754
755
756
757
758
759
760
761
762
763
764
765
766
767
768
769
770
771
772
773
774
775
776
777
778
779
780
781
782
783
784
785
786
787
788
789
790
791
792
793
794
795
796
797
798
799
800
801
802
803
804
805
806
807
808
809
810
811
812
813
814
815
816
817
818
819
820
821
822
823
824
825
826
827
828
829
830
831
832
833
834
835
836
837
838
839
840
841
842
843
844
845
846
847
848
849
850
851
852
853
854
855
856
857
858
859
860
861
862
863
864
865
866
867
868
869
870
871
872
873
874
875
876
877
878
879
880
881
882
883
884
885
886
887
888
889
890
891
892
893
894
895
896
897
898
899
900
901
902
903
904
905
906
907
908
909
910
911
912
913
914
915
916
917
918
919
920
921
922
923
924
925
926
927
928
929
930
931
932
933
934
935
936
937
938
939
940
941
942
943
944
945
946
947
948
949
950
951
952
953
954
955
956
957
958
959
960
961
962
963
964
965
966
967
968
969
970
971
972
973
974
975
976
977
978
979
980
981
982
983
984
985
986
987
988
989
990
991
992
993
994
995
996
997
998
999
1000
<?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><link href="http://opensource.creativecommons.org/blog/feed.xml" rel="self"></link><id>urn:uuid:cc6bc3c1-d0ad-365f-b7a6-1fcd73488c56</id><updated>2025-01-15T00:00:00Z</updated><author><name></name></author><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"></link><updated>2025-01-15T00:00:00Z</updated><author><name>['TimidRobot']</name></author><id>urn:uuid:ab4ea0f1-0e3e-3ff1-acf7-17962b9a0b9a</id><content type="html"><p>The Creative Commons (CC) technology team regrets to announce <strong>we will not be
participating in Google Summer of Code (GSoC) 2025</strong>. While the program remains
excellent, we do not have the resources to participate this year and meet our
core responsibilities.</p>
<p>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.</p>
<h2 id="preparing-to-re-engage">Preparing to re-engage</h2><p>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.</p>
<p>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
(<a href="http://github.com/creativecommons/vocabulary">creativecommons/vocabulary</a>).</p>
<p>Our structured community involvement has languished since the technology team
was downsized due to the COVID pandemic (202-12-07 <a href="https://opensource.creativecommons.org/blog/entries/2020-12-07-upcoming-changes-to-community/">Upcoming Changes to the CC
Open Source Community — Creative Commons Open Source</a>). We will be
simplifying community involvement so that we can be more responsive with
increased visibility.</p>
<p>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.</p>
<h2 id="past-participation">Past participation</h2><p>For information on the excellent work completed during past participations,
please see: <a href="https://opensource.creativecommons.org/programs/history/">Open Source Work Programs: History — Creative Commons Open
Source</a>.</p>
</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"></link><updated>2024-12-10T00:00:00Z</updated><author><name>['Queen']</name></author><id>urn:uuid:0e2dfb7f-de05-34dd-9a2e-323c02bc8def</id><content type="html"><h2 id="introduction">Introduction</h2><p>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.</p>
<h2 id="my-core-values">My Core Values</h2><p>When I think about my core values, three words come to mind: <strong>Growth</strong>, <strong>Curiosity</strong>, and <strong>Knowledge</strong>.</p>
<ul>
<li><strong>Growth</strong>: I strive to improve in every aspect of life—mentally, physically, intellectually, and even spiritually. Every setback is just a stepping stone for me. </li>
<li><strong>Curiosity</strong>: This one’s a work in progress, but I’m learning to ask questions and embrace not knowing. I love understanding <em>why</em> things work the way they do. </li>
<li><strong>Knowledge</strong>: I read a lot because I genuinely enjoy learning new things. For me, knowledge is the key to confidence and growth.</li>
</ul>
<h2 id="my-journey-to-outreachy">My Journey to Outreachy</h2><p>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.</p>
<p>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.</p>
<p>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.</p>
<p>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.</p>
<h2 id="the-contribution-period">The Contribution Period</h2><p>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.</p>
<p>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.</p>
<p>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.</p>
<h2 id="my-internship-project">My Internship Project</h2><h3 id="consolidating-and-implementing-the-vocabulary-design-system"><strong>Consolidating and Implementing the Vocabulary Design System</strong></h3><p>During my internship, I’ll be working on consolidating and implementing the Vocabulary design system across Creative Commons' ancillary websites.</p>
<p>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.</p>
<p>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.</p>
<h2 id="conclusion">Conclusion</h2><p>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.</p>
<p>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.</p>
<p>Thank you for reading!</p>
</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"></link><updated>2024-08-23T00:00:00Z</updated><author><name>['amandayclee']</name></author><id>urn:uuid:e799d536-27a9-35ae-98d5-a21021bd8b52</id><content type="html"><div style="text-align: center;">
<img src="gsoc-banner.png" alt="GSoC 2024" style="max-height: 200px;">
</div><h1 id="midterm-recap">Midterm Recap</h1><p>I successfully created customized Dockerfiles and a docker-compose.yml for <code>web</code>, <code>database</code>, and <code>ansible</code> 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.</p>
<h3 id="week-by-week-progress">Week-by-Week Progress</h3><p>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.</p>
<p>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: <strong>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.</strong></p>
<p>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.</p>
<p>We finalized these details in the <a href="https://github.com/creativecommons/ansible-dev/pull/14">Bastion Container Creation</a>.</p>
<p>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.</p>
<ol>
<li>Option 1 involves having Ansible manage containers directly through the Docker network, where all services (<code>bastion</code>, <code>ansible</code>, <code>web</code>, <code>db</code>) 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.</li>
<li>Option 2 leverages the <code>community.docker.docker_container_exec</code> 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.</li>
<li>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.</li>
</ol>
<p>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.</p>
<p>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 <a href="https://github.com/creativecommons/ansible-dev/">repository</a>.</p>
<h1 id="acknowledgments">Acknowledgments</h1><p>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 <a href="https://opensource.creativecommons.org/blog/authors/shafiya/">Shafiya</a>, <a href="https://opensource.creativecommons.org/blog/authors/TimidRobot/">Timid Robot</a>, and <a href="https://opensource.creativecommons.org/blog/authors/sara/">Sara</a> 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!</p>
</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"></link><updated>2024-08-22T00:00:00Z</updated><author><name>['NaishaSinha']</name></author><id>urn:uuid:8e7c9006-3567-3028-841c-c6c91d114f07</id><content type="html"><p><img src="/blog/entries/2024-08-22-automating-quantifying/Automating - GSoC Logo.png" alt="GSoC 2024"></p>
<h2 id="introduction-midterm-recap">Introduction: Midterm Recap</h2><hr>
<p>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 <strong><a href="https://opensource.creativecommons.org/blog/entries/2024-07-10-automating-quantifying/">Part 1</a></strong> for more context
if you haven't already done so.</p>
<p>At the point of the midterm evaluation, I successfully completed Phases 1, 2, and 3
(<code>fetch</code>, <code>process</code>, and <code>report</code>) of the Google Custom Search (GCS) data source, with a working report <code>README</code> 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.</p>
<h2 id="development-process">Development Process</h2><hr>
<h3 id="i-midpoint-reassessment">I. Midpoint Reassessment</h3><p>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.</p>
<h3 id="ii-github-actions-development">II. GitHub Actions Development</h3><p>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.</p>
<p>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:</p>
<ol>
<li><p><strong>GitHub Actions Extension for Visual Studio Code:</strong> 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.</p>
</li>
<li><p><strong>Creating Mini-Tasks for Experimentation:</strong> 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.</p>
</li>
</ol>
<p>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.</p>
<h3 id="iii-engineering-a-custom-error-handling-and-exception-system">III. Engineering a Custom Error Handling and Exception System</h3><p>A key innovation in this project was the creation of a custom <code>QuantifyingException</code> 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.</p>
<p>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 <strong>Next Steps</strong>.
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.</p>
<h3 id="iv-finalized-flow-of-system-data">IV. Finalized Flow of System + Data</h3><p>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.</p>
<p><img src="/blog/entries/2024-08-22-automating-quantifying/Final DFD.png" alt="DFD"></p>
<h2 id="final-conclusions">Final Conclusions</h2><hr>
<h3 id="i-all-deliverables-completed-over-the-course-of-the-program">I. All Deliverables Completed Over the Course of the Program</h3><p>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 <strong>Next Steps</strong> section will elaborate on how this software will be solidified over
the upcoming quarters and years.</p>
<p>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:</p>
<table class="table table-striped">
<thead class="thead-dark"><tr>
<th>Deliverable</th>
<th>Description</th>
</tr>
</thead>
<tbody>
<tr>
<td>Phase 1: Fetch Data</td>
<td>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.</td>
</tr>
<tr>
<td>Phase 2: Process Data (Outline)</td>
<td>This phase focuses on analyzing the fetched data between quarters. Since only <code>2024Q3</code> 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.</td>
</tr>
<tr>
<td>Phase 3: Generate Reports</td>
<td>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.</td>
</tr>
<tr>
<td>Shared Module</td>
<td>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.</td>
</tr>
<tr>
<td>Directory Sequence (OS)</td>
<td>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.</td>
</tr>
<tr>
<td>Automation using GitHub Actions CI/CD</td>
<td>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.</td>
</tr>
<tr>
<td>Custom Error &amp; Exception Handling System</td>
<td>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.</td>
</tr>
<tr>
<td>Project Directory Tree</td>
<td>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.</td>
</tr>
<tr>
<td>Data Flow + System Design</td>
<td>Finalized an overall data flow and system design diagram to establish an official framework for the codebase.</td>
</tr>
<tr>
<td>Comprehensive Documentation</td>
<td>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.</td>
</tr>
</tbody>
</table>
<h3 id="ii-acknowledgements-impact-next-steps">II. Acknowledgements, Impact, Next Steps</h3><p>This project would not have been possible without the constant guidance and insights of my mentors: <strong><a href="https://opensource.creativecommons.org/blog/authors/TimidRobot/">Timid Robot Zehta</a></strong> (lead), <strong><a href="https://opensource.creativecommons.org/blog/authors/shafiya/">Shafiya Heena</a></strong> (supporting), and <strong><a href="https://opensource.creativecommons.org/blog/authors/sara/">Sara Lovell</a></strong> (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.</p>
<p>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.</p>
<p>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 <strong><a href="https://github.com/creativecommons/quantifying/issues">Issues</a></strong> 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!</p>
<h2 id="additional-readings">Additional Readings</h2><hr>
<ul>
<li><a href="https://opensource.creativecommons.org/blog/entries/2024-07-10-automating-quantifying/">Automating Quantifying the Commons: Part 1</a> | Author: Naisha Sinha | Jul. 2024</li>
<li><a href="https://opensource.creativecommons.org/blog/entries/2022-12-07-berkeley-quantifying/">Data Science Discovery: Quantifying the Commons</a> | Author: Dun-Ming Huang (Brandon Huang) | Dec. 2022</li>
</ul>
</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"></link><updated>2024-08-22T00:00:00Z</updated><author><name>['Murdock9803']</name></author><id>urn:uuid:8e16286a-0387-37a6-bef4-9fe5162ea135</id><content type="html"><p>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 <a href="https://resources.creativecommons.org/">resource archive website</a>, 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.</p>
<p><img src="/blog/entries/continuing-open-collaboration-gsoc-2024-with-creative-commons/GSoC+CC-banner.png" alt="GSoC and CC banner"></p>
<p>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.</p>
<h2 id="transitioning-from-midterm">Transitioning From Midterm</h2><p>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.</p>
<h2 id="completing-the-timeline-tasks-weeks-7-8-and-9">Completing The Timeline Tasks - Weeks 7, 8 and 9</h2><p>These three weeks were planned with the aim of completing the timeline tasks to focus on further goals of the projects. The <code>UI-related</code> tasks included Submission page, A guide for the newcomers to submit resources, and working on the filters.</p>
<h3 id="submission-page-ui-changes">Submission Page UI Changes</h3><p>The <code>submission.html</code> 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 <a href="https://github.com/creativecommons/cc-resource-archive/pull/315">PR#315</a>, The following tasks were performed :</p>
<ul>
<li>adds a new context to the element, named <code>submit-page</code>.</li>
<li>refactors the whole html code for <code>submission.html</code> with semantic code.</li>
<li>makes the page responsive, by adding <code>media queries</code> wherever needed.</li>
<li>adds a step by step written guide including images, for submission of resource for new github users.</li>
<li>ensures the page meets current CC aesthetics.</li>
<li>adds documentation for better understanding and maintainability.</li>
<li>formats the files with <code>prettier code formatter</code>.</li>
</ul>
<h3 id="submission-guide-for-newcomers">Submission guide For Newcomers</h3><p>For people not familiar with GitHub or Opening <code>Pull Requests</code> 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 <a href="https://github.com/creativecommons/cc-resource-archive/pull/315">PR#315</a>. This was the final addition to the <code>submission.html</code> page and the whole tasks related to this page were completed by this.</p>
<h3 id="filters-placement-and-functioning">Filters Placement and Functioning</h3><p>The resource archive utilizes filters to select similar resources. These filters are grouped in the form of three categories, <code>TOPIC</code>, <code>MEDIUM</code> and <code>LANGUAGE</code>. 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 <a href="https://github.com/creativecommons/cc-resource-archive/pull/316">PR#316</a> makes the filters responsiveness, and more easy to access by performing the following tasks:</p>
<ul>
<li>adds semantic html to <code>index.html</code> and <code>all.html</code></li>
<li>removes the filters from <code>index.html</code>.</li>
<li>removes inline styles from html pages.</li>
<li>adds a new context to <code>listing.html</code>.</li>
<li>works on the <code>see-all-resources</code> link.</li>
<li>adds checkbox in place of <code>[x]</code> in category filters.</li>
<li>makes the filters as a sidebar.</li>
<li>makes the whole category filters responsive.</li>
<li>Re-works on the <code>media-query</code> breakpoints.</li>
<li>formats the code with <code>prettier code formatter</code>.</li>
<li>adds documentation for the <code>index.html</code>, <code>all.html</code> and <code>style.css</code> files.</li>
</ul>
<h2 id="stretch-goals-and-ideation-weeks-10-11-and-12">Stretch Goals And Ideation - Weeks 10, 11 and 12</h2><p>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 (<a href="https://github.com/possumbilities">Sara</a>). There were 3 major goals that were considered for a discussion. These were, Implementation of Search Functionality through <a href="https://lunrjs.com/docs/index.html">Lunr.js</a>, Improving accessibility through the inclusion of <a href="https://www.w3.org/WAI/standards-guidelines/aria/">ARIA</a> attributes to the elements in the website, and The use of <a href="https://docs.github.com/en/rest?apiVersion=2022-11-28">GitHub API</a> to automate the process of submission of resources to the site. Out of these three, the goals that were to be implemented were <code>ARIA</code> accessibility and <code>LUNR.js</code> 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.</p>
<h3 id="aria-accessibility-and-search-functionsality-lunr.js">Aria Accessibility and Search Functionsality - LUNR.js</h3><p>My mentor suggested that I read about <code>WAI-ARIA</code> 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 <code>LUNR.js</code>. I started to read about the library and its execution process from various sources, majorly from the <a href="https://lunrjs.com/docs/index.html">LUNR Documentation</a> 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.</p>
<h2 id="issues-solved-from-midterm-to-end">Issues Solved From Midterm To End</h2><p>The issues relevant to the project which have been solved in the period between midterm and final week are listed below:</p>
<ul>
<li><a href="https://github.com/creativecommons/cc-resource-archive/issues/52">#52</a> - use checkbox for <code>resourcenavtopicknown</code></li>
<li><a href="https://github.com/creativecommons/cc-resource-archive/issues/61">#61</a> - change UI of the homepage</li>
<li><a href="https://github.com/creativecommons/cc-resource-archive/issues/72">#72</a> - UI refinement of the website</li>
<li><a href="https://github.com/creativecommons/cc-resource-archive/issues/119">#119</a> - adding icon on filter text</li>
<li><a href="https://github.com/creativecommons/cc-resource-archive/issues/274">#274</a> - Improve the UI of submission page with <code>vocabulary</code></li>
<li><a href="https://github.com/creativecommons/cc-resource-archive/issues/306">#306</a> - Language List Columns Collapsing on Website </li>
<li><a href="https://github.com/creativecommons/cc-resource-archive/issues/310">#310</a> - Add a step by step guide for submitting resources</li>
<li><a href="https://github.com/creativecommons/cc-resource-archive/issues/311">#311</a> - html markup contains inline styles</li>
<li><a href="https://github.com/creativecommons/cc-resource-archive/issues/313">#313</a> - improve mobile view layout for filter columns</li>
<li><a href="https://github.com/creativecommons/cc-resource-archive/issues/314">#314</a> - remove extra white space between main content and footer</li>
<li><a href="https://github.com/creativecommons/cc-resource-archive/issues/318">#318</a> - Links in submit page open on same page and spelling mistake-comapre</li>
</ul>
<h2 id="future-plans-and-execution">Future Plans And Execution</h2><p>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 <code>LUNR.js</code> search functionality and will be trying to complete this in the 13th week, and also the contributions on the <code>ARIA</code> 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 - <a href="https://github.com/creativecommons">Creative Commons</a>, and especially the repository - <a href="https://github.com/creativecommons/cc-resource-archive">CC-Resource-Archive</a> 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.</p>
<h2 id="personal-growth-and-thoughts-on-completion">Personal Growth And Thoughts On Completion</h2><p>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.</p>
<h2 id="conclusion">Conclusion</h2><h3 id="gratitude-and-acknowledgements">Gratitude And Acknowledgements</h3><p><a href="https://github.com/possumbilities">Sara Lovell</a>, <a href="https://github.com/TimidRobot">Timid Robot Zehta</a> and <a href="https://github.com/Shafiya-Heena">Shafiya Heena</a> 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 !</p>
<h3 id="for-future-contributors">For Future Contributors</h3><p>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 <a href="https://github.com/">GitHub</a> and on the <a href="https://github.com/creativecommons/cc-resource-archive">CC-Resource-Archive</a> repository mainly. Let’s have the conversation there!</p>
</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"></link><updated>2024-07-18T00:00:00Z</updated><author><name>['amandayclee']</name></author><id>urn:uuid:d8f7642b-d733-3011-981a-9aadff749fef</id><content type="html"><p>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.</p>
<div style="text-align: center;">
<img src="gsoc-banner.png" alt="GSoC 2024" style="max-height: 200px;">
</div><h1 id="project-objective">Project Objective</h1><h2 id="project-background">Project Background</h2><p><a href="https://github.com/creativecommons/ansible-dev">This project</a> 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.</p>
<h2 id="challenges-and-learning-opportunities">Challenges and Learning Opportunities</h2><p>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.</p>
<p><img src="/blog/entries/2024-07-19-create-local-ansible-dev-env/server-structure.png" alt="Server Structure">
<em>This architecture diagram is designed by my mentor and project lead <a href="https://opensource.creativecommons.org/blog/authors/shafiya/">Shafiya</a>.</em></p>
<h3 id="week-by-week-progress">Week-by-Week Progress</h3><p>I began by following the <a href="https://docs.docker.com/guides/getting-started/">Docker</a> and <a href="https://docs.ansible.com/ansible/latest/getting_started/index.html">Ansible</a> setup guides from the official documentation to successfully deploy an initial <code>ansible</code> container in <a href="https://github.com/creativecommons/ansible-dev/pull/9">Creating Initial Structure for Ansible</a>. This step was crucial for gaining a foundational understanding of Ansible's basic functionality and setup within a containerized environment.</p>
<p>In the second week, I separated the existing <a href="https://github.com/creativecommons/index-dev-env"><code>index-dev</code></a> repository, which is the local development environment for current CreativeCommons.org, into individual containers for the <code>web</code> server and <code>database</code> server in <a href="https://github.com/creativecommons/ansible-dev/pull/11">Setting Up Ansible Environment and Hosts</a>. At the same time, I started investigating the setup of a <a href="https://ovh.github.io/the-bastion/index.html">Bastion server</a> and its integration into our system, aiming to enforce a security-focused approach for controlling access to a private network.</p>
<p>In the third week, I established SSH access between the local machine and <code>web</code>, <code>database</code>, and <code>ansible</code> servers with my mentor Shafiya's guidance in <a href="https://github.com/creativecommons/ansible-dev/pull/12">Setting Up SSH For <code>web</code> and <code>database</code> and Integrate with <code>ansible</code></a>. 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.</p>
<p>In the fourth week, I started writing Ansible playbooks and moved several configurations originally located in the <code>web</code> Dockerfile to the playbook. Combining Dockerfiles and Ansible playbooks is a common best practice: <strong>Dockerfiles are responsible for building the base image, including the OS and basic tools, while Ansible playbooks handle the application and service configurations.</strong> 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 <code>index-dev</code> repo and what Shafiya and I did in the previous week, and finally got the service to start up correctly in <a href="https://github.com/creativecommons/ansible-dev/pull/13">Creating A Playbook to Configure Wordpress Over Apache2</a>.</p>
<h3 id="communication-and-collaboration-in-open-source">Communication and Collaboration in Open Source</h3><p>The CC team, including mentor Shafiya and team members <a href="https://opensource.creativecommons.org/blog/authors/TimidRobot/">Timid Robot</a> and <a href="https://opensource.creativecommons.org/blog/authors/sara/">Sara</a>, 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.</p>
<h2 id="conclusion-and-next-steps">Conclusion and Next Steps</h2><p>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.</p>
</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"></link><updated>2024-07-10T00:00:00Z</updated><author><name>['Murdock9803']</name></author><id>urn:uuid:ff375fe1-1d83-3c9f-b782-2b6166675041</id><content type="html"><p>Hello everyone! My name is Ayush Sahu, and I am thrilled to announce that I have joined Creative Commons this summer through the <a href="https://summerofcode.withgoogle.com/">Google Summer of Code (2024)</a> 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.</p>
<p><img src="/blog/entries/empowering-open-knowledge-gsoc-2024-with-creative-commons/GSoC+CC-banner.png" alt="GSoC and CC banner"></p>
<p>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.</p>
<h2 id="the-project-i-am-working-on">The Project I Am Working On</h2><p>The project - <strong>Modernize CC Resource Archive</strong> focuses on implementing a comprehensive visual overhaul to the <a href="https://resources.creativecommons.org/">Resource Archive</a> to align with current Creative Commons aesthetics and functionality standards. Utilizing the <a href="https://github.com/creativecommons/vocabulary">Internal Design System (Vocabulary)</a>, the project aims to upgrade the visual design, implement semantic, accessible, and standards-compliant <code>HTML</code>, <code>CSS</code>, and <code>JavaScript</code>, and improve user experience (UX) for resource submission while ensuring site stability on <code>GitHub Pages</code>. Through these efforts and solid documentation, the revamped Resources Archive will meet modern standards, enhance usability, and facilitate maintainability for both users and developers.</p>
<h2 id="community-bonding-period">Community Bonding Period</h2><p>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.</p>
<h2 id="environment-code-ideation-weeks-1-2-3">Environment, Code &amp; Ideation - Weeks 1, 2 &amp; 3</h2><p>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 <a href="https://opensource.creativecommons.org/blog/authors/sara/">Sara</a> 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.</p>
<p>The key achievements were:</p>
<ul>
<li><a href="https://github.com/creativecommons/cc-resource-archive/pull/266">PR#266</a> - Updated the <code>docker-compose.yml</code> 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 <code>version</code> element at the top of <code>docker-compose.yml</code> file was just informative.</li>
<li><a href="https://github.com/creativecommons/cc-resource-archive/pull/279">Testing Docker Configurations</a>: With immense help from mentors Sara and Timid Robot, I got the Docker environment ready for development.</li>
<li>Learned more about <a href="https://jekyllrb.com/docs/">Jekyll</a> and read the <a href="https://github.com/creativecommons/vocabulary">Vocabulary</a> code. Got familiar with classes in vocabulary.css and the custom CSS variables in library-vars.css. </li>
<li>Accessibility Improvements: Learned about keyboard navigability and optimizing the website for better accessibility using semantic HTML and appropriate CSS properties.</li>
<li>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.</li>
<li>Reviewed the present structure of the files, and worked on ideas to improve the structure for better understandability and grouping of similar files.</li>
</ul>
<p>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.</p>
<h2 id="execution-updation-refactor-weeks-4-5-6">Execution, Updation &amp; Refactor - Weeks 4, 5 &amp; 6</h2><p>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:</p>
<h3 id="improving-file-structure">Improving File Structure</h3><p>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:</p>
<ul>
<li><a href="https://github.com/creativecommons/cc-resource-archive/pull/280">PR#280</a> - Adds <code>footer.html</code> to the <code>_includes</code> directory.</li>
<li><a href="https://github.com/creativecommons/cc-resource-archive/pull/281">PR#281</a> - Includes <code>footer.html</code> to all the pages of the site.</li>
<li><a href="https://github.com/creativecommons/cc-resource-archive/pull/282">PR#282</a> - Shifted <code>an-explanation-of-creative-commons</code> to <code>_resources</code>.</li>
<li><a href="https://github.com/creativecommons/cc-resource-archive/pull/289">PR#289</a> - Improves the file structure in the codebase.</li>
<li><a href="https://github.com/creativecommons/cc-resource-archive/pull/292">PR#292</a> - Updates the paths to downloadable resources and PDFs.</li>
<li><a href="https://github.com/creativecommons/cc-resource-archive/pull/296">PR#296</a> - Updated the <code>resource-template</code> with new paths for images.</li>
</ul>
<h3 id="listing-page-ui-changes">Listing Page UI Changes</h3><p>The <code>listing.html</code> page is responsible for the display of resource cards on the <code>index.html</code> and <code>all.html</code> 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 <a href="https://github.com/creativecommons/cc-resource-archive/pull/298">PR#298</a>, I performed the following tasks:</p>
<ul>
<li>Refactored the html structure of the resource card to <code>IMAGE - TITLE - BLURB</code>.</li>
<li>Utilizing vocabulary, enhanced the style for <code>thumbnail list</code> in <code>listing.html</code>. Worked on the grid structure in <code>style.css</code>.</li>
<li>Likewise, worked on enhancing style for the <code>thumbnail box</code>, <code>thumbnail title</code>, <code>thumbnail image</code> and <code>thumbnail blurb</code>.</li>
<li>Worked on Fonts, colors, background colors, etc. according to <code>vocabulary</code>.</li>
<li>Assigned properties like <code>--underline-background-color</code> from vocabulary into style.css.</li>
<li>Formatted the <code>style.css</code> and <code>listing.html</code> files with <code>prettier</code>.</li>
<li>Fixed the responsiveness of the resource cards.</li>
<li>Added Documentation in <code>style.css</code> for understandability.</li>
</ul>
<p>And through the <a href="https://github.com/creativecommons/cc-resource-archive/pull/302">PR#302</a>, the following tasks were completed:</p>
<ul>
<li>Added a heading to the page.</li>
<li>Added clear documentation about various sections in the file.</li>
<li>Formatted the code with <code>prettier</code> code formatter.</li>
</ul>
<p>All these changes gave the website a new look, aligning more closely with the standard Creative Commons design schemes.</p>
<h3 id="listing-page-all-javascript-changes">Listing Page (All) Javascript Changes</h3><p>The javascript code in listing.html file resided in the <code>&lt;head&gt;</code> section of the page. The code was outdated and was lacking the ES6 Javascript concepts. For example, there were uses of <code>var</code> keyword, <code>document.write()</code> 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 <a href="https://github.com/creativecommons/cc-resource-archive/pull/300">PR#300</a>, the following tasks were completed:</p>
<ul>
<li>Updated the functions and code to follow ES6 javascript concepts.</li>
<li>Replaced the <code>document.write()</code> method with <code>Document Object Manipulation</code>. The <code>document.write()</code> is old and not preferable.</li>
<li>Utilized the javascript <code>DOM</code> for all the tasks related to filtering of resources in <code>listing.js</code>.</li>
<li>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.</li>
<li>Added proper documentation for all the functions and sections of code for better understandability.</li>
</ul>
<h3 id="resource-page-ui-changes">Resource Page UI Changes</h3><p>The resource page is a <code>layout</code> to show various resources that are submitted in the resource archive. This layout page accepts values from the <code>front matter</code> of various resources. This page was overall enhanced in terms of alignment to Creative Commons’ Design System.
The <a href="https://github.com/creativecommons/cc-resource-archive/pull/304">PR#304</a> performs the following tasks:</p>
<ul>
<li>Refactors the whole code for <code>resource.html</code> page by implementing semantic HTML.</li>
<li>Improves the styling of the page in <code>styles.css</code>, by utilizing vocabulary.</li>
<li>Makes the page responsive. </li>
<li>The inspiration is drawn from the <a href="https://vocabulary-docs.netlify.app/specimen/contexts/blog-post.html">Vocabulary Blog Post Page</a>.</li>
</ul>
<p>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.</p>
<h2 id="issues-solved-till-now">Issues Solved Till Now</h2><p>The issues relevant to the project which have been solved until now are listed below:</p>
<ul>
<li><a href="https://github.com/creativecommons/cc-resource-archive/issues/17">#17</a> - upgrade JS code in listings.html</li>
<li><a href="https://github.com/creativecommons/cc-resource-archive/issues/176">#176</a> - make thumbnails responsive</li>
<li><a href="https://github.com/creativecommons/cc-resource-archive/issues/242">#242</a> - add footer in submission and resource pages</li>
<li><a href="https://github.com/creativecommons/cc-resource-archive/issues/265">#265</a> - The docker-compose.yml file currently out of spec</li>
<li><a href="https://github.com/creativecommons/cc-resource-archive/issues/267">#267</a> - Improve documentation for Dockerfiles</li>
<li><a href="https://github.com/creativecommons/cc-resource-archive/issues/269">#269</a> - relocate footer code to separate file ‘footer.html’ for reuse</li>
<li><a href="https://github.com/creativecommons/cc-resource-archive/issues/273">#273</a> - Resource file in the wrong location</li>
<li><a href="https://github.com/creativecommons/cc-resource-archive/issues/276">#276</a> - Inconsistent docker behavior - Parsing Gemfile</li>
<li><a href="https://github.com/creativecommons/cc-resource-archive/issues/283">#283</a> - Unnecessary google analytics function in listing.html</li>
<li><a href="https://github.com/creativecommons/cc-resource-archive/issues/285">#285</a> - Unnecessary google analytics function in resource and submission.html</li>
<li><a href="https://github.com/creativecommons/cc-resource-archive/issues/287">#287</a> - The file structure in the codebase can be improved. (re-structuring)</li>
<li><a href="https://github.com/creativecommons/cc-resource-archive/issues/288">#288</a> - The style.css file is not properly organized and lacks documentation</li>
<li><a href="https://github.com/creativecommons/cc-resource-archive/issues/290">#290</a> - The download [pdf] file links at bottom of resources aren't working</li>
<li><a href="https://github.com/creativecommons/cc-resource-archive/issues/293">#293</a> - The resourcetemplate.md needs to be updated.</li>
<li><a href="https://github.com/creativecommons/cc-resource-archive/issues/297">#297</a> - Change the design of resource cards on homepage using vocabulary</li>
<li><a href="https://github.com/creativecommons/cc-resource-archive/issues/165">#165</a> - section heading for resource cards</li>
<li><a href="https://github.com/creativecommons/cc-resource-archive/issues/301">#301</a> - Add proper documentation to listing.html, refactor for structure</li>
<li><a href="https://github.com/creativecommons/cc-resource-archive/issues/101">#101</a> - Organize code with proper indentation</li>
<li><a href="https://github.com/creativecommons/cc-resource-archive/issues/41">#41</a> - UI/UX for resource page</li>
<li><a href="https://github.com/creativecommons/cc-resource-archive/issues/272">#272</a> - unwanted underline in the resource page</li>
</ul>
<h2 id="my-experience-from-getting-selected-to-midterm">My Experience - From Getting Selected To Midterm</h2><p>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.</p>
<p>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 <strong>a combined effort</strong>. 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.</p>
<h2 id="gratitude-and-acknowledgements">Gratitude and Acknowledgements</h2><p>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 <a href="https://opensource.creativecommons.org/blog/authors/sara/">Sara Lovell (Possumbilities)</a> 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 <a href="https://opensource.creativecommons.org/blog/authors/TimidRobot/">Timid Robot</a> and <a href="https://opensource.creativecommons.org/blog/authors/shafiya/">Shafiya Heena</a> 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.</p>
<h2 id="join-the-discussion">Join The Discussion</h2><p>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 <a href="https://github.com/creativecommons/cc-resource-archive">here</a>, to find the codebase and join the discussion over there.</p>
</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"></link><updated>2024-07-10T00:00:00Z</updated><author><name>['NaishaSinha']</name></author><id>urn:uuid:6696bca3-7190-3d40-a3b6-75fd01ebe8c5</id><content type="html"><p><img src="/blog/entries/2024-07-10-automating-quantifying/Automating - GSoC Logo.png" alt="GSoC 2024"></p>
<h2 id="introduction">Introduction</h2><hr>
<p>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 <strong><a href="https://opensource.creativecommons.org/blog/entries/2022-12-07-berkeley-quantifying/">here!</a></strong>).
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. <br></p>
<p>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. <strong><a href="https://opensource.creativecommons.org/blog/entries/2024-08-22-automating-quantifying/">Automating Quantifying the Commons: Part 2</a></strong> will be posted after successful completion of the
entire summer program.</p>
<h2 id="pre-program-knowledge-and-associated-challenges">Pre-Program Knowledge and Associated Challenges</h2><hr>
<p>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 (<strong><a href="https://github.com/creativecommons/quantifying/pull/97">PR #97</a></strong>), 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.</p>
<h2 id="development-process-midterm">Development Process (Midterm)</h2><hr>
<h3 id="i-data-flow-diagram-construction">I. Data Flow Diagram Construction</h3><p>Before starting the code implementation, I decided to develop a <strong>Data Flow Diagram (DFD)</strong>, which provides a visual
representation of how data flows through a software system. While researching effective DFDs for inspiration, I came across
a <strong><a href="https://docs.aws.amazon.com/whitepapers/latest/microservices-on-aws/distributed-data-management.html">technical whitepaper by Amazon Web Services (AWS)</a></strong> 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.</p>
<p><img src="/blog/entries/2024-07-10-automating-quantifying/DFD.png" alt="DFD">
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.</p>
<h3 id="ii-identifying-the-first-data-source-to-target">II. Identifying the First Data Source to Target</h3><p>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 <strong>Google Custom Search</strong>
data source, which has the largest number of data retrieval potential among all the other sources.</p>
<h3 id="iii-directory-setup-code-implementation">III. Directory Setup + Code Implementation</h3><p>Based on the DFD, <strong><a href="https://opensource.creativecommons.org/blog/authors/TimidRobot/">Timid Robot</a></strong> (my mentor) and I identified the directory process to be as such: within our <code>scripts</code> directory, we would have
separate sub-directories to reflect the phases of data flow, <code>1-fetch</code>, <code>2-process</code>, <code>3-report</code>. 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. <br></p>
<p><strong><code>1-fetch</code></strong></p>
<p>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:</p>
<ol>
<li><p><strong>Reading Technical Whitepapers:</strong> 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 <strong><a href="https://engineering.fb.com/2024/05/22/data-infrastructure/composable-data-management-at-meta/">Composable Data Management at Meta</a></strong> (I mainly used the <em>Building on Similarities</em> section
to study the logical components of data systems).</p>
</li>
<li><p><strong>Referencing the Most Recent Quantifying Codebase:</strong> The pre-automation code that was already implemented by previous developers
for <em>Quantifying the Commons</em>
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.</p>
</li>
<li><p><strong>Writing Documentation for the Code:</strong> As a part of this project, I assigned myself the task of developing documentation for
the Automating Quantifying the Commons project (<strong><a href="https://unmarred-gym-686.notion.site/Automating-Quantifying-the-Commons-Documentation-441056ae02364d8a9a51d5e820401db5?pvs=4">can be accessed here!</a></strong>). 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.</p>
</li>
</ol>
<p>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. <br></p>
<p>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.</p>
<p>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.</p>
<p><strong><code>2-process</code></strong></p>
<p>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 <code>2-process</code> 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.</p>
<p><strong><code>3-report</code></strong></p>
<p>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: <strong>(1)</strong> Reports by Country, <strong>(2)</strong> Reports by License Type,
and <strong>(3)</strong> 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.</p>
<ol>
<li><strong>Key Feature #1:</strong> 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.</li>
<li><strong>Key Feature #2:</strong> 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.</li>
<li><strong>Key Feature #3:</strong> The program automatically generates and/or updates an individual <code>README</code> file for each quarter's reports. This <code>README</code> organizes
all generated report images within that quarter into one page, alongside basic report descriptions.</li>
</ol>
<h2 id="mid-program-conclusions-and-upcoming-tasks">Mid-Program Conclusions and Upcoming Tasks</h2><hr>
<p>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 <code>shared</code> module within the scripts can be very beneficial to simplify the coding process.</p>
<p>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.</p>
<p>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.</p>
<p>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!</p>
<h2 id="additional-readings">Additional Readings</h2><hr>
<ul>
<li><a href="https://opensource.creativecommons.org/blog/entries/2024-08-22-automating-quantifying/">Automating Quantifying the Commons: Part 2</a> | Author: Naisha Sinha | Aug. 2024</li>
<li><a href="https://opensource.creativecommons.org/blog/entries/2022-12-07-berkeley-quantifying/">Data Science Discovery: Quantifying the Commons</a> | Author: Dun-Ming Huang (Brandon Huang) | Dec. 2022</li>
</ul>
</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"></link><updated>2024-05-28T00:00:00Z</updated><author><name>['sara', 'shafiya', 'TimidRobot']</name></author><id>urn:uuid:7ea5e14e-e9cb-35f3-8be8-e344b66f7a7e</id><content type="html"><p>Creative Commons (CC) launched a new
<a href="https://creativecommons.org/">CreativeCommons.org</a> website on 2023 September
27th. This relaunch included not just the website, but the entire technology
stack (platform, server, and website components).</p>
<h2 id="improved-platform">Improved platform</h2><p>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.</p>
<h2 id="improved-services">Improved services</h2><p>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
<a href="https://www.cloudflare.com/galileo/">Project Galileo</a>. The new website
requires only two services (Apache2 and MariaDB).</p>
<h2 id="improved-website-components">Improved website components</h2><h3 id="vocabulary">Vocabulary</h3><p>The website consists of a variety of components that use the Vocabulary design
system (<a href="https://github.com/creativecommons/vocabulary">creativecommons/vocabulary</a>) 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.</p>
<p>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.</p>
<p>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.</p>
<h3 id="wordpress">WordPress</h3><p>The project utilizes a custom WordPress theme
(<a href="https://github.com/creativecommons/vocabulary-theme">creativecommons/vocabulary-theme</a>) that implements the new
Vocabulary design system.</p>
<p>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.</p>
<p>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.</p>
<p>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.</p>
<p>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.</p>
<h3 id="cc-legal-tools">CC Legal Tools</h3><p>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!</p>
<p>The project to rewrite the CC Legal Tools and replace the legacy ccEngine began
in 2020 with a request for proposals (<a href="https://docs.google.com/document/d/1mlgmjDorTEwgIRRrvILK3v0pTJbGx8fB5SE1yplrz3Y/edit">RFP: License Infrastructure - Google
Docs</a>). The <a href="https://www.caktusgroup.com/">Caktus Group</a> 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 (<a href="/blog/entries/2023-08-25-machine-layer/">CC Legal Tools:
Machine-Readable Layer — Creative Commons Open
Source</a>).</p>
<p>The new CC Legal Tools consist of two repositories:</p>
<ol>
<li><a href="https://github.com/creativecommons/cc-legal-tools-app">creativecommons/cc-legal-tools-app</a>: <em>Static site
generator using Django</em></li>
<li><a href="https://github.com/creativecommons/cc-legal-tools-data">creativecommons/cc-legal-tools-data</a>: <em>Inputs and
outputs of the application</em></li>
</ol>
<p>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:</p>
<ul>
<li>Currently supported software (Python 3, Django 4.2, etc.)</li>
<li>Simplified data model</li>
<li>Improved translation handling</li>
<li>Improved RDF/XML generation/management</li>
</ul>
<p>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.</p>
<h3 id="chooser">Chooser</h3><p>The new chooser beta (<a href="https://github.com/creativecommons/chooser">creativecommons/chooser</a>) was promoted to
production with the new header and footer from the Vocabulary design system for
a more uniform user experience.</p>
<h3 id="faq-platform-toolkit">FAQ &amp; Platform Toolkit</h3><p>The FAQ (<a href="https://github.com/creativecommons/faq">creativecommons/faq</a>) and
Platform Toolkit (<a href="https://github.com/creativecommons/mp">creativecommons/mp</a>)
were updated to use the new header and footer from the Vocabulary design system
for a more uniform user experience.</p>
<h2 id="improved-development">Improved development</h2><p>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
(<a href="https://github.com/creativecommons/index-dev-env">creativecommons/index-dev-env</a>). This means that not only did
we fix many old bugs, but when new bugs are identified, we can fix them more
rapidly!</p>
<h2 id="thank-you">Thank you</h2><p>Thank you to the people who directly contributed to the success of the new
website!</p>
<ul>
<li>Nate, former Director of Communications &amp; Community</li>
<li>Sara, Full Stack Engineer</li>
<li>Shafiya, Systems Engineer</li>
<li>Timid Robot, Director of Technology</li>
<li><em>as well as many other previous staff, community contributors, and other
<a href="/community/supporters/">supporters</a>!</em></li>
</ul>
</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"></link><updated>2023-08-28T00:00:00Z</updated><author><name>['saurabh']</name></author><id>urn:uuid:ca25cf56-a3e2-3703-bd66-7619befdf05c</id><content type="html"><p>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.</p>
<p><img src="/blog/entries/2023-08-25-machine-layer/gsoc2023cc.png" alt="GSoC 2023 and CC"></p>
<h2 id="project-overview">Project Overview</h2><p>The project's core focus was to enhance the Creative Commons (CC) <a href="https://github.com/creativecommons/cc-legal-tools-app">Legal Tools
app</a> 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.</p>
<h2 id="getting-started">Getting Started</h2><p>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.</p>
<p>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.</p>
<h2 id="challenges-and-learning-opportunities">Challenges and Learning Opportunities</h2><p>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.</p>
<p>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.</p>
<h2 id="contributions-and-the-work">Contributions and The Work</h2><p>As the project evolved, I worked to dynamically generate RDF/XML files,
allowing the app to generate machine-readable licenses on-the-fly.</p>
<p>To maintain an organized approach, it is ensured that the generated RDF files
are sorted, all the credit goes to <a href="/blog/authors/TimidRobot/">Timid Robot</a>.</p>
<p>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.</p>
<h2 id="overview-of-changes">Overview of changes:</h2><ul>
<li><strong>Improved Structure and Consistency:</strong><ul>
<li>The new RDF/XML boasts a more organized, standardized structure, aligning
with RDF standards. This enhances machine comprehension and accurate data
processing.</li>
</ul>
</li>
<li><strong>Updated License Information</strong>:<ul>
<li>License information has been updated to reflect the latest permissions and
restrictions. This ensures users and systems are informed accurately.</li>
</ul>
</li>
<li><strong>Alignment with RDF Best Practices</strong>:<ul>
<li>Changes align the representation with RDF best practices. This boosts
interoperability and compatibility, thanks to standardized namespaces,
consistent naming, and proper relationship definitions.</li>
</ul>
</li>
</ul>
<p>Throughout the journey, I had the privilege of working closely with my mentor,
engaging in collaborative discussions and receiving insightful code reviews..</p>
<p>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.</p>
<p>The improvements made during GSoC will continue to ripple through the CC Legal
Tools app, benefiting users and the broader open-source community.</p>
<h2 id="mentor-and-support">Mentor and Support</h2><p>A heartfelt thanks to my mentor, <a href="/blog/authors/TimidRobot/">Timid Robot</a>, 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.</p>
<h2 id="takeaways-and-conclusion">Takeaways and Conclusion</h2><p>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.</p>
<p>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.</p>
<p>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.</p>
<p>Thank you for joining me on this expedition. Here's to the future of
open-source contributions and the endless possibilities they hold.</p>
<p>Cheers,</p>
<p>Saurabh Kumar</p>
</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"></link><updated>2023-06-20T00:00:00Z</updated><author><name>['shafiya']</name></author><id>urn:uuid:65e12b2b-0d17-3dea-82a1-96d24beaa8a4</id><content type="html"><p>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).</p>
<p>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.</p>
<p>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.</p>
<p>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.</p>
<p>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.</p>
<p>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.</p>
<p>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.</p>
<p>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.</p>
</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"></link><updated>2023-04-26T00:00:00Z</updated><author><name>['grace_coleman', 'anthony_ho', 'tyler_phillips', 'claire_wan']</name></author><id>urn:uuid:c9c225be-0216-3f8b-98d2-db7836cd912b</id><content type="html"><p>Quantifying the Commons</p>
<p>University of Michigan, School of Information</p>
<h2 id="project-objective-and-problem-statement">Project Objective and Problem Statement</h2><p>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).</p>
<h2 id="data-collection">Data Collection</h2><p>Data was collected from <a href="https://www.oercommons.org/">OER Commons</a>, 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.</p>
<h2 id="exploratory-data-analysis-eda">Exploratory Data Analysis (EDA)</h2><p>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.</p>
<h3 id="diagram-1">Diagram #1:</h3><p><img src="/blog/entries/2023-04-26-umsi-how-many-mona-lisas/diagram_01.png" alt="Diagram #1: Percentage of Items per License Type"></p>
<p>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.</p>
<h3 id="diagram-2">Diagram #2:</h3><p><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"></p>
<p>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.</p>
<h3 id="diagram-3">Diagram #3:</h3><p><img src="/blog/entries/2023-04-26-umsi-how-many-mona-lisas/diagram_03.png" alt="Diagram #3: Percentage of Items by Language"></p>
<p>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.</p>
<h3 id="diagram-4">Diagram #4:</h3><p><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"></p>
<p>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.</p>
<h3 id="diagram-5">Diagram #5:</h3><p><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"></p>
<p>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%.</p>
<h2 id="visualizations">Visualizations</h2><h3 id="diagram-6">Diagram #6:</h3><p><img src="/blog/entries/2023-04-26-umsi-how-many-mona-lisas/diagram_06.png" alt="Diagram #6: License Type Breakdown by Primary User"></p>
<p>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).</p>
<h3 id="diagram-7">Diagram #7:</h3><p><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"></p>
<h3 id="diagram-8">Diagram #8:</h3><p><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"></p>
<h3 id="diagram-9">Diagram #9:</h3><p><img src="/blog/entries/2023-04-26-umsi-how-many-mona-lisas/diagram_09.png" alt="Diagram #9: Subject Area by License"></p>
<p>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.</p>
<p>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.</p>
<h3 id="diagram-10">Diagram #10:</h3><p><img src="/blog/entries/2023-04-26-umsi-how-many-mona-lisas/diagram_10.png" alt="Diagram #10: Material Type Breakdown by Education Level"></p>
<p>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.</p>
<p>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.</p>
<h2 id="key-value">Key Value</h2><p>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.</p>
<h2 id="next-steps">Next Steps</h2><p>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.</p>
<h2 id="acknowledgements">Acknowledgements</h2><p>We would like to express our gratitude towards Timid Robot Zehta, our client,
for working on behalf of CC, as well as <a href="https://www.oercommons.org/">OER Commons</a> 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.</p>
</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"></link><updated>2023-03-24T00:00:00Z</updated><author><name>['sara']</name></author><id>urn:uuid:40a26755-2701-374d-a187-7bb3b00b503c</id><content type="html"><p>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!</p>
<p>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.</p>
<p>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.</p>
<p>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.</p>
<p>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.</p>
<p>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.</p>
<p>Whether an Error or Feature/functionality Issue, once it's been submitted, in
accordance with the <a href="/contributing-code/">Contribution
Guidelines</a>, 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.</p>
<p>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.</p>
<p>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.</p>
<p>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.</p>
<p>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.</p>
<p>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.</p>
<p>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 <a href="/contributing-code/repo-labels/#status">Repository
Labels Status section</a> for more
information)</p>
<p>During this process it is worth noting that there will be multiple types of
contribution. For example:</p>
<ul>
<li>The Issue itself is a contribution</li>
<li>Comments on the Issue from the community refining it are each contributions</li>
<li>Someone's comment on the Issue helping another person sort out why the Error
is occurring is a contribution.</li>
<li>Someone finding another related Issue and linking it as relevant to that
Issue is a contribution.</li>
</ul>
<p>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:</p>
<ul>
<li>The code work encounters a problem, someone asks for assistance within their
draft PR, and several members offer help as comments.</li>
<li>Someone reviews the final PR and leaves a detailed review on what might need
addressing</li>
<li>A discussion breaks out on the best way to resolve an encountered problem
with the PR, each of these comments is a contribution</li>
<li>And, of course, the PR itself is a contribution.</li>
</ul>
<p>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.</p>
<p>To get here it took multiple contributions, from different community members,
that's the power of open source!</p>
</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"></link><updated>2023-02-01T00:00:00Z</updated><author><name>['precious']</name></author><id>urn:uuid:b485694d-3627-3a6f-b124-489f4786b53b</id><content type="html"><p><img src="https://res.cloudinary.com/dexcmkxjl/image/upload/v1675262087/1157214599-I-may-not-be-there-yet_s3cjxm.webp" alt="quote image"></p>
<p><strong>Outreachy Internship- Refactor CC Meta Search- Mid-point Progress Update</strong></p>
<p>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.</p>
<p>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.</p>
<p>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.</p>
<p>Additionally, I had to prioritize certain tasks over others and make adjustments to my plan as necessary.</p>
<p>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.</p>
<p>Overall, My aim is to ensure that the website is fully functional and user-friendly for all users.</p>
</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"></link><updated>2023-01-04T00:00:00Z</updated><author><name>['precious']</name></author><id>urn:uuid:54076fa3-da5e-30ee-afe8-9b9d8baadb6d</id><content type="html"><p><img src="https://res.cloudinary.com/dexcmkxjl/image/upload/v1671657493/blog_image_kjvep8.jpg" alt="quote image"></p>
<p><em>Take a moment to resonate with the words above. This is a principle I always follow in life. "Doing it scared"</em></p>
<p><strong>Get To Know Me</strong></p>
<p>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.</p>
<p>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.</p>
<p>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.</p>
<p><strong>Why I applied to Outreachy</strong></p>
<p>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 <a href="https://opensource.com/resources/what-open-source">open source</a> really appealed to my personality.</p>
<p>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 <a href="https://www.outreachy.org/">Outreachy</a> 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.</p>
<p>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;</p>
<p>The first stage of the application process was the <strong>initial application</strong>. 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.</p>
<p><img src="https://res.cloudinary.com/dexcmkxjl/image/upload/v1671658423/initial_applic_bnriee.png" alt="initial application mail"></p>
<p>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 <a href="https://creativecommons.org/">Creative Commons</a> project "Refactor CC Meta Search".</p>
<p><a href="https://creativecommons.org/">Creative Commons</a> 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.</p>
<p>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.</p>
<p>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.</p>
<p><img src="https://res.cloudinary.com/dexcmkxjl/image/upload/v1671658873/accepted_chmuad.png" alt="acceptance mail"></p>
<p>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.</p>
<p><img src="https://res.cloudinary.com/dexcmkxjl/image/upload/v1671659054/interns_tedoag.png" alt="interns page"></p>
<p>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.</p>
</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"></link><updated>2022-12-16T00:00:00Z</updated><author><name>['sara']</name></author><id>urn:uuid:8f6dcc9a-f3b5-3f3f-9e29-56ef6d657688</id><content type="html"><p>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.</p>
<p>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.</p>
<p>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.</p>
<p>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.</p>
<p>That also means that documenting <em>issues</em> 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.</p>
<p>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