Free download:

Software Wars, the Movie

Soundtrack for the book:


If you enjoyed the free download, a donation of the cost of a newspaper would be appreciated.



The best book explaining free market economics:

The best explanation of how we can build a space elevator in 10 years:


Book explaining a political solution to our economic problems:


LibreOffice HiDPI Patches

I bought a HiDPI laptop in October 2013 to replace my 5-year old Thinkpad. Between the 5.7 million pixels, and the bright LED backlight replacing my dying and dim fluorescent bulb, it makes the daily computing experience much easier on the eyes. I’d put up with a lot for this screen. It turns out I have to compared to my old Thinkpad, as there is an incompatible and inferior keyboard layout, the Synaptics mouse drivers are flakey, it is difficult to replace the battery or hard drive, etc.

I run Arch with Gnome 3.10 in Classic Mode. Gnome is the only DE that recognizes the high-res screen out of the box and picks a good font size. It has specific bugs I described in my review of the laptop, but it generally looks fine albeit bland and crippled. Firefox needs the No-Squint plugin, but then the web looks acceptable. The next most noticeable problem for me was LibreOffice. The text and dialogs looked beautiful:

The text looked like a magazine, but the bitmaps were far too small, and there were other problems. LibreOffice offers 16×16 or 24×24 toolbar icons today, but the small ones looked like dead bugs on the screen, and even the large ones required concentration to recognize. One day, rich 48×48 toolbar bitmaps can be created, but in the meanwhile, you can double them to look reasonable and be easy to click on. Given that LibreOffice has hundreds of bitmaps, this temporary solution could be useful for a while.

In addition to the toolbars, the status bar controls, the navigator, the sidebar, and various dialog boxes had tiny bitmaps. One of the most annoying problems was that the spelling underline was so thin you didn’t notice it while casually looking at the screen. And so you had to stare carefully to see the lines, which imprinted them causing remnants when you shut your eyes. It was maddening!

And so I thought: perhaps some volunteer developer in LibreOffice could be given new hardware by The Document Foundation to work on this problem. The Gnome 3.10 HiDPI work happened because of a computer donation and perhaps it could happen here. And so I wrote an email to their discuss alias asking if there was interest but I received no public response.

Apparently, everyone is so busy delivering a new product, fostering a young community, paying down technical debt, making it run on Android, improving import and export, rewriting the Calc engine, removing Java, etc., that no one has time to make it look good on these beautiful screens. There is a lot happening without any rich benefactor anymore, and a split community. If you think LibreOffice is amazing, just imagine what it would be if IBM gave them $10M / year, and the trademark, and didn’t seduce away naïve volunteers and donations. (I believe if IBM were to ask Watson whether it should end the fork, the AI would recommend it. Watson is only being applied to customer problems instead of their own. One could spend a lot of time correcting the inaccurate FUD written on the AOO dev alias. Imagine we lived in a society that celebrated divorce instead of marriage.)

I considered setting up a bounty on a website, but I decided to next see if I could find someone in the community with expertise who could be persuaded to work on this issue. It seemed that fixing the toolbars would be a great first step and I felt I’d be happy with that one improvement.

So I next emailed Michael Meeks and asked if he knew anyone who might have a few extra hours. I was put in contact with Andrzej Hunt, who eventually wrote a patch to double the toolbar bitmaps. But I felt that the spelling underline was the next highest priority issue. I decided to go through the codebase, and see if I could find the place that should be fixed. If I thought I could do it, I would buy an external SSD to build and do some experiments.

My first stop was opengrok.libreoffice.org. It is a simple and fast way to search through the codebase. This is one of best tools LibreOffice has setup since they started. Even when you have the code on your local machine, it is better to use their smarter system. The Opengrok source is color-coded and everything is clickable to take you to the definition and references of classes and functions.

I don’t remember exactly how many searches it took, but eventually I found the code to draw “wave lines”. If I had known that term in advance it would have been faster, but I always thought of them as squiggly underlines and that term brought up nothing. Eventually I found interesting routines such as DrawText, ImplDrawTextLine, ImplDrawWaveLine, DrawWavePixel, DrawWaveLine, etc. One usually reads code for understanding, but at first, I was just trying to figure out if the code I was looking at was relevant.

LibreOffice draws wavy underlines as a font property and as part of spelling / grammar errors, and for other reasons, so I had to read through the code, understand who called who, etc. Eventually, I discovered that DrawWaveLine was the function I wanted. It was called from the end of the main routine DrawText, which called lcl_DrawLineForWrongListData, which went through the grammar and spelling error list and called DrawWaveLine for every problem area. And in that routine, I found a strong clue:

5302 if ( nStyle == WAVE_NORMAL )
5303 {
5304     nWaveHeight = 3;

I knew the spelling underline was 3 pixels tall, so at that point I knew my search had ended. I decided to spend money on an external SSD so I could download the code, build it, and make changes.

The wiki is superb and the build process is ridiculously easy. Here are the commands I ran after installing the build dependencies:

$ git clone git://anongit.freedesktop.org/libreoffice/core libreoffice
$ cd libreoffice
$ ./autogen.sh --enable-dbgutil --without-java --without-help --without-myspell-dicts
$ make (wait two hours)
$ instdir/program/soffice --writer

With those few steps, I could then run LibreOffice and try things. After a few builds, I found what looked best. Here is the first diff I sent to the dev alias:

diff --git a/vcl/source/gdi/outdev3.cxx b/vcl/source/gdi/outdev3.cxx
index f3f5a77..6e142fd 100644
--- a/vcl/source/gdi/outdev3.cxx
+++ b/vcl/source/gdi/outdev3.cxx
@@ -5301,9 +5301,12 @@ void OutputDevice::DrawWaveLine( const Point&
rStartPos, const Point& rEndPos,
long nWaveHeight;
if ( nStyle == WAVE_NORMAL )
{
-        nWaveHeight = 3;
+        nWaveHeight = 5;
nStartY++;
nEndY++;
+
+        nStartY++; //Shift down additional pixel for hidpi screens
+                   //TODO: Probably should be done above, before rotation happens
}
else if( nStyle == WAVE_SMALL )
{
@@ -5320,7 +5323,7 @@ void OutputDevice::DrawWaveLine( const Point& rStartPos, const Point& rEndPos, nWaveHeight = pFontEntry->maMetric.mnWUnderlineSize;


ImplDrawWaveLine( nStartX, nStartY, 0, 0,
-                 nEndX-nStartX, nWaveHeight, 1,
+                 nEndX-nStartX, nWaveHeight, 2,
nOrientation, GetLineColor() );

Note this code couldn’t possibly get checked into LibreOffice as-is because it changes the behavior for all screens, but it allowed me to test. Eventually what is needed is a way to know when to use the different values but there was no easy way to get that information. And so Michael Meeks introduced me to Kendy (Jan Holesovsky) who added a member to the low-level OutDev class containing the DPIScaleFactor. In principle, that information is based on the DPI of the screen / window, but sometimes the OS just returns 96 for compatibility reasons and therefore may need additional logic based on the system font size.

With the toolbar and spelling underlines looking great, it made the remaining problems more noticeable, and motivated me to keep going. I decided to next look at the status bar. The first control was zoom, the one I use the most. Eventually, I found the class: SvxZoomSliderControl. In this case, I was able to just read through the 400 lines until I saw the problem areas. For starters, it had hard-coded the bitmap size via #defines, so even if you plugged in a bigger bitmap, it would have mis-behaved. And so I first fixed the control to work based on the bitmap size, and made it draw bigger if necessary. The change was quite simple. From there, I went to the other status bar controls, the navigator, and various other places, and have so far submitted a first and second round of fixes.

The process was straightforward. First I’d find a problem visual area I wanted to work on, and then I’d trace through the code in opengrok till I found the right place, make a change, and see how it looked. I saw plenty of code I didn’t understand, but my changes were mostly simple and safe. A couple of times I had to first put in printf diagnostics to understand what was going on at runtime because there is no supported IDE with debugging, auto-complete, etc.

Sometimes hours of searches turned up nothing! I felt like Indiana Jones digging in the desert. After lots of sweating and effort, you find things, but it can take time to figure out if an artifact is valuable, how it fits with other pieces, etc.

The hardest piece of code to find was the black triangle in the toolbar font color dropdown, and many other places. I eventually resorted to commenting out drawing logic that looked like it might be handling it. At one point, random controls all over the product weren’t visible anymore, but the dropdown indicators were still there. It was the Terminator of Triangles. The LibreOffice codebase is overall very reasonable compared to Microsoft Office, but it does have a lot of widget logic because it tries to draw native visuals in a cross-platform way.

I emailed the dev alias and heard nothing. That wasn’t a surprise because the people who wrote the toolbar code are long gone. This happens more often in the proprietary world. Eventually I gave up and decided to work on the toolbar double-arrows which show up when some of the buttons don’t fit. That routine I found quickly by reading the code that laid out toolbars, figured out how it represented the situation of controls not having enough room, and then found the drawing routine which looked at that data.

And so I changed the arrow code, and started a build. While waiting, I decided have a look around, and found that triangle drawing code was the next function in the file. I about pooped my pants. I had spent at least 4 hours looking for it.

Reading through the code to find the right place to make the change took an unknown amount of time. Once the right place was found, the diff was mechanical, but usually there was something interesting about each case. Once you find the right function, the rest is usually easy, assuming what you want is possible via existing primitives. So far I’ve spent about 40 hours, working a few hours per session, and have fixed the most noticeable places in the product including the Sidebar.

Complexity and community

HiDPI is quite far from finished, in spite of the many changes I’ve made. Most of the code I’ve worked on will eventually be replaced! We shouldn’t be doubling bitmaps, we should have better ones. The toolbar dropdown triangle logic should eventually be replaced with code which calls into the toolkit / OS so it also looks more native. That is a better fix, but also bigger and riskier, and could have implications for toolbar layout. And I have no idea how to do that. I’m much better at telling LibreOffice to double integers and bitmaps.

There are more issues, but also more and more people who will want LibreOffice (and other apps) to work well on their new screen. I’ve been updating a wiki page as I go along and it also lists some of the remaining places. One isolated fix is the tab-drawing (and hit-testing) code in the ruler. The drawing logic starts on line 874.

On the Mac, someone needs to turn off the compatibility mode and see what happens. In my old life, I would have expensed a Macbook Retina to test it myself, but for now LibreOffice needs to find someone else to carry the work further.

This feature did not make it into LibreOffice 4.2.0, so it won’t get any of the automatic publicity that would come with that process, but I believe it can get into 4.2.1 and be announced then. LibreOffice make a minor release every month, and Arch automatically grabs them within a day or 2, so it means I’ve only got to wait an extra 32 days. That I could write some code in late December and get it on my machine in early March is quick turnaround compared to the proprietary world.

If I were an undergraduate in college, I’d take a bug somewhere in free software and work on it. LibreOffice is one of the most needed and relatively easy to get into. You have to look pretty hard to find ways to improve the Linux kernel, but with LibreOffice, that is not the case. A number of the things I worked on in school were writing toy programs. It made it easier to grade the assignments, but the code wasn’t realistic or useful to anyone. There also wasn’t as much great free software out there to learn from or contribute to. I joined Microsoft to learn more about programming because I knew there was a lot more to it than the toys I was making. LibreOffice is a very rich program to fully understand, but you don’t need to know very much to be productive. Most diffs are 5 to 50 lines.

One of the ongoing challenges for LibreOffice is to remove as much extra complexity as possible. It has already paid down a large amount of technical debt in the makefiles and other places, but this process will continue for a long time. I think that parts of Base should be re-written in Python, and the VCL replaced with WxWidgets or Qt, but these are very large tasks no one is working on, and therefore just pipe dreams. The good news is that they can be done incrementally. Porting the status bar to another toolkit could be done in a summer by a college student. The toolbar would be a bigger challenge that could take two summers. There is little work happening in VCL or the Writer layout engine. One of the downsides of the Symphony / Apache Sidebar is that it gave LibreOffice a new UI, but not a simpler and better way of building pretty UIs.

I received excellent “customer service” from Kendy along the way. The LibreOffice community is great and patches from first-timers get accepted all the time. So while we wait for IBM to change course, LibreOffice can keep doing the best that it can. LibreOffice has 100 dev contributors per month. Even if people show up to fix one real bug, it collectively adds up.

I plan on doing more, but first I want to help in the process of releasing the code already checked in. I wrote about some of the remaining issues in the wiki, but people might find others. For example, the first batch I submitted changes the width of the SvxPosSizeControl for normal and high-res screens. It is broken on current builds as the text doesn’t fit, and the bitmaps drew on top:

The status bar is one of the few places in LibreOffice that does layout based on pixels, and the resource XML files are not a place you can currently change at runtime.

A competitive office suite is critical to the success of a free desktop. There are billions of Office files out there and people who haven’t even heard of the best free alternative. LibreOffice is an extremely rich codebase, but it is more underfunded for its needs than the kernel, Firefox, systemd, etc. If someone can understand my diffs, they can contribute some code to LibreOffice. I note that the author of the article saying that LibreOffice is “ridiculously easy to build” never actually submitted a patch! People can contribute out of duty or selfishness like me, but it is best to find an isolated area or an issue they care about. There are plenty of Easy Hacks and bugs to read through, and various ongoing projects such as dialog format conversion.

I wrote this before LibreOffice released the patches. Part 2, of how it went during the ship process, is here.

Response from Synaptics regarding Linux drivers

Here is the mail I received this afternoon from Synaptics regarding the petition:

The open source Linux kernel currently has a PS2 touchpad driver from the third party open source community which was not developed, reviewed, or tested by Synaptics.  Based on industry and customer pull, we do not support PS2 interfaces for Linux as it is not a strategic fit for our roadmap or support model. In general, the trend in the PC industry is HID/I2C, for which we do offer driver support.  Our intent is to submit our HID/I2C driver to Kernel.org as time, resource allocation and customer project prioritization allow.

Best Regards,

Nick

———–

Here is what I sent in response:

It would be great if you were to get working on submitting a driver to the kernel. People will help you find bugs in the code as part of this process, and improve it in ways you hadn’t considered. It occurred to me over Thanksgiving after your last email that writing a Linux driver but not freely releasing is like cooking that big meal and not eating it. Proprietary software was one of the big mistakes of the baby boomer generation.

I will pass this information along to the petitioners with some questions / comments. When you make something public, I hope you make a public announcement as well because it will be read more than your average one. People care about companies that share their values. Here is a video of Steam’s recent announcements regarding Linux that I thought you might appreciate: http://www.youtube.com/watch?v=g8PMUvuHK4g

Unfortunately, I’m not knowledgeable about the benefit of supporting the PS2 interface vs HID/I2C. However, I can say that not every trend in the industry is a good one. IPv6 is a trend that still hasn’t arrived. I think UEFI as implemented is of dubious benefit. Can you please explain in more detail why HID/I2C is better? I may do some more research on this topic and ask other people, but I can say that the existing venerable standard has gotten us a long way including multi-touch and gestures. So I wouldn’t recommend supporting only the new trends which are sometimes fads. The Linux kernel supports 60 file systems. Can you consider to support the extremely popular as well as the latest?

When you think about getting code into the kernel, I want to emphasize making good default configuration values. You didn’t mention that aspect so I raise it again in hopes of a response. I’m sure your driver will have interesting knobs people will want to tweak, but you are the best people to know what they should be by default for your devices. So can you please commit to providing a great out of the box experience by including tested and tuned configuration data along with code?

2. Getting 10,000 lines of code into the kernel could take a year. For example, it took quite some time for Google’s wakelocks code to make it upstream. In that case, there were big disagreements about the design which may or may not apply to your code, but unforeseen things like that do happen. Also, your lawyers end up taking time and I’m sure your kernel developers are already busy and possibly understaffed. As this is your first big contribution it will take even longer.

So in addition to the question of whether supporting only one standard is good enough, there is a question of timeframe. That is why I created the #2 item. I realize you didn’t write or review any of the existing code. However, because you hadn’t released any code publicly in the past other people have written it for your customers. The kernel is filled with code written by other people but this module has your name on it and is depended on by millions of people.

Here is the key point. By fixing that code, you will help many customers today. A 10 line fix to a driver would quickly be accepted and deployed to millions within a few weeks and the entire community within 6 months. It would possibly be backported to older releases as as your hardware is so popular and important.

I read a line that a good way to judge an airline is by what happens *after* they lose your luggage. If they were to tell you that yes, they’ve lost your luggage, but they are implementing a new baggage tracking system that will give it to you in a year, you might not be so happy with that answer.

I believe if you were to ask your Linux customers whether they would want you to fix 20-30 bugs in the existing already-upstreamed code or work on some big chunk of new code whose date for delivery is very uncertain, they would want you to fix the existing code first. So this strategy is faster for us and cheaper for you and could even be a useful learning process on the way to the HID/I2C utopia. Once all your customers are no longer frustrated you can run the process for your new driver at your leisure. So can you re-consider your priorities in light of the situation that currently exists?

3. Also, you didn’t mention the #3 issue about providing a UI to configure your devices. Can you please think holistically about the end-user experience and realize that as your hardware gets more sophisticated, a UI to configure the device becomes more necesssary? You could provide a good value for palm detection by default, but a UI allows me to test and change it if the default did not work for my situation. It is quite difficult to tweak a knob without a UI.

In this code as well, people will help you here, by for example suggesting gestures to be added or turned off by default. By not working on freely-available configuration code, you are missing feedback loops everyone will benefit from. It is overall easier to write UI code on Linux versus Windows. There are more Environments / toolkits, but only 3 are used by 90% of users, and the code will be debugged for you, compiled, deployed and translated for you, etc. You don’t need to start from scratch as these environments have code, but it just needs to be improved. Can you please reconsider this end-to-end aspect as well?  It is also easier to find people qualified to write UI code versus drivers and I think most people would judge this to be more important than a HID/I2C driver.

Thanks again for your mail. I hope you will consider these issues and respond soon. It is great to hear of a new path, but I can recommend you verify it is what your customers actually want as opposed to what some people say they ought to want. I will post a request for feedback on your ideas, but these are my initial thoughts.

——

Please post your thoughts about this, preferably on the petition page.

Arch Linux HiDPI wallpapers

Here are a couple 3200×1800 wallpapers I rendered in Blender using the new Cycles engine based on a file I found.

Default:

Change to glass material:

Enjoy!!

Manjaro, Arch, and Debian

I’ve been running Debian-based distros for my first 8 years with Linux, but I decided to try Arch for my new Lenovo Yoga 2 Pro. Most recently, I was running Mint-Debian aka LMDE, but with this new hardware, I wanted to be more up to date with the latest software. For example, LMDE is currently using Gnome 3.4, whereas the latest is 3.10. LMDE also isn’t really rolling in the sense that Debian-Testing or Arch is, as new things only arrive about 3 times per year. Therefore, between the time to get into Debian, and the time to get the new batch of updates from LMDE means it can be many months after I’d read a news article about the new LibreOffice features before those bits would actually arrive on your computer. In fact, by then I might have forgotten why I was excited about their work in the new release.

I installed Arch but considered Manjaro also. The big benefit is a graphical installer:

Not everyone is comfortable in a command-line, but I believe everyone should be. Today, however, many people, especially those who came from Windows or the Mac, have not yet learned it, and so Manjaro is doing a valuable service to improve the initial out of box experience. There is plenty of time to learn more about how your computer works once it is installed and configured. It is surely possible to take the necessary steps, and the best practices in the wiki, and put them together into a friendly and beautiful installer.

I haven’t tried Manjaro so I can’t say how it would have worked for me. However, given the hardware problems I ran into such as needing to use rfkill, setting the acpi_backlight kernel command-line, needing to tweak the Synaptics configuration to make the mouse close to usable, etc., it would have been almost as difficult for me even with the work they are doing to lower the barrier to installation on this new hardware.

I had to know how to tweak GRUB, systemd, and other configuration files, so I may as well set it up. I hope Linux one day doesn’t require anything tricky to get it working out of the box, but that is not today.

Manjaro has taken the mature Ubuntu installer and ported it over to the Arch system. This is valuable to help new people getting into Linux, but assuming it works, the benefits over running Arch on a daily basis drop to near zero. In fact, running it is possibly less useful than Arch, a topic I’ll discuss later. Note that you can’t switch to the Arch repos after you install Manjaro because your computer might not boot.

Manjaro does provide benefits after installation, but they are of much less value. For example, they have added graphical notification of new updates:

Arch by default handles updates only on the command line, and has no GUI to prompt users when new updates are available. This is a nice but very optional feature as the alternative is just running the trivial command pacman -Syu.

Some things I disagree with about Manjaro. I don’t understand why they have their own repositories with a copy of all the packages when they are mostly focused on the problem of installation. Shipping a different installer entry point into the Arch world doesn’t require making a copy of everything. Manjaro might claim to gain benefits from having having separate repositories, but they are changing only a few packages so the improvements are tiny.

Arch is a bigger team, and so I trust them more to have the latest versions available with important security fixes, etc. Keeping up to date with the latest and best software is an ongoing and time-consuming process. It is the lifeblood of a rolling release. I don’t want to run something that isn’t a part of Arch in that important way. Manjaro should enable users running out of the Arch repository to not lock people in.

Manjaro takes released versions from Arch and runs additional tests on them. By doing this, they can claim to be more stable. However, if the underlying problem is that Arch is sometimes unstable, doesn’t that mean it just needs more people running the test builds? Why is waiting to start further testing a good idea?

Even consider the case that sometimes useful features don’t get enabled in the Arch packages. For example, if Manjaro wanted to offer x86 kernels with PAE support for machines with more than 4 gigabytes of RAM, they can setup their own respository with just that package. The cost to mirror and distribute a few packages is much smaller.

Or, people interested in doing the PAE work could just help out the Arch kernel developer who is probably very busy. It is easy to see problems as a reason to create something better and new. But a fork is social engineering and to be taken with care. I also don’t understand why Manjaro have their own wiki. It seems like it should just be a a few pages on the Arch wiki. The wiki is one of the best features of Arch, why would you start over rather than improve what is already there?

As a side note, Antergos is another (top-30) Arch-based distro with its own simple graphical installer but at the end points to the Arch repositories. For some reason, this team and community is less well-known than Manjaro. I don’t understand why so many small groups of people think they should make an OS. At Microsoft, a team of 4 developers would be maintaining a codec.

Mike Conlon has written papers about forks in software. In short, he said they should happen when people can’t get along. While we celebrate the diversity that comes from freedom, we shouldn’t always consider forks as a sign of something positive. Imagine living in a world that celebrated divorce instead of marriage. The benefits of community come with size and division of labor.

I don’t know much about the community of Arch. I have long respected Debian for its good people, generality, stance for freedom, sense of community, and vast institutional knowledge. The DPL election process itself encourages civil dialog about how things can improve. However, at some point with the kernel, systemd, Firefox, etc. the OS itself is just the tool to compile and distribute all the other components.

How Long Here?

I have run Arch for 6 weeks. I don’t know how long it will last, or whether I will find sufficient reason to leave. My review documented all the problems I ran into, but none are Arch’s fault. Put another way, I found no real problems in their package manager, compile and install scripts.

Some have left Arch and before I installed, I read reviews and articles to understand what the reasons were.

I discovered various different causes but I don’t think any of them will be a problem for me. One of common reasons was that there have been some transitions in the past that were disruptive for users: for example, the switch to systemd broke some systems, but there were others as well. Even if the users can fix the problems, the sum of the inconveniences of the years can leave a mark.

The switch to systemd was cited several times, and some thought it was bad idea being forced on them by a cabal. I personally believe it is important technology modernizing low-level usermode aspects of the OS. The kernel is a great piece of technology, but at the end of initialization, it starts one user-mode process and then waits for work. The kernel doesn’t even write its error messages to disk, just to a memory buffer. Such policy decisions as where to store the files and what format are left to usermode.

There are multiple free init systems out there, and so it is hard for groups to come to consensus about whether to switch and which is the right one. Arch because of its simpler social structures and smaller team, doesn’t have the open debate process like what Debian is currently going through. However, it doesn’t really matter how you came to that realization as long as it was the right result!

In most cases, Arch can provide multiple choices such as whether to run OpenBox, KDE, or Gnome. Supporting multiple init systems was a choice they did not provide, but that was also a good decision. Via the configuration files and command-line utilities, you can tweak a system in innumerable low-level ways. The idea that you gain any further useful customizability via multiple init systems is incorrect.

Arch was relatively late (mid-2011) in supporting package signing. (The benefit of this feature is that you can independently verify that a package came from Arch, no matter whether you download it from their servers, or a mirror, or any other place on the Internet.) Some left Arch, or threatened to, because it didn’t sign packages.

But at the same time, you need to be the type that wears a tinfoil hat to believe that anyone would secretly disrupt Arch or its mirrors. If the NSA wanted a secret hook, they’d put a gun to Linus’s head. They wouldn’t bother hacking Arch as it would take too long to accomplish anything. It was one of those features that is a good idea because it adds end to end security, but was only ever a theoretical problem for Arch users.

In any case, Arch now has signed packages. It was simply a lack of resources and more people complaining than programming. Arch is run by people who see what other distributions do and can learn from them. You don’t need a formal social organization to be able to learn from the good ideas of others.

Because Arch doesn’t have elections, release parties or yearly conferences, it doesn’t have as much a sense of community. Some people left Arch because they found too much elitism and rudeness. I experienced it personally already from one of the maintainers.

Upon filing a bug, I was told that it would have been easier for me to create the package I wanted than to keep discussing whether it even should be packaged. Of course, making your first package is much harder than installing it, just like making a cake is much harder than eating it. I told him that he should have just added the package like every other distro has, rather than keep coming up with invalid reasons not to, but that wasn’t convincing 😉

On Reddit, Arch users commented of my previous review that it was my fault for expecting it to work like Ubuntu, and that I deserved no “sympathy” for any issues I ran into. One fan of Arch even told me I shouldn’t be running it! I have been running Linux for 8 years and working with the command line since he was in diapers.

Of course, judging a community by individual emails and Reddit comments is scientifically invalid. Insanity in various forms is currently a pre-existing condition of society, and I don’t have reason to believe it is worse in Arch than Washington, DC or Los Angeles.

But the distros that have a mentoring process and such will find that it removes a distinction between users which are to be looked down upon, and contributors who are the masterminds. Every contributor was initially a clueless user and some distros even have a mentoring process.

Arch has a process for moving from user to contributor as well, but it is much more about demonstrating past contributions, and eventually given more upload permissions. It also has a user repository area (AUR) that requires no special rights to become a part of the system.

And in the AUR, they have a mechanism which allows people to vote on packages, and the most popular can be included in the main repository. These feedback loops are great forcing functions to make sure the developers listen to users. Bugs can also be voted on, to help developers prioritize and make the system more democratic. Even though Arch is missing some of more refined social structures, it has its own.

I’ve also read about how some people left Arch because they had multiple breakages over time and lost trust. However, there are wiki pages that explain how to handle the situation and best practices for system stability. Almost always the problem is a mis-configured system, or a bug in the upstream code. I have two kernels installed, the mainline (3.12.3) and the LTS (3.10.22) version. So if a kernel upgrade breaks, I can always boot to a known-good one. Because Arch doesn’t have the resources of the big vendors to debug kernel problems, it can be nice to have an extra as backup.

That doesn’t solve many other ways the system can break before it finishes booting, but it is nice to have. It is a fact of life that it is very easy to break an OS. Death is the norm in this world. I’ve read stories of people who accidentally configured their computer to sleep in response to the system start event.

The community of Arch is large enough that users run into all kinds of problems that more slowly moving distros would never see. Of course, Arch isn’t large enough to debug every problem but they have the resources to fix the bugs that “everyone” runs into very quickly. There is safety in numbers.

Many of the hardest transitions in Arch are in the past. I expect it to be smooth sailing now. I can think of little ways to improve it, but given that it is running all the latest software, I have no reason to install anything else right now.

Arch is under the radar compared to Ubuntu, Fedora, Mint, Debian, Suse, etc. It gets less than 1% of the news that those others get. It doesn’t have benevolent dictators making hardware deals and memorable pronouncements. It doesn’t have billion-dollar companies supporting them. Somehow, they’ve managed to survive.

The free software community is still surprising to me. 50% of computer users know of Linux. 10% of them know Ubuntu. 10% of them know Debian. 10% of them run Arch. 1% of them contribute to Arch. There are many good distributions and working on them. When you consider it is only on 1% of desktops, it is astounding how many solid choices there already are. Arch is the secret anarchic distro that works perfectly.

Petition to Synaptics Corporation regarding flakey Linux drivers

I am writing this on my new Lenovo Yoga 2 Pro which comes with a beautiful screen and your Synaptics Clickpad. I have created this petition because there are a lot of problems with your hardware on Linux that are frustrating, time-wasting, and distracting. Right now, the pointer moves when it shouldn’t, and doesn’t move when it should, which is pretty close to the worst-case scenario for a mouse.

I’ve been using your Trackpads happily for years, but with your new model, things are such a mess that they get in the way of my ability to work. What if we users added up all the time we have collectively wasted and sent you the bill? Given it already has about the same marketshare as the Mac, the total number would have a lot of zeros. With the time I’ve wasted, I’d sign up for $200 / year in any class action lawsuit.

I know you spend most of your effort working on the Windows drivers, and that is fine because it is cheaper to maintain Linux drivers. The community will help you. You’ve written a proprietary Linux driver, but you never made it available. Why write something almost no one uses? There is a free Synaptics Linux kernel driver written for your users, but it is buggy and you haven’t ever helped on it.

I wrote a full review of Arch on my new hardware talking about the problems with your mouse in more detail. The point is that your new devices with an integrated button require smarter software to be usable. Well, now that you’ve pushed this new hardware of dubious benefit and definite downsides, what are you going to do?

Synaptics should respect our freedoms, and:

  1. Release a copy of your proprietary Linux driver under the GPL (or public domain) and publish it somewhere where it can be used as a reference to minimize the need for any further reverse engineering.
  2. Find a kernel engineer from somewhere in your 550-person company and have them help maintain the existing in-kernel Linux driver. Aside from the obvious bad behavior you will notice when you install any distro, there are also a number of old bugs in the kernel database regarding Synaptics.
  3. Help ensure the Gnome, KDE, and XFCE user interfaces allow customers to configure the gestures and other advanced features. This configuration UI will be shared with other hardware devices so you won’t have to do that much. While you wait for the magic that is Windows 9, you must have some free time.

Windows might be the majority, but a big part of that is because the laptop manufacturers expend little to no effort on the alternative. Meanwhile, 50% of their customers would be happier running Linux if it was well setup! We can wonder why it hasn’t arrived on the desktop like it has for cellphones and servers, but in the meanwhile, it would be nice if the effing mouse worked well out of the box.

Linus can’t go around saying F-U to every hardware company although surely Synaptics deserves it. if you are frustrated with Synaptics hardware, take 1 minute and sign this petition where you can also add your comments! https://www.change.org/petitions/synaptics-corporation-help-maintain-linux-drivers