This is the best phrasing of this concept that I remember having seen.
This is the best phrasing of this concept that I remember having seen.
Proprietary software gives developers power over users. Typically, Developers seek this power in order to extract money from users (sometimes in reasonable amounts, other times not). Unfortunately, power is abused. By empowering users with the option to take control of their own technology, FLO software provides strong protection against abuse -- developers need to weigh user-hostile decisions against the possibility of a fork.
There's no liberty without the power to preserve it.
Clearly those are not actual second amendment lovers, they are deadly toy lovers, and therefor profess to love the second amendment.
There are those who actually believe in the ideals of the second amendment, the question is how many of them
A) Live in Portland/DC
B) Are willing to put their lives on the line for this.
I'd like to think that if I lived there I would be.
Yes, it is to protect liberty to do what you will with the software/source.
It is also to make sure that the developers of said software will be in a much more difficult situation when it comes to abusing the users of their software. Stallman talks about this as well.
Not that everything is a power dynamic, looking at life that way kills all your friends and family really quickly.
I have a working theory that any software used by programmers will eventually get excellent (or be replaced with something excellent). And everything else stays vaguely mediocre.
Postgresql? Excellent. The tooling to allow non-programmers to edit data in postgres? Halfbaked. Sound cancellation in macbooks for video calls? Fantastic. The software bank tellers use? Garbage. Github? Fantastic. Github equivalent for non programmers (eg people with folders full of Word docs)? 404 not found.
Anyway, the fact that modern printer drivers are garbage should come as no surprise. Who amongst us cares enough to fix them? RMS was probably one of the last competent programmers who will bother writing clean, minimal printer drivers. I expect the world will become paperless before HP cleans up their act.
I have the same problem at the moment with my Wacom tablet - the hardware is great but the software is truly awful, and apparently it phones home regularly. Software for artists is unfortunately off the golden path.
I seriously think the world would be better off if programming were seriously taught in schools, on a level equivalent to language, math, science, etc.
If we start with Scratch in early grade school and work up to C in high school, so many more people would be comfortable and efficient using computers, and would have the understanding necessary to understand the legislation of tech.
This would take a decade+ to pay off/have the bank tellers know to program, but it seems like the best long term plan.
I really like this phrasing. I'm not really an engineer. My code is mostly rough, but it is functional and does what I need it to. I don't program to build a skyscraper, I program so my computer can do a thing I need it to do.
You'd need a native iPad app to capture and transmit pen events, and then something on the desktop side to receive the events and turn them into the equivalent wacom tablet events. How does wacom send tablet events to apps? Is it a named socket or something? It shouldn't be too hard to emulate. I wonder if anyone's made something like that in the app store.
Mind you, I'd much rather if Apple baked it into macos through Sidecar.
But Sidecar is also pretty half-baked and Apple is flakey about supporting features like in general, so who knows how it will all pan out.
I very purposefully position my monitor so that my main console window is viewed, with my head level. It is also horizontally centred on the mid-left of that console.
This is because most text, eg bash work, vi of files or code, rests there.
In this way, my head is not tilted down, or eyes tilted down constantly. My head is mostly centred, and looking straight ahead.
I find that elsewise, my body follows the constant downward look, either slouching or the neck bent forwards.
Why do you belief your monitor should be positioned, so you are looking downward constantly?
Hence the top of the monitor being at eye level, is problematic. I think the best scenario is most-often level.
I wonder, I grew up before laptops and smartphones. These often result is down-gazing a lot. Hmm.
At the end of the day, if you’re finding that something helps to reduce long-term fatigue then it’s probably not too bad, but don’t forget that slouching in your chair feels good however it’s terrible ergonomically - this is similar. Comfortable short term, but not always long term.
All of these recommend at or slightly below eye level:
https://www.ors.od.nih.gov/sr/dohs/Documents/Computer%20Work...
https://www.osha.gov/SLTC/etools/computerworkstations/compon...
https://www.ccohs.ca/oshanswers/ergonomics/office/monitor_po...
https://www.worksafe.qld.gov.au/__data/assets/pdf_file/0006/...
https://www.mayoclinic.org/healthy-lifestyle/adult-health/in...
Etc..
The search I ran in google was “monitor ergonomics gov”
It's certainly not non-existent.
(There's now browser based versions of MS Office apps that can simultaneously edit documents stored and automatically version controlled in SharePoint)
In some ways it was truly awful, to mention two examples:
- a reason for using it was to automatically apply Azure Information Protection to documents. All well and good until it turns out the mechanism can trivially be subverted, so trivially that we found out by accident by not following the exact login procedure.
- the usability makes is comparable to Oracle software. I have extensive experience with that too, but I can't say which is worse.
Hmmm... I think.. sometimes. There's also software that gets excellent, becomes big, becomes profitable, and squeezes out everything else. Then becomes mediocre. word and google docs?
Most programmers rarely using office suites and prefer to use plain text editors. This has gone so far that developers prefer a sadistically under-featured file-format (.md) to office files.
.md files avoid the copy paste font/size mess by being plain text and rendering in the reader's choice of font. Bold, italics, hyperlinks and such are all explicitly added, easy to Ctrl + F for and aren't hidden behind finicky context menus as in standard word processors.
Literally anyone with a computer that has a ASCII or Unicode compatible text editor can open a .md file and get useful info.
Even better, add a little bit of lightweight extra tooling, and now you've generated a nice looking html page, if you need to make something with fancier presentation.
The only thing I miss is the ability to embed images in the md file itself, but even that is not hard to work around.
Obviously I keep software on hand that can deal with docx/odf, but I'd really rather just keep it simple, due to the fact that I'm stupid.
And doesn't have a proper spec. The best we have is https://commonmark.org
Ah, the tell of someone who has never implemented printing.
Pagination across different paper sizes when content is dynamic/interactive and includes things like section headers that you need keep with text and images and tables that users expect to not split across pages with their custom choices of margins, page-numbers, page titles etc. So many other issues like ensuring monochrome prints are legible, implementing print previews etc.
Oh boy. Some might think implementing math from papers is hard but no, it's this sort of thing. You'll be fixing problems with it for the life-time of the product.
If things are different now, it certainly was not during the brief time Wave was around.
In fact, in general, a human being must actually lay these things out by hand for print if that is the desired medium.
In the end, the user doesn't care. They want the printed page to be usable. If the browser makes it usable, excellent! If it doesn't, than the product is bad and an alternative must be found.
Sure, Google, being in control of Chrome, could implement a browser-level page layout engine.
Unfortunately, there is obviously no way to make a good general purpose layout engine, so that will never fly. Any site that wants to offer printing as a paid feautre must implement their own printable version, no question.
It seems like the driver should detect paper size, broadcast a compatible print area/capabilities to something above, and then stand by to make any dot it can in the allowed area.
Why would the hardware driver need to deal with pagination, layout, or print previews (beyond advertising capabilities accurately)?
I've always imagined that drivers are hard on the hardware side. It is really difficult to reliably place dots on a page with the requisite precision/reliability at the price-point to which we have all become accustomed.
They’re $30 with barely used toner cartridge, and have worked no effort on Mac / Linux / Windows for me.
It was about not being able to customize the behavior, lacking the access to source code, not about “crappiness.”
“ In 1980, Stallman and some other hackers at the AI Lab were refused access to the source code for the software of a newly installed laser printer, the Xerox 9700. Stallman had modified the software for the Lab's previous laser printer (the XGP, Xerographic Printer), so it electronically messaged a user when the person's job was printed, and would message all logged-in users waiting for print jobs if the printer was jammed. Not being able to add these features to the new printer was a major inconvenience, as the printer was on a different floor from most of the users. This experience convinced Stallman of people's need to be able to freely modify the software they use.[29]”
That is an anachronistic claim which sounds logical to the reader in 2020 but doesn’t match the environment of decades ago. The feature he added could have been based on, from perspective of the producer of the printer, completely non existing API.
That is, something available to different customers, but completely specific to the setup of every customer.
Additionally, it was the principle that mattered to RMS. One can often do some reverse engineering intervention to achieve the desired modification even based on the closed source, but it’s still against the conceptual advantages of working on the codebase which is by policy free. As in:
“Roughly, it means that the users have the freedom to run, copy, distribute, study, change and improve the software.”
https://www.gnu.org/philosophy/free-sw.en.html
The principle works even once the network messaging API in some environment is standardized and starts to allow some, from that point on, “standard feature”.
Whoa, is this a thing? I know gov surveillance is in depth, but wow.
I'd love to read more, is there a good place to read about this?
Color laser printers can't be trusted.
Color inkjet printers probably can't either. Networked printers should not be granted internet access. The printer vendor is your enemy, not an ally.
I've never trusted printer vendors (or any vendors to be honest.), and I don't give printers inet access, but the yellow dots are news to me.
For much of FLOSS software I would agree. However, almost any program I've used I would say is plenty adequate.
Of course, I would fall into those users you mention, so this probably doesn't mean much.
I think the worst i've ever experienced between floss and commercial software had to be the software to program the waterjet cnc at my last job. For some reason, half the menu items were in german, all the configuration was done in a text file where variables were a mix between english and german, the machine manufacturer stopped officially supporting the program and literally one person at their tech support office even knew how to use it and his knowledge had gotten pretty rusty. That program was an ugly, bug ridden, confusing mess that at one time cost lots of money.
According to the tech i talked to, it was written by one german guy who had a poor grasp of english, vanished years before and nobody knew how to contact him.
SigmaTech make SigmaNest which, as of version 1.7, I feel confident in highly recommending.
And they’ve put on an additional team member for tech support in my region and I can now confidently praise that aspect of their business too.
I’ll have a look at Alphacam.
Developers rarely own the rights to their own code. It's actually about the power dynamic between capital and users. The Golden Rule ("He who has the gold, makes the rules") is nowhere more clear than in the software industry, with its lopsided clickthrough licenses and terms of service.
https://sfconservancy.org/blog/2016/aug/04/everything-is-neg... https://sfconservancy.org/contractpatch/
Unfortunately this isn't really true for large and complex FLOSS, e.g. web browsers. For a lot of the little user-hostile decisions they have taken, it would take me far more time to get the source and all its dependencies, figure out how to correctly build it (which can itself include a nontrivial toolchain with its own effort to set up), find where to make that tiny change I wanted to the source, and recompile and test; than to simply use a debugger to find the right place in the binary to modify directly.
Open-source doesn't necessarily mean easy to take control; and neither does closed source mean the opposite. I've been RE'ing for decades and wish more people knew about this valuable skill, because that's what gives you the true power to take control.
I want to learn. I've played around a bit with r2, doing a small patch on a unsupported piece of software, but that was nearly trivial.
Can you recommend any good places to get started?
That means you've already started. ;-)
I think it's hard to give recommendations regarding learning of RE in general, as I mainly do it a "scratch an itch" and "learn as you go" type of thing --- whether you need to interface with an unknown file format, change the behaviour of a piece of code, change a message in a UI, automate an aspect of a web app, etc. the exact knowledge you'll need will vary widely. However, in all those circumstances the basic idea is to gather knowledge about the target to get a vague understanding of how it works, and then dive in with the specific tools/knowledge you've gathered.
It is also true for web browsers; all it needs is one developer among the many thousands being able to build and distribute it.
> Open-source doesn't necessarily mean easy to take control
True, it should be more something like: "it won't be easy to use this source by yourself, but if the company decides to discontinue the product, you can still hire some developers to support and continue it, rather than throw in the trash everything you've based on it, which sometimes could mean your entire business". It rather makes hard for others to take away this control, a concept which is wonderfully explained by the GPL license document.
> I've been RE'ing for decades and wish more people knew about this valuable skill, because that's what gives you the true power to take control.
Agree 100% on this, but definitely not easy especially now that pretty much every damn product contains more horsepower and complexity than the Apollo missions computers. However, if you have books, resources, examples etc. for mere mortals on the subject, I'd love to take a look at them. That topic would probably deserve a post by itself.
I reflect back and wonder why the systems I grew up with didn't have this capability built right in, like a keyboard interrupt in DOS that would pause execution and let you dive into the contents of memory, view the stack, or debug the decompiled version of a running program.
Maybe this kind of stuff just wasn't possible in the race to the bottom that was the 80s and 90s PC market, but as a child, I was really confused why I didn't have the tools necessary to "pop the hood" on anything other than BASIC programs—and that's assuming I was using a machine that had BASIC installed.
I'm sure the only thing I would have done with it at the time would have been to cheat at video games, defeat copy protection, and alter game dialog to be extremely crass, but I think it would have been extremely helpful in the development of my adult skill set.
On the other hand, it is possible, and great groups of people have for instance de-googled chrome and fixed ubuntu.
> Should we so desire, open source empowers us to create and run our own essential tools and services
This person is describing the goals of Free Software and community-driven projects.
"Open Source" merely refers to using an OSI-approved license, without any implication about empowering users and improving the power balance.
All joking aside, I recognize that this is strong language, but it certainly describes the tactics used.
Although obviously no one is in immediate physical danger, with the exception of medical equipment. Even that I'm not sure of, I've just heard hearsay.
As a result of this, anything can be reimplemented/replaced, if you or someone else have knowledge on how to do so. This in turn means that it is possible to escape from unethical services, thus the article.
This is an incredibly important insight. When technologically illiterate people have difficulties with a gadget, it is extremely common that you can trace their difficulties back to their assumption that the workings of the gadget are magic: they don't attempt to form any kind of mental model for how the device might work, and end up making impossible and contradictory assumptions about it. Even an incorrect mental model would be more useful, because you'd be more conscious of making predictions and realizing that your predictions are wrong for a reason when the machine doesn't respond as expected.
Legal or not, you can always take a disassembler to a binary and find out the truth, just like you can do the same to other devices and understand their workings much like what the "true scientists" do[1]. Crackers and the security industry have been doing that for decades. PC magazines of the 80s and early 90s even told you how to patch your own software --- without source --- to accomplish certain things like fixing bugs or changing "annoyances".
I often wonder what the state of software would be like if Stallman emphasised the right to inspect and modify regardless of source code availability; perhaps there would be far less open-source projects, but people would have a much more intimate familiarity with how computers work in general.
If I can modify the binary, I don't need the source. Especially for large projects, where trying to figure out how to compile the exact same binary I already have and know works, along with its massive tree of dependencies, can be even more difficult compared to just opening it in a hex editor and patching a few bytes.
[1] It seems computer scientists mainly focus on construction unlike physicists, biologists, and chemists who focus on analysis first.
I still think open source is an important effort, editing/reading source code will always be more efficient then reverse engineering and modifying the binary.
That being said, I agree with much of what you say, and I am working on learning re/binary patching. Are there any good resources you could recommend?