Update
This commit is contained in:
parent
521e728375
commit
5b6494e48c
11 changed files with 1943 additions and 1921 deletions
|
@ -1,16 +1,18 @@
|
|||
# Compression
|
||||
|
||||
Compression means encoding [data](data.md) (such as images or texts) in a different way so that the data takes less space (memory) while keeping all the important [information](information.md), or, in plain terms, it usually means "making files smaller". Compression is pretty important so that we can utilize memory or [bandwidth](bandwidth.md) well -- without it our hard drives would be able to store just a handful of videos, internet would be slow as hell due to the gigantic amount of transferred data and our [RAM](ram.md) wouldn't suffice for things we normally do. There are many [algorithms](algorithm.md) for compressing various kinds of data, differing by their complexity, performance, efficiency of compression etc. The reverse process to compression (getting the original data back from the compressed data) is called **decompression**. The ratio of the compressed data size to the original data size is called **compression ratio** (the lower, the better). The science of data compression is truly huge and complicated AF, here we'll just mention some very basics. Also watch out: compression algorithms are often a [patent](patent.md) mine field.
|
||||
Compression means encoding [data](data.md) (such as images or texts) in a different way so that the data takes less space (memory) while keeping all the important [information](information.md), or, in plain terms, it usually means "making files smaller". Compression is pretty important so that we can utilize memory or [bandwidth](bandwidth.md) well -- without it our hard drives would be able to store just a handful of videos, internet would be slow as hell due to the gigantic amount of transferred data and our [RAM](ram.md) wouldn't suffice for things we normally do. There are many [algorithms](algorithm.md) for compressing various kinds of data, differing by their complexity, performance, efficiency of compression etc. The reverse process to compression (getting the original data back from the compressed data) is called **decompression**. The ratio of the original data size to compressed data size is called **compression ratio** (the higher, the better). The science of data compression is truly huge and complicated AF, here we'll just mention some very basics. Also watch out: compression algorithms are often a [patent](patent.md) mine field.
|
||||
|
||||
{ I've now written a tiny LRS compression library/utility called [shitpress](shitpress.md), check it out at https://codeberg.org/drummyfish/shitpress. It's fewer than 200 LOC, so simple it can nicely serve educational purposes. The principle is simple, kind of a dictionary method, where the dictionary is simply the latest output 64 characters; if we find a long word that occurred recently, we simply reference it with mere 2 bytes. It works relatively well for most data! ~drummyfish }
|
||||
{ CORRECTION NOTE: Allow me to interject -- I used to have compression ratio defined here as compressed to original, then noticed it's usually defined as a reciprocal of that, corrected it now. There seems to be some general confusion though, some actually define it as "space saved", i.e. *1 - compressed / original*. Doesn't matter that much anyway, but it's probably better to stick to an established convention. ~drummyfish }
|
||||
|
||||
{ I've now written a tiny LRS compression library/utility called [shitpress](shitpress.md). It's fewer than 200 LOC, so plain it can nicely serve educational purposes. The principle is simple, kind of a dictionary method, where the dictionary is simply the latest output 64 characters; if we find a long word that occurred recently, we simply reference it with mere 2 bytes. It works relatively well for most data! ~drummyfish }
|
||||
|
||||
{ There is a cool compressing competition known as Hutter Prize that offers 500000 pounds (no idea how much of normal money that is lol) to anyone who can break the current record for compressing [Wikipedia](wikipedia.md). Currently the record is at compressing 1GB down to 115MB. See http://prize.hutter1.net for more. ~drummyfish }
|
||||
|
||||
{ [LMAO](lmao.md) retard [patents](patent.md) are being granted on impossible compression algorithms, see e.g. http://gailly.net/05533051.html. See also [Sloot Digital Coding System](sloot.md), a miraculous compression algorithm that "could store a whole movie in 8 KB" lol. ~drummyfish }
|
||||
|
||||
Let's keep in mind compression is not applied just to files on hard drives, it can also be used e.g. in RAM to utilize it more efficiently. [OpenGL](opengl.md) for instance offers the option to compress textures uploaded to the [GPU](gpu.md) to save space.
|
||||
We should also mention compression is not applied just to files on hard drives, it may just as well be used let's say in [RAM](ram.md) to utilize it more efficiently. [OpenGL](opengl.md) for instance offers the option to compress textures uploaded to the [GPU](gpu.md) to save space.
|
||||
|
||||
Why don't we compress everything? Firstly because compressed data is slow to work with, it requires significant CPU time to compress and decompress data, it's a kind of a space-time tradeoff (we gain more storage space for the cost of CPU time). Compression also [obscures](obscurity.md) data, for example compressed text file will typically no longer be human readable, any code wanting to work with such data will have to include the nontrivial decompression code. Compressed data is also more prone to [corruption](corruption.md) because redundant information (which can help restoring corrupted data) is removed from it -- in fact we sometimes purposefully do the opposite of compression and make our data bigger to protect it from corruption (see e.g. [error correcting](error_correction.md) codes, [RAID](raid.md) etc.). And last but not least, many data can hardly be compressed or are so small it's not even worth it.
|
||||
Why don't we compress everything? Firstly because compressed data is slow to work with, it requires significant [CPU](cpu.md) time to compress and decompress data, it's a kind of a space-time tradeoff (we gain more storage space for the cost of CPU time). Compression also [obscures](obscurity.md) data, for example compressed text file will typically no longer be human readable, any code wanting to work with such data will have to include the nontrivial decompression code. Compressed data is also more prone to [corruption](corruption.md) because redundant information (which can help restoring corrupted data) is removed from it -- in fact we sometimes purposefully do the opposite of compression and make our data bigger to protect it from corruption (see e.g. [error correcting](error_correction.md) codes, [RAID](raid.md) etc.). And last but not least, many data can hardly be compressed or are so small it's not even worth it.
|
||||
|
||||
The basic division of compression methods is to:
|
||||
|
||||
|
@ -26,10 +28,10 @@ The following is an example of how well different types of compression work for
|
|||
| compression | ~size (KB)| ratio |
|
||||
| --------------------------------------------------- | --------- | ------ |
|
||||
| none | 3000 | 1 |
|
||||
| general lossless (lz4) | 396 | 0.132 |
|
||||
| image lossless (PNG) | 300 | 0.1 |
|
||||
| image lossy (JPG), nearly indistinguishable quality | 164 | 0.054 |
|
||||
| image lossy (JPG), ugly but readable | 56 | 0.018 |
|
||||
| general lossless (lz4) | 396 | 7.57 |
|
||||
| image lossless (PNG) | 300 | 10 |
|
||||
| image lossy (JPG), nearly indistinguishable quality | 164 | 18.29 |
|
||||
| image lossy (JPG), ugly but readable | 56 | 53.57 |
|
||||
|
||||
Mathematically there cannot exist a lossless compression algorithm that would always reduce the size of any input data -- if it existed, we could just repeatedly apply it and compress ANY data to zero bytes. And not only that -- **every lossless compression will inevitably enlarge some input files**. This is also mathematically given -- we can see compression as simply mapping input binary sequences to output (compressed) binary sequences, while such mapping has to be one-to-one ([bijective](bijection.md)); it can be simply shown that if we make any such mapping that reduces the size of some input (maps a longer sequence to a shorter one, i.e. compresses it), we will also have to map some short code to a longer one. However we can make it so that our compression algorithm enlarges a file at most by 1 bit: we can say that the first bit in the compressed data says whether the following data is compressed or not; if our algorithm fails to reduce the size of the input, it simply sets the bit to says so and leaves the original file uncompressed (in practice many algorithms don't do this though as they try to work as streaming filters, without random access to data, which would be needed here).
|
||||
|
||||
|
@ -37,7 +39,7 @@ Mathematically there cannot exist a lossless compression algorithm that would al
|
|||
|
||||
{ A quick intuitive example: [encyclopedias](encyclopedia.md) almost always have at the beginning a list of abbreviations they will use in the definition of terms (e.g. "m.a. -> middle ages", ...), this is so that the book gets shorter and they save money on printing. They compress the text. ~drummyfish }
|
||||
|
||||
**OK, but how much can we really compress?** Well, as stated above, there can never be anything such as a universal uber compression algorithm that just makes any input file super small -- everything really depends on the nature of the data we are trying to compress. The more we know about the nature of the input data, the more we can compress, so a general compression program will compress only a little, while an image-specialized compression program will compress better (but will only work with images). As an extreme example, consider that **in theory we can make e.g. an algorithm that compresses one specific 100GB video to 1 bit** (we just define that a bit "1" decompresses to this specific video), but it will only work for that one single video, not for video in general -- i.e. we made an extremely specialized compression and got an extremely good compression ratio, however due to such extreme specialization we can almost never use it. As said, we just cannot compress completely random data at all (as we don't know anything about the nature of such data). On the other hand data with a lot of redundancy, such as video, can be compressed A LOT. Similarly video compression algorithms used in practice work only for videos that appear in the real world which exhibit certain patterns, such as two consecutive frames being very similar -- if we try to compress e.g. static (white noise), video codecs just shit themselves trying to compress it (look up e.g. videos of confetti and see how blocky they get). All in all, some compression [benchmarks](benchmark.md) can be found e.g. at https://web.archive.org/web/20110203152015/http://www.maximumcompression.com/index.html -- the following are mentioned types of data and their best measured compression ratios: English text 0.12, image (lossy) 0.76, executable 0.24.
|
||||
**OK, but how much can we really compress?** Well, as stated above, there can never be anything such as a universal uber compression algorithm that just makes any input file super small -- everything really depends on the nature of the data we are trying to compress. The more we know about the nature of the input data, the more we can compress, so a general compression program will compress only a little, while an image-specialized compression program will compress better (but will only work with images). As an extreme example, consider that **in theory we can make e.g. an algorithm that compresses one specific 100GB video to 1 bit** (we just define that a bit "1" decompresses to this specific video), but it will only work for that one single video, not for video in general -- i.e. we made an extremely specialized compression and got an extremely good compression ratio, however due to such extreme specialization we can almost never use it. As said, we just cannot compress completely random data at all (as we don't know anything about the nature of such data). On the other hand data with a lot of redundancy, such as video, can be compressed A LOT. Similarly video compression algorithms used in practice work only for videos that appear in the real world which exhibit certain patterns, such as two consecutive frames being very similar -- if we try to compress e.g. static (white noise), video codecs just shit themselves trying to compress it (look up e.g. videos of confetti and see how blocky they get). All in all, some compression [benchmarks](benchmark.md) can be found e.g. at https://web.archive.org/web/20110203152015/http://www.maximumcompression.com/index.html -- the following are some approximate typical compression ratios: English text 8.33, image (lossy) 10, executable 4.
|
||||
|
||||
## Methods
|
||||
|
||||
|
@ -67,7 +69,7 @@ Furthermore also take a look at [procedural generation](procgen.md), a related t
|
|||
|
||||
### Lossy
|
||||
|
||||
In lossy compression we generally try to limit information that is not very important and/or to which we aren't very sensitive, typically by dropping precision by [quantization](quantization.md), i.e. basically lowering the number of bits we use to store the "not so important" information -- in some cases we may just drop some information altogether (decrease precision to zero). Furthermore we finally also apply lossless compression to make the result even smaller.
|
||||
In lossy compression we generally try to discard information that is not very important and/or to which we aren't very sensitive, typically by dropping precision by [quantization](quantization.md), i.e. basically lowering the number of bits we use to store the "not so important" information -- in some cases we may just drop some information altogether (decrease precision to zero). Furthermore we finally also apply lossless compression to make the result even smaller.
|
||||
|
||||
For **images** we usually exploit the fact that human sight is less sensitive to certain visual information, such as specific frequencies, colors, brightness etc. Common methods used here are:
|
||||
|
||||
|
@ -225,7 +227,7 @@ int main(int argc, char **argv)
|
|||
}
|
||||
```
|
||||
|
||||
How well does this perform? If we try to let the utility compress its own source code, we get to 1242 bytes from the original 1344, which is not so great -- the compression ratio is only about 92% here. We can see why: the only repeating bytes in the source code are the space characters used for indentation -- this is the only thing our primitive algorithm manages to compress. However if we let the program compress its own binary version, we get much better results (at least on the computer this was tested on): the original binary has 16768 bytes while the compressed one has 5084 bytes, which is an EXCELLENT compression ratio of 30%! Yay :-)
|
||||
How well does this perform? If we try to let the utility compress its own source code, we get to 1242 bytes from the original 1344, which is not so great -- the compression ratio is only about 1.08 here. We can see why: the only repeating bytes in the source code are the space characters used for indentation -- this is the only thing our primitive algorithm manages to compress. However if we let the program compress its own binary version, we get much better results (at least on the computer this was tested on): the original binary has 16768 bytes while the compressed one has 5084 bytes, which is an EXCELLENT compression ratio of 3.33%! Yay :-)
|
||||
|
||||
## See Also
|
||||
|
||||
|
|
|
@ -2,7 +2,7 @@
|
|||
|
||||
Free (as in freedom) culture is a movement aiming for the relaxation of [intellectual property](intellectual_property.md) restrictions, mainly that of [copyright](copyright.md), to allow free usage, reusing and sharing of [artworks](art.md) and other kind of [information](information.md). Free culture argues that our society has gone too far in forcefully restricting the natural freedom of information by very strict laws (e.g. by authors holding copyright even 100 years after their death) and that we're hurting art, creativity, education and progress by continuing to strengthen restrictions on using, modifying ([remixing](remix.md)) and sharing things like [books](book.md), [music](music.md) and scientific papers. The word "free" in free culture refers to freedom, not just price -- free cultural works have to be more than just available gratis, they must also give its users some specific legal rights. Nevertheless free culture itself isn't against commercialization of art, it just argues for rather doing so by other means than selling legal rights to it. The opposite of free culture is [permission culture](permission_culture.md) (culture requiring permission for reuse of intellectual works).
|
||||
|
||||
The promoters of free culture want to relax intellectual property laws ([copyright](copyright.md), [patents](patent.md), [trademarks](tm.md) etc.) but also promote an ethic of sharing and remixing being good (as opposed to the demonizing anti-"[piracy](piracy.md)" propaganda of today), they sometimes mark their works with words **"some rights reserved"** or even "no rights reserved", as opposed to the traditional "all rights reserved".
|
||||
The promoters of free culture want to relax intellectual property [laws](law.md) ([copyright](copyright.md), [patents](patent.md), [trademarks](tm.md) etc.) but also promote an ethic of sharing and remixing being good (as opposed to the demonizing anti-"[piracy](piracy.md)" propaganda of today), they sometimes mark their works with words **"some rights reserved"** or even "no rights reserved", as opposed to the traditional "all rights reserved".
|
||||
|
||||
Free culture is kind of a younger sister movement to **[free software](free_software.md)**, in fact it has been inspired by it (we could call it its [fork](fork.md)). While free software movement, commenced in 1983, was only concerned with freedoms related to computer program source code, free culture subsequently (circa 2000) extended the concept to all information, including e.g. artworks and scientific data. There are **clearly defined criteria** for a work to be considered free (as in freedom) work, i.e. part of the body of free cultural works. The criteria are very similar to those of free software (the definition is at https://freedomdefined.org/Definition) and can be summed up as follows:
|
||||
|
||||
|
@ -13,9 +13,9 @@ A free cultural work must allow anyone to (legally and practically):
|
|||
3. **Share it**, i.e. redistribute copies, even commercially.
|
||||
4. **Modify it** and redistribute the modified copies, even commercially.
|
||||
|
||||
Some of these conditions may e.g. further require a source code of the work to be made available (e.g. sheet music, to allow studying and modification). Some conditions may however still be imposed, as long as they don't violate the above -- e.g. if a work allows all the above but requires crediting the author, it is still considered free (as in freedom). [Copyleft](copyleft.md) (also share-alike, requirement of keeping the license for derivative works) is another condition that may be required. This means that many (probably most) free culture promoters actually rely and even support the concept of e.g. copyright, they just want to make it much less strict.
|
||||
Some of these conditions may e.g. further require a source code of the work to be made available (for example sheet music, to allow studying and modification). Some conditions may however still be imposed, as long as they don't interfere with the above -- if, let's say, a work allows all the above but requires crediting the author, it is still considered free (as in freedom). [Copyleft](copyleft.md) (also share-alike, requirement of keeping the license for derivative works) is another condition that may be required. To this end some free culture promoters actually rely and even support the concept of copyright, they just want to make it much less strict.
|
||||
|
||||
IMPORTANT NOTE: **[fair use](fair_use.md) (or exclusive author permission) is unacceptable in free culture!** It is an extremely common mistake, happening even among people long contributing to free culture, to think that within free culture you can use a piece of proprietary art under so called *fair use* while keeping the whole work adhering to free culture -- you cannot do this (even though e.g. [Wikipedia](wikipedia.md) does this for which it actually seizes to be a completely free work). Fair use is a legal concept that allows people to use any kind of art -- even proprietary -- in some "fair" ways even without the permission of the copyright holder, i.e. for example you can likely use someone's copyrighted photograph on your website as long as you have a good justification for it (e.g. documenting a historical event with this being the only existing photo of it), if you only include a low resolution version and if you're not making money off of it -- this could be judged fair use by the court, i.e. you wouldn't be violating copyright. However a work that is to be free licensed must allow ANY use, not just fair use, i.e. it mustn't contain any part under fair use, or even under EXCLUSIVE author's permission for it to be used within that project, because such part would only limit the work to be used in the "fair use" way ONLY. While in some contexts, e.g. in hobbyist projects, such work will likely be legal, i.e. fair use, in other context, like commercial ones (which free culture MUST enable), this fair use part will suddenly seize to be fair use and the use will be illegal. Similarly if you e.g. want to use someone's music in your free culture movie, it is NOT enough to get the author's permission to use the music in your movie, the author has to give permission to EVERYONE to use it in ANY WAY, because if your movie is to be under a free license, anyone will be able to take any part out of your movie and use it in any other way. { I actually managed to get some characters out of the [SuperTuxKart](supertuxkart.md) game for this reason, there were some mascots that were used under exclusive permission, which was unacceptable and Debian maintainers sorted this out. So just for the confirmation of this fact: Debian also confirmed this. ~drummyfish }
|
||||
IMPORTANT NOTE: **[fair use](fair_use.md) (or exclusive author permission) is unacceptable in free culture!** It is an extremely common mistake, happening even among people long contributing to free culture, to think that within free culture you can use a piece of proprietary art under so called *fair use* while keeping the whole work adhering to free culture -- you cannot do this (even though e.g. [Wikipedia](wikipedia.md) does this for which it actually seizes to be a completely free work). Fair use is a legal concept that allows people to use any kind of art -- even proprietary -- in some "fair" ways even without the permission of the copyright holder, i.e. for example you can likely use someone's copyrighted photograph on your website as long as you have a good justification for it (e.g. documenting a historical event with this being the only existing photo of it), if you only include a low resolution version and if you're not making money off of it -- this could be judged fair use by the court, i.e. you wouldn't be violating copyright. However a work that is to be free licensed must allow ANY use, not just fair use, i.e. it mustn't contain any part under fair use, or even under EXCLUSIVE author's permission for it to be used within that project, because such part would only limit the work to be used in the "fair use" way ONLY. While in some contexts, for instance in hobbyist projects, such work will likely be legal, i.e. fair use, in other context, like commercial ones (which free culture MUST enable), this fair use part will suddenly seize to be fair use and the use will be illegal. Similarly if you e.g. want to use someone's music in your free culture movie, it is NOT enough to get the author's permission to use the music in your movie, the author has to give permission to EVERYONE to use it in ANY WAY, because if your movie is to be under a free license, anyone will be able to take any part out of your movie and use it in any other way. { I actually managed to get some characters out of the [SuperTuxKart](supertuxkart.md) game for this reason, there were some mascots that were used under exclusive permission, which was unacceptable and Debian maintainers sorted this out. So just for the confirmation of this fact: Debian also confirmed this. ~drummyfish }
|
||||
|
||||
During early [90s](90s.md) people tried to carry over the principles of free software to writing with what was called [FreeLore](freelore.md) ([source](https://shii.bibanon.org/shii.org/knows/FreeLorehtml.html)), however the biggest event came in 2001 when **[Lawrence Lessig](lessig.md)**, [American](usa.md) lawyer, now one of the best known free culture people, established **[Creative Commons](creative_commons.md)**, a non-profit organization which now stands as one of the pillars of the movement (even though of course some free culture proponents may still be critical of the organization itself, the organization doesn't equal the movement). By this time he was already educating people about the twisted intellectual property laws and had a few followers. Creative Commons would create and publish a set of [licenses](license.md) that anyone could use to release their works under much less restrictive conditions than those that lawfully arise by default. For example if someone creates a song and releases it under the [CC-BY](cc_by.md) license, he allows anyone to freely use, modify and share the song as long as proper attribution is given to him. It has to be noted that **NOT all Creative Commons licenses are free culture** (those with NC and ND conditions break the above given rules)! It is also possible to use other, non Creative Commons licenses in free culture, as long as the above given criteria are respected.
|
||||
|
||||
|
|
|
@ -4,11 +4,11 @@
|
|||
|
||||
Free (as in [freedom](freedom.md)) software is a type of ethical [software](software.md) that's respecting its users' freedom and preventing their abuse, generally by availability of its [source code](source_code.md) AND by a [license](license.md) that allows anyone to use, study, modify and share the software without restricting conditions (such as having to pay or get explicit permission from the author). Free software is NOT equal to software whose source code is just available publicly or software that is offered for zero price, the basic legal rights to the software are the key attribute that has to be present. Free software stands opposed to [proprietary software](proprietary_software.md) -- the kind of abusive, closed software that [capitalism](capitalism.md) produces by default. Free software is not to be confused with [freeware](freeware.md) ("gratis", software available for free); although free software is always available for free thanks to its definition, zero price is not its goal. The goal is freedom.
|
||||
|
||||
Free software is also known as *free as in freedom*, *free as in speech* software or *libre* software. It is sometimes equated with [open source](open_source.md), even though open source is fundamentally different ([evil](evil.md)), or neutrally labelled FOSS or FLOSS (free/libre and open-source software); sadly free software has lost to open source in mainstream popularity. In contrast to free software, software that is merely gratis (freeware) is sometimes called *free as in beer*.
|
||||
Free software is also known as *free as in freedom*, *free as in speech* software or *libre* software. It is sometimes equated with [open source](open_source.md), even though open source is fundamentally different ([evil](evil.md)), or neutrally labeled FOSS or FLOSS (free/libre and open-source software); sadly free software (as a term and concept) has lost to open source in [mainstream](mainstream.md) popularity. In contrast to free software, software that is merely gratis (freeware) is sometimes called *free as in beer*.
|
||||
|
||||
**Examples of free software** include the [GNU](gnu.md) operating system (also known as "[Linux](linux.md)"), [GIMP](gimp.md) (image editor), [Stockfish](stockfish.md) chess engine, or games such as [Xonotic](xonotic.md) and [Anarch](anarch.md). Free software is actually what runs the world, it is a standard among experts and it is possible to do computing with exclusively free software (though this may depend on how far you stretch the definition), even though most normal people don't even know the term free software exists because they only ever come in contact with abusive [proprietary](proprietary.md) consumer software such as [Windows](windows.md) and capitalist [games](game.md). There also exists a lot of big and successful software, such as [Firefox](firefox.md), [Linux](linux.md) (the kernel) or [Blender](blender.md), that's often spoken of as free software which may however be only technically true or true only to a big (but not full) degree: for example even though [Linux](linux.md) is 99% free, in its [vanilla](vanilla.md) version it comes with [proprietary](proprietary.md) [binary blobs](binary_blob.md) which breaks the rules of free software. [Blender](blender.md) is technically free but it is also [capitalist software](capitalist_software.md) which doesn't really care about freedom and may de-facto limit some freedoms required by free software, even if they are granted legally by Blender's license. Such software is better called "[open source](open_source.md)" or [FOSS](foss.md) because it doesn't meet the high standards of free software. This issue of technically-but-not-really free software is addressed by some newer movements and philosophies such as [suckless](suckless.md) and our [less retarded software](lrs.md) who usually also aim for [unbloating](bloat.md) technology so as to make it more free in practice.
|
||||
|
||||
Though unknown to common people, the invention and adoption of free software has been **one the most important events in the [history](history.md) of computers** -- mere technology consumers nowadays don't even realize (and aren't told) that what they're using consists and has been enabled possibly mostly by software written non-commercially, by volunteers for free, **basically on [communist](communism.md) principles**. Even if consumer technology is unethical because the underlying free technology has been modified by [corporations](corporation.md) to abuse the users, without free software the situation would have been incomparably worse if [Richard Stallman](rms.md) hadn't achieved the small miracle of establishing the free software movement. Without it there would probably be practically no alternative to abusive technology nowadays, everything would be much more closed, there would probably be no "[open source](open_source.md)", "[open hardware](open_hardware.md)" such as [Arduino](arduino.md) and things such as [Wikipedia](wikipedia.md). If the danger of [intellectual property](intellectual_property.md) in software wasn't foreseen and countered by Richard Stallman right in the beginning, the corporations' push of legislation would probably have continued and copyright laws might have been many times worse today, to the point of not even being able to legally write free software nowadays. We have to be very grateful that this happened and continue to support free software.
|
||||
Though unknown to common people, the invention and adoption of free software has been **one the most important events in the [history](history.md) of computers** -- mere technology consumers nowadays don't even realize (and aren't told) that what they're using consists and has been enabled possibly mostly by software written non-commercially, by volunteers for free, **basically on [communist](communism.md) principles**. Even if [consumer](consumerism.md) technology is unethical because the underlying free technology has been modified by [corporations](corporation.md) to abuse the users, without free software the situation would have been yet incomparably worse if [Richard Stallman](rms.md) hadn't achieved the small miracle of establishing the free software movement. Without it there would probably be practically no alternative to abusive technology nowadays, everything would be much more closed, there would probably be no "[open source](open_source.md)", "[open hardware](open_hardware.md)" such as [Arduino](arduino.md) and things such as [Wikipedia](wikipedia.md). If the danger of [intellectual property](intellectual_property.md) in software wasn't foreseen and countered by Richard Stallman right in the start, the corporations' push of legislation would probably have continued and copyright [laws](law.md) might have been many times worse today, to the point of not even being able to legally write free software nowadays. We have to be very grateful that this happened and continue to support free software.
|
||||
|
||||
[Richard Stallman](rms.md), the inventor of the concept and the term "free software", says free software is about ensuring the freedom of computer users, i.e. people truly owning their tools -- he points out that unless people have complete control over their tools, they don't truly own them and will instead become controlled and abused by the makers (true owners) of those tools, which in [capitalism](capitalism.md) are [corporations](corporation.md). Richard Stallman stressed that **there is no such thing as partially free software** -- it takes only a single line of code to take away the user's freedom and therefore if software is to be free, it has to be free as a whole. This is in direct contrast with [open source](open_source.md) (a term discourages by Stallman himself) which happily tolerates for example [Windows](windows.md) only programs and accepts them as "open source", even though such a program cannot be run without the underlying proprietary code of the platform. It is therefore important to support free software rather than the business spoiled open source.
|
||||
|
||||
|
@ -18,6 +18,8 @@ The forefront non-profit organization promoting free software has since its inve
|
|||
|
||||
**Is free software [communism](communism.md)?** This is a question often debated by [Americans](usa.md) who have a panic phobia of anything resembling ideas of sharing and giving away for free. The answer is: yes and no. No as in it's not [Marxism](marxism.md), the kind of [evil](evil.md) pseudocommunism that plagued the world not a long time long ago -- that was a hugely complex, twisted violent ideology encompassing whole society which furthermore betrayed many basic ideas of equality and so on. Compared to this free software is just a simple idea of not applying intellectual property to software, and this idea may well function under some form of early capitalism. But on the other hand yes, free software is communism in its general form that simply states that sharing is good, it is communism as much as e.g. teaching a kid to share toys with its siblings.
|
||||
|
||||
**Is free software an ideology/cult?** Free software is a movement based on [ethics](ethics.md) of technology and its followers typically do hold strong opinions, so naturally there appear radicals strongly rejecting anything proprietary only out of principle, just like religious people for example refuse to eat certain kinds of food, i.e. the so called "freetards" are oftentimes made fun of and compared to "digital [vegans](veganism.md)". Nonetheless if we talk about free software USERS, more than 99% are moderate people who probably don't even know what free software means, and there are people in between -- still outnumbering the extremists -- who know free software and support it without being too radical. Richard Stallman himself plays along with the joke of "software as religion" and named himself the head of a parody "Church of [Emacs](emacs.md)". Again, however, we can't generalize behavior and culture of one group to the CONCEPT of free software and to other groups that have adopted the concept, most of free software is purely a mode of developing software and a voluntary relaxation of legal restrictions. Practically all computers on Earth work thanks to free software. Extremists appear everywhere and are always in minority but still, given that free software is unquestionably GOOD for the people, can we even claim that being an extremist at doing good is a bad thing to do? Perhaps we may end up arguing about the means of promoting free software, licenses and so on, but to speak in general means to speak only about the underlying commonly shared goal of sharing software, and that is good.
|
||||
|
||||
[Fun](fun.md) fact: around 1991 Richard Stallman created the *Free Software Song* which starts with the lyrics: "Join us now and share the software; you'll be free, [hackers](hacking.md)." -- Stallman said he put the lyrics in the [public domain](public_domain.md). The melody is taken from Bulgarian folk song called *Sadi Moma*. The song has a very uncommon 7/8 rhythm that is not easy to follow, especially when singing at the same time, but Richard Stallman always follows it perfectly.
|
||||
|
||||
## Definition
|
||||
|
|
1
fsf.md
1
fsf.md
|
@ -27,5 +27,6 @@ After this the FSF died completely.
|
|||
- [FFS](FFS.md)
|
||||
- [Creative Commons](creative_commons.md)
|
||||
- [OSI](osi.md)
|
||||
- [PETA](peta.md)
|
||||
- [Copyfree](copyfree.md)
|
||||
- [suckless](suckless.md)
|
1
gnu.md
1
gnu.md
|
@ -61,5 +61,6 @@ GNU has developed an almost unbelievable amount of software, they have software
|
|||
- [Richard Stallman](rms.md)
|
||||
- [GNG](gng.md) (GNG is Not GNU)
|
||||
- [GNAA](gnaa.md)
|
||||
- [PETA](peta.md)
|
||||
- [copyleft](copyleft.md)
|
||||
- [free software](free_software.md)
|
3689
random_page.md
3689
random_page.md
File diff suppressed because it is too large
Load diff
1
shit.md
1
shit.md
|
@ -31,3 +31,4 @@ Some **things that are shit** include [systemd](systemd.md), [capitalism](capita
|
|||
- [suck ass](suck_ass.md)
|
||||
- [pinus](pinus.md)
|
||||
- [benis](benis.md)
|
||||
- [shitpress](shitpress.md)
|
||||
|
|
9
shitpress.md
Normal file
9
shitpress.md
Normal file
|
@ -0,0 +1,9 @@
|
|||
# Shitpress
|
||||
|
||||
Shitpress is a [simple](kiss.md) [compression](compression.md) [algorithm](algorithm.md) and utility made by [drummyfish](drummyfish.md). It is written in [C](c.md) (a version in [comun](comun.md) exists as well), the single header [library](library.md) is under 200 [lines of code](loc.md) and doesn't use any library at all (not even stdlib). Shitpress was made more or less as an educational example when writing the article on compression for [this wiki](lrs_wiki.md), but it turned out to be usable in practice. There is also supershitpress, a utility that uses the same algorithm repeatedly as long as the size gets reduced. Vanilla shitpress reduced the size of a raw website screenshot to 50% of the original size, text usually to around 80% of the original size -- that's nothing awesome, however shitpress works well on very simple data such as binaries and images that contain many repeating constant values and this is what it's meant for: a tiny, modest compression of simple data in very simple programs.
|
||||
|
||||
The algorithm works as a [constant time](o1.md) and constant memory stream filter, so it's pretty fast and efficient. The principle is to basically treat the latest history (approx 64 bytes) as a dictionary so that if a sequence (of up to 6 bytes) that recently appeared occurs again, we just reference it with a 2 [byte](byte.md) pointer (so the theoretical best compression ratio is 3).
|
||||
|
||||
As of writing this the repository is for example [here](http://git.coom.tech/drummyfish/drummy_stuff/src/branch/master/shitpress).
|
||||
|
||||
{ Someone told me brieflz is probably something similar, you can check it out too. ~drummyfish }
|
|
@ -4,7 +4,7 @@ Thrembo (also hidden number, forbidden number or random pseudonumber) is alleged
|
|||
|
||||
How can there be an integer between 6 and 7? Well, that's what thrembologists research. Sure, normally there is no space on the number line to fit a number between 6 and 7 so that its distance is 1 to both its neighbors, however this only holds due to simplifications we naively assume because of our limited [IQ](iq.md); one may for example imagine a curved, non Euclidean number line (:'D) on which this is possible, just like we can draw a triangle with three right angles on a surface of a sphere. In history we've seen naysayer proven wrong in mathematics, for example those who claimed there is no solution to the equation *x^2 = -1*; some chad just came and threw at us a new number called [i](i.md) (he sneakily made it just a letter so that he doesn't actually have to say how much it ACTUALLY equals), he just said "THIS NUMBR IS HENCEFORTH THE SOLUTION BECAUSE I SAY SO" and everyone was just forced to admit defeat because no one actually had a bigger authority than this guy. That's how real mathematics is done kids. As we see e.g. with [political correctness](political_correctness.md), with enough propaganda anything can be force-made a fact, so if the number gets enough likes on twitter, it will just BE.
|
||||
|
||||
Some pressing questions about thrembo remaining to be researched are following. Is thrembo even of odd? Is it a [prime](prime.md)? If such number can exist between 6 and 7, can similar numbers exist between other "mainstream" numbers?
|
||||
Some pressing questions about thrembo remaining to be researched are following. Is thrembo even or odd? Is it a [prime](prime.md)? If such number can exist between 6 and 7, can similar numbers exist between other "mainstream" numbers?
|
||||
|
||||
## See Also
|
||||
|
||||
|
|
File diff suppressed because one or more lines are too long
123
wiki_stats.md
123
wiki_stats.md
|
@ -2,10 +2,10 @@
|
|||
|
||||
This is an autogenerated article holding stats about this wiki.
|
||||
|
||||
- number of articles: 624
|
||||
- number of commits: 976
|
||||
- total size of all texts in bytes: 5090963
|
||||
- total number of lines of article texts: 36954
|
||||
- number of articles: 625
|
||||
- number of commits: 977
|
||||
- total size of all texts in bytes: 5096965
|
||||
- total number of lines of article texts: 37019
|
||||
- number of script lines: 324
|
||||
- occurrences of the word "person": 10
|
||||
- occurrences of the word "nigger": 113
|
||||
|
@ -35,105 +35,108 @@ longest articles:
|
|||
|
||||
top 50 5+ letter words:
|
||||
|
||||
- which (2812)
|
||||
- there (2201)
|
||||
- people (2167)
|
||||
- example (1768)
|
||||
- other (1592)
|
||||
- about (1415)
|
||||
- number (1330)
|
||||
- which (2816)
|
||||
- there (2203)
|
||||
- people (2169)
|
||||
- example (1771)
|
||||
- other (1593)
|
||||
- about (1418)
|
||||
- number (1332)
|
||||
- software (1253)
|
||||
- because (1174)
|
||||
- their (1103)
|
||||
- would (1072)
|
||||
- something (1051)
|
||||
- their (1105)
|
||||
- would (1073)
|
||||
- something (1052)
|
||||
- program (1039)
|
||||
- being (1023)
|
||||
- being (1025)
|
||||
- things (962)
|
||||
- language (936)
|
||||
- called (929)
|
||||
- called (930)
|
||||
- without (864)
|
||||
- function (863)
|
||||
- simple (857)
|
||||
- computer (842)
|
||||
- numbers (830)
|
||||
- computer (843)
|
||||
- numbers (831)
|
||||
- different (796)
|
||||
- these (778)
|
||||
- these (780)
|
||||
- however (777)
|
||||
- programming (770)
|
||||
- programming (771)
|
||||
- world (757)
|
||||
- system (738)
|
||||
- should (720)
|
||||
- system (740)
|
||||
- should (722)
|
||||
- doesn (712)
|
||||
- still (710)
|
||||
- games (686)
|
||||
- games (691)
|
||||
- society (671)
|
||||
- while (669)
|
||||
- while (670)
|
||||
- point (669)
|
||||
- drummyfish (666)
|
||||
- simply (655)
|
||||
- drummyfish (668)
|
||||
- simply (656)
|
||||
- possible (653)
|
||||
- probably (643)
|
||||
- using (641)
|
||||
- always (628)
|
||||
- always (629)
|
||||
- course (611)
|
||||
- similar (601)
|
||||
- https (590)
|
||||
- actually (590)
|
||||
- someone (587)
|
||||
- https (588)
|
||||
- someone (586)
|
||||
- though (581)
|
||||
- basically (570)
|
||||
- really (568)
|
||||
- really (569)
|
||||
- technology (553)
|
||||
|
||||
latest changes:
|
||||
|
||||
```
|
||||
Date: Fri Feb 28 00:50:23 2025 +0100
|
||||
3d_model.md
|
||||
bloat.md
|
||||
calculus.md
|
||||
capitalism.md
|
||||
Date: Sat Mar 1 01:35:35 2025 +0100
|
||||
anarch.md
|
||||
atan.md
|
||||
bootstrap.md
|
||||
chess.md
|
||||
democracy.md
|
||||
drummyfish.md
|
||||
color.md
|
||||
cope.md
|
||||
copyright.md
|
||||
corporation.md
|
||||
determinism.md
|
||||
doom.md
|
||||
earth.md
|
||||
elon_musk.md
|
||||
faq.md
|
||||
feminism.md
|
||||
fork.md
|
||||
free_culture.md
|
||||
game.md
|
||||
gnu.md
|
||||
hacking.md
|
||||
history.md
|
||||
human_language.md
|
||||
island.md
|
||||
left_right.md
|
||||
lgbt.md
|
||||
linux.md
|
||||
lrs.md
|
||||
lrs_dictionary.md
|
||||
intellectual_property.md
|
||||
kek.md
|
||||
liberalism.md
|
||||
log.md
|
||||
main.md
|
||||
number.md
|
||||
math.md
|
||||
newspeak.md
|
||||
often_confused.md
|
||||
political_correctness.md
|
||||
programming_language.md
|
||||
race.md
|
||||
or.md
|
||||
proof.md
|
||||
random_page.md
|
||||
reactionary_software.md
|
||||
security.md
|
||||
slowly_boiling_the_frog.md
|
||||
suicide.md
|
||||
terry_davis.md
|
||||
thrembo.md
|
||||
throwaway_script.md
|
||||
unix.md
|
||||
usenet.md
|
||||
version_numbering.md
|
||||
wiki_pages.md
|
||||
wiki_stats.md
|
||||
www.md
|
||||
zero.md
|
||||
Date: Wed Feb 26 18:17:24 2025 +0100
|
||||
wikipedia.md
|
||||
Date: Fri Feb 28 00:50:23 2025 +0100
|
||||
```
|
||||
|
||||
most wanted pages:
|
||||
|
||||
- [data_type](data_type.md) (15)
|
||||
- [meme](meme.md) (14)
|
||||
- [retard](retard.md) (13)
|
||||
- [meme](meme.md) (13)
|
||||
- [embedded](embedded.md) (13)
|
||||
- [irl](irl.md) (12)
|
||||
- [buddhism](buddhism.md) (12)
|
||||
|
@ -155,7 +158,7 @@ most wanted pages:
|
|||
most popular and lonely pages:
|
||||
|
||||
- [lrs](lrs.md) (336)
|
||||
- [capitalism](capitalism.md) (302)
|
||||
- [capitalism](capitalism.md) (304)
|
||||
- [c](c.md) (237)
|
||||
- [bloat](bloat.md) (229)
|
||||
- [free_software](free_software.md) (197)
|
||||
|
@ -168,12 +171,12 @@ most popular and lonely pages:
|
|||
- [computer](computer.md) (113)
|
||||
- [kiss](kiss.md) (110)
|
||||
- [programming](programming.md) (107)
|
||||
- [math](math.md) (104)
|
||||
- [fun](fun.md) (104)
|
||||
- [math](math.md) (102)
|
||||
- [gnu](gnu.md) (102)
|
||||
- [linux](linux.md) (100)
|
||||
- [shit](shit.md) (99)
|
||||
- [woman](woman.md) (98)
|
||||
- [shit](shit.md) (98)
|
||||
- [fight_culture](fight_culture.md) (95)
|
||||
- [corporation](corporation.md) (95)
|
||||
- [bullshit](bullshit.md) (95)
|
||||
|
|
Loading…
Reference in a new issue