LDraw.org Discussion Forums
towards a usable CC-BY-4.0 parts library - Printable Version

+- LDraw.org Discussion Forums (https://forums.ldraw.org)
+-- Forum: General (https://forums.ldraw.org/forum-12.html)
+--- Forum: General LDraw.org Discussion (https://forums.ldraw.org/forum-6.html)
+--- Thread: towards a usable CC-BY-4.0 parts library (/thread-27440.html)



towards a usable CC-BY-4.0 parts library - Johannes Schauer - 2023-05-15

Hi,

for the Debian Free Software Guidelines (DFSG), the CC-BY-2.0 license is considered non-free due to its several issues. I was very happy with the recent switch to CC-BY-4.0 as that license is considered free according to the DFSG. The recent release 2302 adjusted the LICENSE header of many parts with the result that 74.8% of all parts are now licensed under CC-BY-4.0 (and not anymore the problematic CC-BY-2.0). This is very good but there are still some pitfalls.

I tried to rank parts by their popularity because I wanted to figure out whether any "important" parts are still in the remaining 25.2% under CC-BY-2.0. To this end, I downloaded the rebrickable.com database of official LEGO sets and then sorted parts by how often they appear in these sets. Of the top 90% of that list, 376 parts are still licensed under CC-BY-2.0. This includes important parts like "3623.dat" (Plate  1 x  3). The full list (sorted from more popular to less popular) is:

Code:
3710 54200 3666 2412b 3623 3622 2420 43093 32062 3437 3460 85984 6636 3713
11477 3034 3700 2357 4519 15068 59900 87580 87087 4162 3008 2877 6091 32054
4477 44728 6536 3705 3749 3011 6541 2540 60897 3037 3832 48336 3701 32013
63868 32140 3298 32316 30414 32073 22885 32000 6632 61409 53451 3706 3035
4589 18654 32526 42003 32002 2445 32039 3894 6587 32034 32278 40490 2450
4085c 32184 24246 49668 3702 3297 3659 3036 4282 41770 41769 3958 3703 64644
6231 4599b 3707 63965 28192 3633 30153 30377 32064b 3176 3045 3957a 32449
47457 30357 3829c01 2449 2458 44294 30565 60475b 32016 3895 41239 18677 3033
6005 88072 3678b 6232 4216 2921 87620 30503 3737 30137 2419 40666 32009 92947
4600 3708 4733 87747 32556 14716 26604 6553 3038 4510 6215 32056 2730 2825
2817 32291 54383 3957b 3738 54384 2302 47905 2453b 33183 37762 3839b 3831
87544 48092 3830 30363 970c03 2417 24309 2460 32018 32192 4599a 3185 4488
6629 42022 32014 24316 4871 4697b 32015 30383 60593 4490 30236 65304 50745
32348 32271 2343 30602 43898 13965 41539 30237b 60602 2453a 3743 92950 13547
30553 48989 32017 4623 43888 6081 32063 4349 91988 2462 30237a 23969 1121L
1131L 1132L 1141L 1142L 1111L 1031B 1041B 1021B 1122L 1011A 6106 3856 32474
6003 18649 3046a 40379 970c28 47456 30552 3823 30165 970c27 4735 30044 6182
3299 15533 4275b 2723 31000 32250 4445 15706 6249 4083 30031 50304 upn0389
2852 3307 50305 32072 3455 3676 m3001 11055 6222 43719 3648b 3300 4006 70681
32556a 30099 2853 11610 1531 47458 32557 1521 1511 1561A 1561B 41748 3704
33243 58247 970c22 45677 52031 3626apr0001 32059 45590 30562 3901 2335 41747
2530 3041 970c05 3675 41532 32065 2926 43710 42135 30046 30364 4085b 3649
30355 43711 3456 30356 4095 6259 3685 55236 4273b 4476b 3043 2340 44126 71509
60475a 3959 48169 62361 31110 6583 273 48171 92338 32126 4854 64727 32249
14718 39888 6187 3626bpr0001 2486 3900 1927 30504 41854 6140 30586 30166 2744
2854 43713 57909b 2314 2315 2341Mx 2351Mx 2361Mx upn0379 3229a 3230a 47753
6190 44809 30132 41531 85975 59230 4522 78c02 66956 3626b 53400 43712 4528
upn0373 970c12 3943b 2300 40378 23229 48170 33172 6183 61072 4199 74747 4515
2437 78c09 2412a m3003 18041 72454

In https://forums.ldraw.org/thread-27315-post-50565.html#pid50565 Orion Pobursky points out that in case 3623.dat the file could actually be switched to 4.0 and maybe there are more instances like that. Is there a way for me to find those myself?

So there is the problem that important parts like the Plate 1 x 3 will be missing from a CC-BY-4.0 parts list (even though Plate 1 x  2 will be included). But there is another problem. As parts include other parts, such a CC-BY-4.0 parts list would also have to remove all parts t hat are CC-BY-4.0 but which depend on CC-BY-2.0 parts as without those, the part would be broken. I parsed all dat files and arranged their inter-dependencies in a directed graph. By finding the recursive ancestors for each node, we can find the parts which are required by a lot of other parts but which are still CC-BY-2.0 and thus block a lot of other parts from being included in a CC-BY-4.0 list. Here is a top-50 list of the CC-BY-2.0 parts and by how many parts those are needed:

Code:
p/4-4cyli.dat 14612
p/rect.dat 7204
p/4-4ring3.dat 6968
p/2-4cyli.dat 5434
p/4-4ring2.dat 3932
p/4-4cylc.dat 3125
p/1-4chrd.dat 2772
p/1-8cyli.dat 2054
p/1-8chrd.dat 1969
p/3-4cyli.dat 1891
p/box3u2p.dat 1840
p/4-4ring4.dat 1635
p/1-8sphe.dat 1630
p/3-8cyli.dat 1553
p/box4-1.dat 1460
p/box2-7.dat 1371
p/4-4ring1.dat 1328
p/48/1-4edge.dat 1250
p/3-16cyli.dat 1214
p/4-4con3.dat 1101
p/box3u8p.dat 1060
p/48/1-4cyli.dat 1051
p/4-8sphe.dat 996
p/1-16cyli.dat 995
p/2-4cylc.dat 958
p/box4-4a.dat 918
p/2-4ring3.dat 770
p/3-16chrd.dat 700
p/box3u5p.dat 697
p/box3u4a.dat 694
p/3-16ndis.dat 653
p/4-4ring7.dat 642
p/box4t.dat 613
p/box5-4a.dat 590
p/1-4ring1.dat 568
p/4-4ring9.dat 532
p/2-4ring1.dat 513
p/8/3-8cylo.dat 509
p/7-16cyli.dat 504
p/box4-2p.dat 499
p/4-4con4.dat 494
p/4-4con0.dat 493
p/2-8sphe.dat 491
p/connhole.dat 480
p/5-8cyli.dat 478
p/1-4ring3.dat 477
p/1-4ring4.dat 467
p/1-4ring2.dat 458
p/8/3-8chrd.dat 451
p/48/1-8chrd.dat 429

Parts like p/rect.dat are very trivial but are used by thousands of other parts and are still CC-BY-2.0.

I would submit new CC-BY-4.0 versions of these important parts but many are just trivial one-liners where it's difficult to come up with a version that does functionally the same but looks different...

What can be done to improve the situation? What can I do to help?


RE: towards a usable CC-BY-4.0 parts library - N. W. Perry - 2023-05-15

(2023-05-15, 9:36)Johannes Schauer Wrote: Parts like p/rect.dat are very trivial but are used by thousands of other parts and are still CC-BY-2.0.

I would submit new CC-BY-4.0 versions of these important parts but many are just trivial one-liners where it's difficult to come up with a version that does functionally the same but looks different...

What can be done to improve the situation? What can I do to help?

It seems to me like you've mentioned the obvious and easiest solution already. Heck, even I could whip up a 1x3 plate or a rectangle primitive and grant it the 4.0 license and re-submit it as a totally new part. A trivial one-liner that only references other files would not need to look different; there really isn't any creative content there that would be in danger of being plagiarized. Same with a geometrically defined part like a rect primitive: mathematically the content can only be one thing as defined by the spec. There's no intellectual property to protect (or if there is, it's in the defining specification, not the file itself).

I'm not saying to ignore the license, of course, just that we needn't worry about copying an existing part if its content is so trivial that the same content would be arrived at by any author independently. But if you really do want to recognize the original author(s), you could always place a credit to them within the new part file as a comment, or history line.


RE: towards a usable CC-BY-4.0 parts library - Orion Pobursky - 2023-05-15

The next update will make this percentage even smaller and, hopefully, put most of the commonly used bricks and primitives into 4.0. Let's table this discussion until then.

P.S. This next update will be in June
P.P.S. Primitives can be regenerated programmatically, if needed, but I'd rather go through the process first.


RE: towards a usable CC-BY-4.0 parts library - Johannes Schauer - 2023-05-15

(2023-05-15, 13:05)N. W. Perry Wrote: It seems to me like you've mentioned the obvious and easiest solution already. Heck, even I could whip up a 1x3 plate or a rectangle primitive and grant it the 4.0 license and re-submit it as a totally new part.

I've done exactly that and created a small Python script that is able to generate dat files for a few important plates, bricks and slopes:

[Image: 9reb.png]

(2023-05-15, 13:05)N. W. Perry Wrote: A trivial one-liner that only references other files would not need to look different; there really isn't any creative content there that would be in danger of being plagiarized. Same with a geometrically defined part like a rect primitive: mathematically the content can only be one thing as defined by the spec. There's no intellectual property to protect (or if there is, it's in the defining specification, not the file itself).

That was my intuition as well, but I'm not a lawyer so I'm unable to say for sure.  Smile

Quote:The next update will make this percentage even smaller and, hopefully, put most of the commonly used bricks and primitives into 4.0. Let's table this discussion until then.

Agreed. I'll repeat my analysis again in June.

Thank you for all your work!!  Heart