Post Arm8ACwWuzWbzNVCFM by vovanium@quietplace.xyz
 (DIR) More posts by vovanium@quietplace.xyz
 (DIR) Post #AriDP3QAKEl3wIQHh2 by kotik@mastodon.ml
       2025-03-04T13:21:35Z
       
       2 likes, 1 repeats
       
       
       
 (DIR) Post #AriDZfZ7MOtJ8bfj04 by Suiseiseki@freesoftwareextremist.com
       2025-03-04T13:23:29.876237Z
       
       1 likes, 0 repeats
       
       @kotik Sorry to break it to you, but the kernel, Linux is not even source-available, as it contains several proprietary programs without source code.
       
 (DIR) Post #AriEMGGsBzZKsXJCN6 by kotik@mastodon.ml
       2025-03-04T13:32:16Z
       
       0 likes, 0 repeats
       
       @Suiseiseki that's why I love the internets :ablobcatheartsqueeze:
       
 (DIR) Post #AriHl0WECDRL7qyxJw by vovanium@quietplace.xyz
       2025-03-04T14:06:34.253Z
       
       0 likes, 0 repeats
       
       @Suiseiseki@freesoftwareextremist.com @kotik@mastodon.ml Proofs?
       
 (DIR) Post #AriHl1VCXWDGAxVeMK by Suiseiseki@freesoftwareextremist.com
       2025-03-04T14:10:19.452358Z
       
       0 likes, 0 repeats
       
       @vovanium @kotik Let me guess, after seeing all this proof your next line will be; "but that's not software".Despite how ironic it is, it is a *fact* that Linux is not completely source-available and therefore is proprietary software, as all of it doesn't respect the 4 freedoms; https://www.gnu.org/philosophy/free-sw.html#four-freedomsLinux doesn't meet the 10 requirements of the OSD either; https://opensource.org/osd (see requirement 2).Please observe the following proprietary software without source code, disguised as arrays of numbers (this is just a few of them);https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git/tree/arch/powerpc/platforms/8xx/micropatch.chttps://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git/tree/drivers/media/usb/dvb-usb/af9005-script.hhttps://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git/tree/drivers/media/common/b2c2/flexcop-fe-tuner.c#n227https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git/tree/drivers/media/i2c/vgxy61.c#n115https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git/tree/drivers/iio/proximity/aw96103.c#n122Now removed (It took >18 years for it to be removed, and it wasn't removed because it was proprietary, it was only removed because it was totally obsolete.);https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git/commit/?id=00f3696f7555d0890ae07b635e6ccbf39fd2eb3aIf the license of the above is GPLv2-only, I'm sure you could find the source code for everyone (spoiler; it's not available).There are also a lot of questionable tables without any comments or documentation that look like they could contain software (even non-creative data that does not qualify for copyright should have its format documented, or such detail should be at least commented);https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git/tree/drivers/net/ethernet/realtek/r8169_main.c#n3322https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git/tree/drivers/net/usb/r8152.c#n7824https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git/tree/drivers/net/wireless/realtek/rtw88/rtw8821c.c#n111https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git/tree/drivers/net/wireless/realtek/rtw88/rtw8822b.c#n103https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git/tree/drivers/net/wireless/realtek/rtw88/rtw8723d.c#n45https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git/tree/drivers/net/wireless/realtek/rtw89/rtw8852a.c#n68https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git/tree/drivers/net/phy/mscc/mscc_main.c#n667But that really is just the tip of the iceberg - there's a whole lot more proprietary stuff in Linux; https://linux-libre.fsfla.org/pub/linux-libre/releases/6.13.3-gnu/deblob-6.13 (the script functions don't differentiate between array encoded software, questionable data tables and proprietary peripheral software loading machinery, although the only way you can really tell the difference between the former two is reverse engineering anyway).All of that is separate to the "linux-firmware" project, which is a massive collection of proprietary software derivative works (with a handful of free peripheral software, distributed under GPLv2-only compatible terms with source code) that some Linux developers maintain, many of which are updated in lockstep with the Linux half (also, one of the peripheral software files apparently contains Linux without source code, but it seems that's alright).Linux-libre original announcement; https://web.archive.org/web/20140203134408/http://lists.autistici.org/message/20080221.002845.467ba592.en.html
       
 (DIR) Post #ArkIxDcFobkRUW6iQq by vovanium@quietplace.xyz
       2025-03-04T15:42:51.661Z
       
       0 likes, 0 repeats
       
       @Suiseiseki@freesoftwareextremist.com You're almost predicted the next question, but I like to dig more deeply.What makes a specific bunch of numbers open or closed source?What if it is a...microcode published by the device manufacturer?blob published by the manufacturer, like device initialization sequence?exactly the same in decoded (using mfg's docs) form?same with undocumented codes?fine tuning coefficient table acquired by a (long and expensive) experiment?machine code trick made with by-hand binary encoding?control sequence obtained by reverse-engineering and experimenting with the device?(and more questions alike)
       
 (DIR) Post #ArkIxEyckvEhiBa5wG by Suiseiseki@freesoftwareextremist.com
       2025-03-05T13:33:09.784415Z
       
       0 likes, 0 repeats
       
       @vovanium >What makes a specific bunch of numbers open or closed source?Arrays of merely numbers, or pure data is not software and is often not creative enough to apply for copyright, although such an array without an explanation as to where that data came from or a format documentation is extremely dubious.It's very popular for manufacturers to array encode proprietary software to make it convenient to load (since you can make a single write() operation with the array as input, rather than having to call open() and read() to get the software into memory (both of these operations can fail and thus need error handling)).As a result, such software can look like merely an arrays or number, although such array contains proprietary software without source code.>microcode published by the device manufacturer?A microcode update usually consists of undocumented microprocessor machine code that define operations to execute and where to hook those operations into hardware microcode and such instruction set is often advanced enough to allow Machine Specific Register and CPUID reconfiguration.Typically device manufacturers provide only the binary form, leave the instruction set undocumented and encrypt and sign the image to deny you the freedom to understand it and/or change it even if you were willing to reverse engineer it.Free software microcode updates would include the source code (the higher level language the hooks were programmed in), under a free license and would also include documentation of the the instruction set and also the necessary information required to compile and execute a modified version would need to be available too (the source code of the microcode in maskROM would be good to include, but won't be necessary if it's possible to patch the hardware without it).>blob published by the manufacturer, like device initialization sequence?Typically a device initialization sequence consists of values written to a bunch of different memory addresses that bring-up the hardware and enable and disable certain features.For example, say you had a theoretical device which required 16 magic values written to 16 different memory addresses and the manufacturer has gone and written an init sequence and of course has added comments so they can come back later and know what each line does.Such manufacturer doesn't want to users to have freedom, thus they refuse to provide any hardware documentation, go and strip the comments off and give the user a non-source form that looks like this;{0x00000001, 0x42},{0x00000000, 0x0},{0xFFFF0000, 0x400},...{0xFFFFA000, 0x0},{0xFFFFB000, 0x1C200},{0xFFFFC000, 0x38400},{0x00000001, 0x42}As clearly you do not have the freedom to understand and change that without at least reverse engineering it, that is not the source code.Meanwhile, the source form of such init sequence could be;addr_write(0x00000001, 0x42);//signal start init sequenceaddr_write(0x00000000, 0x0); //trap null - set to 0x1 to not trap null.addr_write(0xFFFF0000, 0x400);//allocate 1024KiB of memory for the bootloader...addr_write(0xFFFFA000, 0x0);//disable out-of-order execution (enable with 0x1, note that it makes the processor unstable)addr_write(0xFFFFB000, 0x1C200);//set baud rate to 115200addr_write(0xFFFFC000, 0x38400);//set clock rate to double the baudaddr_write(0x00000001, 0x42); //signal finished init sequenceAh you can see, with the source form above, you have the freedom to change the software and to configure the hardware to do your computing as you wish.>exactly the same in decoded (using mfg's docs) form?Yes, sometimes manufacturers go document the init sequence acceptably in their hardware documentation and then go and write up the init table without comments (since you can just reference the documentation if you want to change it later).Provided the manufacturer was to make available such hardware documentation without demanding a NDA, even an init table can be the source code (chances are someone will go add the missing comments before filing the commit too).>same with undocumented codes?I'm not sure what you're asking here, but software in an undocumented instruction set is indeed proprietary.>fine tuning coefficient table acquired by a (long and expensive) experiment?A lookup table filled with mathematical coefficients that you can use to quickly approximate say square roots is the source code and generally that kind of thing has a comment on top, or array name explaining what such array is for.>machine code trick made with by-hand binary encoding?If machine code was handcrafted, that machine code is the source form.Typically handcrafted assembly is less than 100 bytes, or is a few hundred at most (for anything longer, anyone not insane would write assembly and comment that assembly).Although if there is a 50KiB executable and someone claims to have handcrafted that in machine code, I wouldn't believe them.>control sequence obtained by reverse-engineering and experimenting with the device?A reverse-engineered init sequence deduced by reverse-engineering and experimenting always contains comments describing what is believed each line, or group of lines does.
       
 (DIR) Post #Arm8ACwWuzWbzNVCFM by vovanium@quietplace.xyz
       2025-03-06T01:22:24.362Z
       
       0 likes, 0 repeats
       
       @Suiseiseki@freesoftwareextremist.com A microcode update usually consists of undocumented microprocessor machine code that define operations to execute and where to hook those operations into hardware microcode and such instruction set is often advanced enough to allow Machine Specific Register and CPUID reconfiguration.You see, there's no intention of CPU manufacturer for you to modify the microcode. The microcode is their private thing, like the whole CPU circuit schematics. If you're open source purist you should require CPU have its circuit schematics open too. Otherwise how can you be sure some instruction #4E71h known to you as NOP does not hide some special commands in its bits?Ah you can see, with the source form above, you have the freedom to change the software and to configure the hardware to do your computing as you wish.You state that you may want to change init sequence for some purpose. In practice you cannot. Init sequences commonly contain data specific to the whole device the chip you initialize built into. Any change will have no sense without digging into devices's circuit. Like, there's LCD display MSP2807 build with ILI9341 controller (it is a real device). Its initialization code consist of hundred of lines like LCD_WR_REG(0xCF);But only a few bits you can practically change, like inversion, gamma control etc. Others specify things like driver voltage, multiplex, signal polarity or reference frequency. While you can undestand it completely by hours of digging into controller's datasheet, it will have no practical result.A lookup table filled with mathematical coefficients that you can use to quickly approximate say square roots is the source code and generally that kind of thing has a comment on top, or array name explaining what such array is for.Same for that arrays: //download it to the target device to make it up and running and that's it.You may say 'stop, i can make my own table if I wish if it is properly documented!' In practice there are tables like temperature calibration you cannot make yourself without specific factory equipment.Typically handcrafted assembly is less than 100 bytes, or is a few hundred at most (for anything longer, anyone not insane would write assembly and comment that assembly).Oh, please! Many devices have things like finite state machines or special purpose processors inside. It is often too expensive to release full-featured assembler, so they just semi-handcrafting their programs.Bottomlike:A reverse-engineered init sequence deduced by reverse-engineering and experimenting always contains comments describing what is believed each line, or group of lines does.Mos lines will be like: device operate weird in (some condition) when you change this byte.It's just ridiculous that it's not the code that makes a program open source, but the comments on it.(please do not take my words too serious: I'm just curious about the whole situation)
       
 (DIR) Post #Arm8ADlvpsdqYnYFMm by Suiseiseki@freesoftwareextremist.com
       2025-03-06T10:41:36.420528Z
       
       0 likes, 0 repeats
       
       @vovanium >there's no intention of CPU manufacturer for you to modify the microcode.There is the ability to install software to modify the operation of the CPU and the manufacturer exercises that ability and offers updates, but goes out of their way to deny the user the freedom to make their own modifications, when they wish.>The microcode is their private thing, like the whole CPU circuit schematicsThere is no reason why the sources of the MaskROM shouldn't be provided, but you don't in fact need that to write microcode updates.>If you're open source purist you should require CPU have its circuit schematics open too.GNU/Jihad against "open source" and all other forms of proprietary software - FREE SOFTWARE.A circuit design is not software source code, as you can't go and change the CPU circuits and then suddenly be able to run the modifications, just like how you would change software - you would need to get any modifications fabbed into proprietary hardware (FGPAs large enough to test modern AMD64 CPU hardware designs are unobtainable by almost everyone and are absolutely proprietary).>Otherwise how can you be sure some instruction #4E71h known to you as NOP does not hide some special commands in its bits?That's a security concern.>You state that you may want to change init sequence for some purpose. In practice you cannot.If an init sequence is provided in source form, you can in fact trivially modify it and change the hardware configuration.>Init sequences commonly contain data specific to the whole device the chip you initialize built into.Just because one part of the init sequence may not be useful to change, that doesn't mean all parts won't be useful to change.>Many devices have things like finite state machines or special purpose processors inside. It is often too expensive to release full-featured assembler, so they just semi-handcrafting their programs.For some processors it may not be useful to develop a fully-featured assembler, but a trivial assembler is easy to write and I reckon crafting such programs makes use of such assembler.>It's just ridiculous that it's not the code that makes a program open source, but the comments on it.The thing that makes a program free software is the user being able to exercise their 4 freedoms; https://www.gnu.org/philosophy/free-sw.en.html#four-freedomsIf freedom 1 has been denied via stripping off comments, resulting in something that is not the preferred form for modification, the software is not free software.