I checked the keyboard debouncing logic [0] and it was fine. Some keyboards from other manufacturers, notably Lenovo Thinkpads, have absurd debouncing algorithms that scramble keys or add delays, so it's good to see Framework has a correct solution.
I've noticed that I seem to miskey my unlock password immediately after resuming from sleep way more often than when I use that password at other times, or when using an external keyboard (Lenovo T480). I always suspected that something was wonky, but a weird debounce bug would totally explain it, especially as I tend to type that password very quickly.
The scrambling is easy to see once you know it's happening: press k and l simultaneously on your Thinkpad keyboard. It'll always come out "lk" unless you deliberately separate them.
Testing was done [0], but it's not written in an easy-to-understand way. As a summary, Thinkpad keys are scrambled within 15-23 ms. Usually, humans ascribe scrambled letters to their own mistakes, but this time it's the keyboard's fault. Lenovo continues to ignore the issue.
One very stupid solution for your password is to change its letters to go from right to left. That way the scrambling will become anti-scrambling and you can type your password even faster than on a normal keyboard!
Oh man, is that why pressing "iu" quickly would come out as "ui"? I know I press them correctly, because I use the middle and ring fingers together simultaneously, with the longer finger obviously striking one key first, yet they'd always come out wrong.
Wow. I'm surprised they don't do this on the component level. When I was working in embedded, I considered software debouncing a lazy hack. I'd rather sanitize the data before it hits software.
Firstly, hardware debouncing is a bit awkward to implement on a multiplexed matrix, since you need a debouncing circuit for each of your inputs (meaning about a dozen or so of them).
More importantly though, software debouncing offers greater flexibility. For keyboards, you usually[1] want to implement an asymmetric "eager" mode, where a key press gets registered immediately and only the key release is debounced. Since software usually does stuff on the key down event, this works to reduce latency.
[1] Well, that's what the various enthusiast mechanical keyboard firmwares do, I am not so sure that generic $random_corp keyboards do care...
It looks like he keyboard state is read by the driver, rather than the keyboard sending the state to the OS. How would you denounce on a hardware level with such a setup?
One way is a RC circuit - where the switch (the keyboard button) in series with a resistor then charges a capacitor. You specify the ratio of resistance to capacitance so it takes long enough for the switch to stop bouncing before the capacitor output rises to the sense level of your digital input.
But if you want to reduce hardware cost, you can eliminate many capacitors and resistors by doing it in firmware instead.
Computer keyboards tend to have switches in a matrix so that only (columns + rows) number of GPIO pins would be needed on the keyboard controller. Each column gets strobed at once in turn, and the rows sensed.
Cherry once made a software/hardware hybrid but it didn't have any advantages compared to software debouncing, and it needed more power, so there was only one model.
If I understand it correctly, debouncing with a capacitor delay events somewhat. With software debouncing (done right) you are only required to have a minimum time between the press and release events.
Yeah, I get where you're coming from, but a few dozen SMD caps and resistors ordered in that kind of bulk probably raises the cost by a penny. Of course you do technically have more points of failure I guess.
I've always wondered why the same logic doesn't apply to using a commercial BIOS. Doesn't the per-unit cost for someone like Compal add up to more than the value in using a customized Phoenix firmware? Even with UEFI the branded option is generally used.
There aren’t that many 1% in 100% or even that many 0.1% in 100%.
Saving a penny on the keyboard will be one of hundreds of places where a penny was saved. Good engineering and product design is about trade offs and compromise, not taking absolute positions about what’s shitty or not.
Exactly. Opportunity cost. Maybe saving a penny on this portion of the keyboard let’s them spend a penny on some other part of the design that might have even more positive customer impact.
Typically in a 5v system you'd treat capacitor output voltages under 2.3V as pressed and over 2.3V as released. There is a "pullup" resistor and the switch is wired to "pull down" the circuit towards ground, through the mentioned resistor.
Most Microcontrollers have the pullup resistor built in. Modern ones even let you turn the pull-up feature on and off per pin with a SFR (a special register /fixed memory address you can write to where you change hardware settings). Often you can also choose between reading a pin or driving it as an output.
The most important thing to know about debouncing is that any hardware switch bounces from 50-200 times over a very very short interval when you press it. You can use an oscilloscope to see that. The bouncing is not as bad on release but I imagine it still exists there too.
Another fun hardware trick is that when you turn off a magnet (like a relay) you can get a massive over-voltage pulse back (10x typical drive) for a moment. You need to protect yourself from that, for instance with a Schottky diode. Here's a discussion on that fun detail [1].
>"The scrambling is easy to see once you know it's happening: press k and l simultaneously on your Thinkpad keyboard. It'll always come out "lk" unless you deliberately separate them."
Is there an easy way to fix this? This is a noticeable nuisance in Emacs, when chord strings get "debounced" out of order (i.e. things like C-xC-m -> C-mC-x are quite annoying). The debounce precision is slower than fast human typing. Even though keypress event order is correct and noticeably correct, it gets rounded to "simultaneous", and then reordered (backwards) according to the logic you've described.
I’m always noticing the terrible denouncing times on things like appliances or garage doors, but I never thought about how it affects multiple key presses in keyboards. Fascinating to get more insight into a particular pet peeve of mine.
This is why I’m eyeing a Framework laptop. I have a not-so-old ThinkPad E480 that I avoid using because of this issue.
On top of that, I didn’t know what the issue was and it drove me nuts until I figured it out. Left a very bad taste in my mouth for Lenovo/ThinkPad despite all the love they receive.
I’ve noticed this same thing with my Framework, and thought it must be a bug in i3lock, PAM or something else. Multiple times right after waking it, i3lock tells me multiple times that my password is incorrect. Upon restart it works fine.
We used the chromium-ec logic as-is (checking git blame), but I believe did tune the debounce timer to match the characteristics of the keyboard itself.
Out of curiosity, is there anything in particular that you're looking for? On a cursory glance, whenever a key state is sampled as different to the previously reported state, it immediately reports a state change and locks out any further reports for a specified amount of time. So, the report goes out the moment the state changes, so long as you can't perceive the debounce time, which I presume would be a few dozen microseconds. (Rather than some debouncers I've seen which wait for the debounce period to end before sending the initial report)
Yes. Essentially, when you see an edge, update the state immediately but have a guard interval before allowing further state changes.
Intuitively, this means register the event when you see the first edge, not once the bounces have finished.
For an example of incorrect denouncing, see most articles on denouncing (the hackaday article comes to mind), and the QMK firmware last time I checked (most keyboard set the denounce time to zero, so the debounce time just becomes the update rate).
A capacitor plus pull up resistor will add an RC time constant delay on switch release, and for it to be effective at denouncing it needs to be on the order of 10ms. A software solution has zero delay in both cases.
A Schmitt buffer isn’t necessary when using polled GPIO with a microcontroller.
An equivalent accurate discrete logic circuit would be a latching circuit with a gated input pulse on state change corresponding to the denounce time, which is overkill for simple button handling.
I find the has_ghosting() function more problematic and reminds me of why C just sucks even if it is the appropriate choice.
c and c2 loop variables so a typo can hose you horribly. A global variable to hold the array length. ! instead of comparison to 0. Having to offset the second loop by 1. Early return which means the function will normally work fine but might result in N^2 extra time depending upon the data state. A bit trick relying on unsigned underflow without pointing out that unsigned is a key constraint even though it has a comment. An extra missing const on the incoming pointer (should be: const uint8_t * const). Braces left off the short-circuit if conditionals.
The worst part is I have personally written tons of functions like this. This is a "normal" function in C--in fact, it's far better than average.
The fact that you write C like this just shows how much we need something better.
This is a microcontroller firmware. Moving what is essentially a constant around the stack would be insanity.
> ! instead of comparison to 0
Not a problem and even idiomatic.
> Early return which means the function will normally work fine but might result in N^2 extra time depending upon the data state.
It only takes N^2 time when all columns have at least one key pressed but not have at least two rows in common in any of them (except maybe the last two) - hardly a state that you care that much about. Would you really want to increase the latency/power consumption for single key presses just to have the exceptional case not be slower than normal?
If you wanted to you could restrict the early exit with the same test for having at least two bits set. If the key matrix has no unused slots you would then only check if there is another column which shares any set row bits (because it would then share all of them), which could let you make the algorithm O(n) with some additional memory for row bit counts. But the code would be more complicated and the number of columns is not dymanic. Plus the key matrix most likely has unused slots precisely to avoid ghosting for common combinations.
> A bit trick relying on unsigned underflow without pointing out that unsigned is a key constraint even though it has a comment.
The variable with type is declared right before the bit trick. If you change it to signed when there are bit operations, especially ones you don't understand, then you deserve what you get. However, this trick does not rely on unsigned underflow. the only concern with signed (assuming two's complement) would be if the sign bit is the only one set, in which case the signed underflow would be undefined at the language level - but not a problem at the hardware level since two's complement addition/subtraction is exactly the same as unsigned addition/subtraction.
> An extra missing const on the incoming pointer (should be: const uint8_t * const).
const on the outside of function parameter types (as opposed to inside them) does not change how the function can be called. Sure, you could make all local variables const if they can be but for such a tiny function that really does not add anything.
> Braces left off the short-circuit if conditionals.
Meh, that is a code style choice and no reason to complain about C. Also not really that dangerous with modern compilers that warn based on misleading indentation.
And you missed the actually bad part of the function: The comment that says the colummns are ORed together when they are ANDed.
The problem is that you're dealing with an analogue signal. The gold standard for debouncing because of that is a low-pass filter, which is implementable by a resistor and capacitor, and way more reliable (and responsive) than any software solution.
Can you describe a case in which rejecting a duplicate keypress that arrives within a specified number of milliseconds is ineffective, unreliable, or even suboptimal?
A lowpass filter is an empirical hack, not a gold standard. It has multiple disadvantages; rather than being "responsive," it adds latency to the initial input for no good reason, and it affects both rising and falling edges equally, again for no good reason. It also requires the addition of unnecessary physical components.
Key bounce takes place at timescales far shorter than human reaction times. Typically you'd base the interval on the mechanical characteristics of the keypad.
For instance, taking a look with a scope, if you observe that the signal stops bouncing after 3 milliseconds, it would be pretty safe to accept duplicate keypresses with a 10-ms guard interval.
You'd have to have two intervals though, one for on, one for off. It bounces both ways. Hardware is more elegant but obviously the tradeoffs depend on what you're implementing.
You're fine either way. You either have to poll, or use interrupts. If you are polling, you don't need to debounce the circuit. If you use interrupts, you're going to have a very bad time if you don't. Interrupts are much more efficient. Polling is wasteful.
I don't see why interrupts wouldn't work without hardware debouncing.
$2 micros are many MHz. All it has to do is save/compare one timestamp per interrupt.
So lets do some back-of-the-napkin calculations and say it takes 1us to store/compare the timestamp, a switch transitions 50 times per press on each change of state, and a person is typing at 100wpm (lets say 600cpm = 10cps).
I think these are pretty conservative numbers, 50 bounces sounds like a pretty crappy switch to me.
So 1000 transitions per second which would take 1ms, which means 1/1000th of the time is spent servicing the interrupts.
It's not going to cause a problem unless the coding is very inefficient.
This made me wonder if debouncing is also a thing with software keyboards? For years I have sworn that I type things correctly on the iPhone keyboard but it gets it wrong.
I'd assume that the capacitive touch sensing will certainly have some kind of debouncing as it crosses whatever the threshold is to register a touch or not.
This reminds me of a weird issue I have with my Lenovo where sometimes the trackpoint and mouse buttons stop working until a reboot (but the trackpad still works.) I think I must trigger a race condition in the trackpoint drivers somehow but I have no idea how to debug it.
>You just use a switch with 2 outputs: for on, and off position. Triggering 2 at the same time is impossible.
But then the switch will still bounce except now it bounces with an extra state and you need extra logic to read an extra output per switch and debounce both outputs, which also makes PCB's more complex further increasing the cost.
>Surely less than a percentage of a cent in extra cost.
With the extra PCB and custom logic complexity you just added with the extra output per switch, you're looking at way more than that, which I guess is why the industry went optical instead of following your idea.
> But then the switch will still bounce except now it bounces with an extra state and you need extra logic to read an extra output per switch and debounce both outputs, which also makes PCB's more complex further increasing the cost.
No, you don't need to debounce both. Both signals will never be connected at once.
>You just use a switch with 2 outputs: for on, and off position. Triggering 2 at the same time is impossible.
You've pretty much just described a standard everyday bog standard switch.
It's either over the threshold resistance for triggering, or it isn't.
Nothing you've suggested here excludes a switch that changes state by bouncing between the two states 50 times per physical press when you sample at MHz speed, as most switches do.
I've been so happy to see what Framework has been doing lately, and really want to support them, but I already have a desktop as my primary computer and two Thinkpads that are already set up nicely, but that I rarely use. I moved from 15" laptops to 14" when Lenovo added the numpad on the larger variant, and 14" is about as small as I want to go.
I kind of want to buy a framework though, just to support them? But I have no use for another laptop, let alone a small 12" one! Should I get one anyway because, what the hell, why not? Should I wait and then jump on one if/when they release a larger model?
Anybody else have similar feelings?
Edit to add:
I also have one of the last Thinkpad models that support S3 sleep (T480 -- within a model or two, I think?), which is currently super critical for Linux... I need to be able to close the lid and come back after a week.
It's easy to blame the manufacturers for this, but the consistent answer seems to be "Intel's Tiger Lake platform does not support S3 sleep," and all of the system builders base their work on what Intel's reference platform does. So short of going to extreme effort to hack it together themselves (something that is likely not their specialty), reasonable sleep behavior is not going to be an option unless Intel brings S3 back, or does work to improve the S0ix states.
I absolutely do not want to support the no-more-S3 clusterfuck right now.
FWIW I don't think you should buy a laptop from them just to support them.
Just adding to e-waste down the line, and I'm sure they are selling enough units.
In the future when you do actually need/want a new laptop of course it would be great to support them then. And advocate for them when a friend asks about what laptop to buy.
Completely agree about e-waste, and as a result, I try to take good care of my laptops and use them for as long as I can (I used my previous one for about a decade, and it's still perfectly usable plugged in / for light tasks).
I try to make sure to limit the max charge percentage to 80 on all devices I use. Voltage in many lithium cells increase with heat, so if you're already at full charge you might overvolt you battery. This is why new devices are shipped with 66% charge, because the same applies to cold and undervolting, both ruin the cells.
Apple has been able to do "clever" things while asleep, like waking up the wifi chipset periodically to check for email / messages / notifications / updates, so that when you wake up, everything magically feels ready to go instead of feeling like you just woke up from 1984 and have reams of crap to download.
But this only works well because Apple does their own firmware for most of the machine, and seems to do a reasonably good job, despite a few issues. They're careful about only doing things that aren't going to obliterate the battery in a way that would be surprising.
Microsoft is jealous of this functionality and knows they want something like that for Windows. They also know they need to cater to the lowest common denominator with system builders, so they asked Intel to put this kind of capability into their platforms, and to explicitly disable the old modes, so that system builders wouldn't be able to drag their feet. The result is that they've all switched, but the outcomes are generally poor and high variance. Sometimes they're passably okay within Windows, but not always. It'll probably get better, but for now things are crap, especially on Linux.
I believe it's configurable in firmware, as my ThinkPad e14 gen 2 has a BIOS option to set the sleep state behaviour. The options are labelled "Windows" and "Linux".
Why is this hard? Like I know it's all hard. But is it just new? or is it not documented at all, or some structural issue with how distros expect states to work?
Have they? As far as I'm aware, sleep states are "supported" in hardware well enough, but doesn't prevent software/settings from not using them correctly.
Not that I blame them, there are many different sleep states from core/package level [0] that map onto system/platform level sleep states [1]. Fucking confusing, and I'm sure something is waking it up. Have you checked Windows Task Scheduler? My college laptop had a Norton Antivirus scan wakeup at 5am every day and would be re-enabled every Windows Update, similar pain to you
Hopefully they are able to expand their lineup to include a 15" model. I tried to work on a 14" MacBook Pro and ended up returning it because it felt too small. Though I probably still wouldn't exchange my 16" M1 MBP for a 15" Framework laptop unless Framework manages to even come close to competing with M1's power efficiency. That really depends on a chip designer making something competitive though. Not much Framework can do other than find ways to improve Linux's power management.
Adding my vote: I'll definitely jump on a Framework 14+" here. My eyes cannot work well w/a 13" without glasses. If I had better near vision (will be all over the lens-softening eye drops) it would be a different story.
I'd like to support their cause, but like you, I have way too many machines that already work well enough, that I can't justify another purchase unless it would offer a substantial improvement over my current setup (old ThinkPads). Plus I really can't function without a Trackpoint ;)
So I'm holding out a generation or two to reconsider. I hope they improve.
> From reports I've read the Framework laptop has poor build quality.
I'm gonna be really honest here and say that people have a very distorted subjective idea of what a 'sturdy laptop' is like. A lot of marketing money has been spent to make people think the only way to have a strong object is for it to be made of a rigid metal or glass material, so people go "oh my god the lid can FLEX this thing will break if I drop it!" but that's not at all how things work.
The truth is you can't really just guess at whether a thing will survive falling or whatever by looking at or touching it. The only thing that tells you anything really is actual experience and/or testing.
(personally, I think my framework laptop feels plenty sturdy for all the subjective anecdata that's worth, it's just not designed in a way that's trying to scream at you "you can run it over with a truck and it will work perfectly")
I would categorize the laptop not turning on for 2 weeks, poor speakers, fan noise, mushy/creaking keys, and weak hinge all to be part of build quality. And yes, software issues are also a problem.
We can argue about how subjective all of those points are, and if a single report has any merit on its own, but it was enough to disuade me from making the purchase.
If I could test the laptop locally before buying it, I would do that. Otherwise I don't want to risk it on a first gen product, since I _can_ wait for gen 2 and 3.
> Build quality is clearly a step down from my old Thinkpad X1 Yoga. The hinge doesn't feel as strong, some keys are mushy/creaking and I'm skeptical my Framework will survive as many falls as my old laptop.
That is not the same as saying the build quality is poor though: it's clearly a comparative statement. "The Tesla Model S is cheaper than the Model X" does not imply "The Model S is cheap".
Replacing "Model S" in the sentence with a beat-up '97 Honda civic and it may be true, but there is not enough evidence contained in the sentence to support an absolute statement.
Our individual thresholds for quality differ, that's for sure, because my definition is "Was the object built well, considering it's constraints?" As an example,if something is made of plastic (or "polycarbonate"[1]), I expect it to flex to a degree, and it can still be very well made (e.g. old school Nokia phones had incredible build quality and industrial design)
1. I hate that plastic had to be re-branded in this manner because a small-but-vocal contingent decided it "feels cheap" on phones, or somehow lowers build-quality. This resulted in glass-backed phones which ironically had to be kept in plastic cases to take advantage of plastic's superior elasticity.
The correct quote regarding the hinge is, "the hinge doesn't feel as strong". "as strong" doesn't mean it isn't strong. It means the original commenter doesn't think it is as strong as another hinge not that it isn't strong. Since there is no data regarding actual hinge performance this is a subjective and not an objective evaluation. Keyboard feel is also very subjective, so one person saying the keyboard is "mushy and creaky" holds no real value either.
I've had my laptop for a while now and haven't noticed any build quality issues. It definitely feels nice and light but it seems sturdy enough. I'm not in the habit of dropping my laptop on the ground but I do chuck it on to the bed from time and to time and it doesn't seem any worse for wear.
I came across similar anecdotes of build quality and turned my nose. I found myself wishing I could hold a Framework laptop twist it like I was ringing out a wet rag. Surely this is a good test of build quality, I thought to myself. But in a moment of clarity, I realized this and other pseudo signals of build quality that Youtube reviewers and other armchair experts were attempting to use to draw comparison (to a unibody macbook pro) were either irrelevant or pedantic. Why is a unibody the pinnacle of build quality? Shouldn't longevity be?
I checked my Apple elitism at the door and I put my name down for a Framework in September and got it in October. Happy ever since. It's a great little laptop and would highly recommend others.
Some of these issues could be subjective, and I shouldn't decide based on that single report alone, but it was enough reason to reconsider the purchase, especially since, like I said, I really don't need a new machine.
I would say all that is subjective regarding what they specified as "build quality". I'll add my own take to it - I got mine early last month and haven't noticed any of those. That said, I do think the battery is the weak spot, but I think part of that is on the OS side (I'm running Pop!OS).
Had mine since July, batch 1. No build quality issues at all from my perspective...one of my favorite keyboards to type on. Battery is not so good, though.
That’s not my personal experience at all. Yes, my $4000 14” MaxBook Pro has objectively better build quality, but I think the Framework is at least on-par with the $2000 XPS 13 I bought first (and later returned for the Framework).
Can’t comment on the trackpoint, which is something I’ve never personally liked, but if that’s a deal breaker, you’ll probably have to have a Thinkpad. But I’ve been very pleased with the build quality of my Framework.
Can anyone recommend a laptop that gets great battery life on Linux and has a good keyboard?
I've been thinking about selling my current beefy laptop (razer blade 15) since I end up doing all my MCAD/ECAD work on my desktop anyway, and moving back to Manjaro on my laptop which only really gets used for software/firmware anyway.
But, I read so many horror stories about linux firmware glitchyness and poor battery life that I gave up on the idea. If I can just by a used thinkpad from a few generations ago that might be perfect.
My ThinkPad x270 runs perfectly on Linux out of the box (including Bluetooth, webcam, etc.), and with the larger 9-cell battery (+ the smaller internal battery it comes with) it ran almost 20 hours for normal coding usage when new (less with other usage, and of course it's gone down a bit since, but can still work a full day on it).
It should be said I run a pretty minimal system (dwm, st, Vim, stuff like that) and usually throttle the system to "powersave", mostly because the fans will never spin up with it. It's a bit slower, but still plenty fast enough for me.
I get decent but not amazing battery life on my XPS 15, running Pop_OS. About 5-6 hours of actual use time. No major firmware issues but it is using Nvidia.
XPS 15 laptops appear to have an unresolved mouse lag issue that is noticeable under linux (but seems to happen in Windows too). Seems to not happen with external mice. Annoying but not a big deal. There is an open issue for it but no patch yet.
had one. It died. Battery swelled up, I replaced it. It died forever because, I think. I closed the lid and put it in my bag. Doing exactly that is what makes a laptop a laptop. It was a couple of months out of warranty and you can't even contact Dell to say "Is this your quality? Is this acceptable to you that your laptop is this bad?" You need to plug in serial numbers on their website and they just tell you to get lost. Can't email them. Can't do anything.
So yes. The Dell. I do NOT recommend. They are garbage quality devices and their support is utterly terrible. Wildly overpriced for what you actually get.
I've had great battery life and overall experience with my System76 Lemur Pro. However, I have only used their PopOS and don't know if Manjaro would fare differently.
I'm waiting for something with beefier internals, or an AMD variant, or both. That being said, they'd have to redesign the power delivery system and thermals, so maybe it would no longer be as modular? Anyone with the knowledge care to weigh in?
there wouldn't be any new parts except the mainboard/cpu/heatsink. It's unlikely for someone to want to replace only one of those*. I don't see a loss for customizability or repairability
* very few people can solder a cpu and I've never heard of a heatsink needing replacement
Funny you say that, my current laptop has a really low wattage chip and as a result, a very small heatsink. As I was removing the plasticy thermal dividers that insulate the rest of the board from the heat of the heatsink so I could lap the contact area, I bent the heat-pipe and pinched it, since it was so thin and fragile.
That being said, that's a bummer. Would be nice to get a higher end compute option or one with a dGPU.
Similar feelings, yes. I don't mind the size at all. It's just that I've got a sweet thinkpad x13 already. My next laptop though, surely a framework (if they are still around)
You can try re-selling your existing laptops in the local market. Plently of buy-sell communities on forums or groups. Sure, you won't get your buy price but you will get a decent amount back.
I agree with not adding unnecessary e-waste to the current crisis. But perhaps you have someone in your life that could really use a laptop? You could get them a gift if they're interested in the laptop
You can go for the DIY version without Windows installed, but you have to assemble it yourself and there isn't a supported version of Linux it seems. Giving you the option of preassembled but with no OS installed would seem to be the logical next step before maybe offering a supported Linux version down the line if it's commercially viable.
> I wouldn’t buy a Framework right now because they come bundled with Windows and not Linux.
That only applies to the prebuild laptop. The DIY edition gives you the option to buy the laptop without an operating system. It's fairly easy to assemble the DIY edition yourself and save money by DIY.
I've been running NixOS on my Framework for the last few months, and I've been really happy with it. I initially got it so I'd have viable hardware to do osdev on, so learning that they are going to open-source its firmware makes me even more happy.
Seems too good to be true. Reasonable prices, upgradable, no soldered ram. So has it been a reliable Linux laptop, what's the battery life with your options?
You nailed it, battery is the only downside I’ve had, not awful but probably say 3 hours of video playback, or 5-6 hours of web use. Haven’t used it unplugged all that much so very rough guesses. Bigger problem with my fedora install at least is battery draining while the lid is closed.
Overall great machine
Edit: I may be missing software updates that improve this, no idea
I very much wanted to hear about this and damn :-(
Video playback must be hardware accelerated by now and be super efficient. Another worry was about low power sleep modes and waking up, and looks like it is not solved too. I might have to suck it up and buy the Mac for my needs after all. I have my trusty Linux desktop for all my big compute needs. I was hoping to make the mobile machine also run Linux, but the specific needs there (crisp display, nice battery life, Linux friendliness) seems to be an elusive goal.
It's still a real pain to get hardware accelerated video in a browser on Linux. Google is still outright refusing to support it in chromium, even though they do support it inside Chrome OS. There are few community patches floating around if you're willing to roll your own chromium to enable to Chrome OS hardware decode pathways on generic Linux.
You can mostly get it working on Firefox if you play around with the config options, but it only works with AMD and Intel GPUs (anything supporting vaapi).
As a heads up they fixed the intel xe graphics sandboxing issue in firefox 96. See https://bugzilla.mozilla.org/show_bug.cgi?id=1698778 It works great on my Framework with NixOS. My about:config settings (taken from my home-manager):
The M1 MacBook Air honestly feels so far ahead of any other laptop I've used that it's not even funny. Fanless, powerful, absolutely bonkers battery life.
There's some concerns about paravirtualized GPU performance, but the equivalent of "sports car" (workstation/server-like workloads) runs in VMs in cloud providers all the time.
That is untrue for native arm apps. The OS actually requires signing. If you are running an x86 app through Rosetta you can currently avoid code signing requirement.
I've been using a Framework laptop for a month on Ubuntu 21.10 and pretty happy with it. Some hiccups but mostly answered by digging through forums.
Battery life in operation is excellent, but it does drain 30% in 8 hours when on suspend which is a bit much. Not a dealbreaker but hope this can be solved.
High battery drain during standby on Linux can be due to the system not entering the proper sleep state. I had this happen to me on an AMD machine lately, in that case disabling secure boot solved the issue.
Here is a pretty detailed blog post in checking if that is the problem and how to deal with it on intel systems
Out of my element here, but would be curious to see if this is something solvable in firmware (now open-sourced!) or if it's a hardware problem to begin with (power states? etc).
Edit: Also curious if this issue is generally a hardware or firmware issue in most laptops, or if it's a mix of both.
Could be caused by Modern Standby (by default newer laptops remain on even when nominally off, which has been known to cause issues). Some more details here:
The problem is that current Intel laptops don't use S3 anymore, they use S0ix a.k.a. "modern standby", an abomination where the CPU doesn't really sleep and the battery drains fast.
I have a Thinkpad X1 from 2018 and by default it came with S0ix enabled and Lenovo later on added the S3 sleep state option through a BIOS update, called "Linux compatibility something".. Before that, one had to manually edit the DSD table to get rid of this evil burning-sleeping-laptop-in-backpack-feature called S0ix.
Does the Framework Laptop, or other popular models from the other manfacturers you mentioned, not have a S3 sleep state option these days, i.e. S0ix only?
S0ix has stronger requirements on the "correct" interaction between firmware/BIOS and OS, it offloads more work to the OS. Poorly implemented S0ix will drain the battery faster, but correctly implemented S0ix is as good as S3 or even better.
Lenovo put out a buggy S3 implementation on some systems that hasn't been tested well because it's only an optional "Linux suspend" setting. Drains twice as fast as Linux with correctly implemented S0ix. And the worst thing is, nobody except Lenovo do can fix it because it's all on the BIOS level, and their China-based firmware team has other priorities.
Well-implemented S3 is nice. But it's going to disappear. Both Intel and AMD are switching away with full force, vendors won't have S3 options in the BIOS going forward and the ones that remain will likely suck. On the other hand, S0ix support is coming together even on AMD platforms which were a little late to the party. Once it's working decently, I'd rather trust my OS than my laptop manufacturer's firmware team to suspend components correctly.
Battery life on mine with a pretty minimal Arch install and TTY is around 10 hours when doing light web browsing and programming. Only problems I’ve had are hardware related. The trackpad isn’t 100% reliable (sometimes clicks don’t work and I have to press hard to get it to work again) and the hinge is far too loose. Love the laptop overall.
From what I've heard battery life is much worse on Linux than Windows. If you're willing to spend some time hacking around you can close the gap a bit, but it'll still be a gap.
Personally I can't confirm this. I've recently replaced the battery on my 2014 Thinkpad, and on low brightness I get around 8h of battery. That is of course, while not doing a lot of compute (compiling).
I don't think this was much higher, back when I used Windows all those years ago, so I'm not sure what people are saying with low battery with Linux? I don't see how Windows could get me much more? And why would it?
If you have a Thinkpad, then the issues with the Framework (CPU sleep states, needing to turn of secure boot to hibernate properly, power management issues in Framework BIOS 3.06, etc) wouldn't necessarily apply to your laptop
I haven't run Windows in my Framework laptop so I can't really say if there's a difference but the issue in Linux was mostly because deep sleep wasn't enabled for some distros.
Having come from Debian, Ubuntu, and Manjaro I settled on what feels like the last distro I will use on my own systems: NixOS. It's not so much better, it's so much different.
Every(ish) single package, every single line of configuration(ish) is under version control in a(couple) nix files. I share (most) of it between my systems. With flakes (and it's lockfile) it's a 100%(ish) deterministic system.
Downside: The language is arcane to me and the tooling is dogshit. Not that I could've made it any better, but running my config repo through entre to rebuild on every write to get some promiscuous error nobody has had before sucks major D.
Therefore I still have an Ubuntu container (because every desktop application targets Ubuntu) running with X11 forwarding for the few packages that aren't in nixpkgs that I wanna run.
I also don't use home-manager, but chezmoi for my dotfiles. Since I want my home configuration to work on MacOS and other distros I might SSH.
Atomic upgrades and downgrades are such a great feature I don't know how people can live without it now that I've experienced it.
Note: The default configuration NixOS gives you is also shit, out of the box they don't ship a system like you'd want to consume it (nixos-generate-config). An anecdotal example is that Avahi isn't installed by default, which means chromecasting won't work until you figure out that you need Avahi, i18n config is shit too.
So it's not all green grass, but definitely worth it, since every Nix line you write is an investment into making your experience better "forever" (I don't see NixOS going away anytime soon, very healthy activity on the project).
Now after praising NixOS for awhile, let's praise the developers of all packages that are compiled into the lovely distros you all use. For me the KDE team can't get enough praise, the software is so damn good.
> I also don't use home-manager, but chezmoi for my dotfiles. Since I want my home configuration to work on MacOS and other distros I might SSH.
FYI, home manager works on MacOS just fine. I usually tell people to start with Home Manager as I think it's the best gateway drug to Nix stuff at the moment.
Just wanted to echo all of this. I started with home-manager and then moved to NixOS over the holiday. It’s really been great: easy to set up, relatively easy to configure most things, and it’s so lovely to know that the changes I make are checked into version control for easy use across machines.
Same here. Over the holidays I first tried NixOS in a VM and really liked it. I had a lot of fun setting up the system. A week later I installed it as my main OS and is has been great so far
The screen is very low-res and the GPU is weak. This is why I don't have one.
If you don't care about pixels (seems common in PC-land), this is probably a good thing re: power consumption.
I look at text all day, every day, and want it to be high res. It's been high res on my Macs for half a decade, and my XPS is even better. I'll get one of these once they fix the screen.
Especially on a 13" screen. I have an XPS 13 with a 4k screen and I never use it at native resolution undocked because I'd need a magnifying glass to read anything on it.
That's been the unfortunate part: "do you want 4K or 1080?" has been the question for the longest part without consideration that many people want something in between--hiDPI without going into sizing where you can't tell the different. I have only had 4K screens (15", 14", & 13") since 2015 and can't handle 1080, but I don't want the wasted battery from 4K on smaller sizes.
Once you get used to 220+ ppi, it's very difficult to go back.
I even don't like my 218ppi displays that much, they are a little fuzzy compared to my 300+ ppi displays.
It's not a matter of opinion what is "low" or "high" when dealing with integers for resolution. It's evident that you think a low-res (by 2022 market options) display is sufficient. That's fine, but it doesn't make it high res.
There are people who think an analog serial console with 24 lines and 80 columns is sufficient resolution for text. That's not what's being discussed: simply the resolution of the display in the computer. It's low by modern laptop standards.
Exact same boat here - got my Framework a couple months ago when my Thinkpad X230 finally started showing its age, installed NixOS on it. The only disappointments so far have been battery life and heat management. I get maybe 5-6 hours from full charge, and the laptop gets super hot/noisy when sitting on anything other than a hard flat surface where the fans get maximum airflow (even using it when it's on my lap gets uncomfortable quick, and putting it on top of a blanket is out of the question).
I'm curious what the build quality is like. I've heard some complaints about QA and reliability issues with the hardware, but I don't know anyone in person who owns one of these devices. What has your experience been like?
I haven't had any hardware issues tbh. The only thing I would say is that the fans kick in pretty loud when doing anything remotely intensive. Even battery life has been fine, compared to my old Macbook Air. I've had to put in some work configuring drivers, since they're so new that they haven't landed in the distros yet. But NixOS makes that easy, so that's about it.
Note to the website developers: currency != language. I'm an American in Germany. My handle of the language isn't (yet) great, thus I still work with English primarily. However, I pay in EUR exclusively.
Just the same (not that it appears to be a problem with Framework, though it's easy to make the same mistake), country != language.
This! I live in Belgium, primarily English speaker (not native), pay in EUR and my understanding of local language is not great. Lots of websites are so difficult to use without Google translate.
Please treat Currency != Language != Country. Give options to change these.
Excellent news, can't wait to play with the new firmware. I will echo the Fedora 35 recommendation from the article. Ran a liveusb of it for a week or so on this laptop and it was buttery smooth. All components that in the past I had mixed experiences with (wayland, pipewire) just work.
We called out "We're continuing to invest in open source firmware development, with the goal of replacing other proprietary firmware we're currently stuck with in the future too." in the blog post. Coreboot is something we're very interested in and have done experimentation around. We went with an off-the-shelf proprietary BIOS/UEFI to derisk launching the Framework Laptop on time and satisfying the core goals on it (getting a high-performance, thin, light laptop into the world that is fully repairable and upgradeable), but an open BIOS/UEFI solution is absolutely in line with our philosophy.
Are you planning to ship systems that don't have Boot Guard enforcement enabled? I've done a couple of Coreboot ports (I'm typing from a laptop that's running my build) and the Framework is an extremely interesting target, but if Boot Guard is turned on then that becomes pretty difficult.
Ah, so a signed firmware bootblock that runs something user signed? I wrote the original version of the boot Shim that Linux distros use for bridging from the Microsoft root of trust to the distro one, so let me know if there's any way I can help out here.
Things I'm hoping to see in time for a Framework machine to become my next laptop:
- AMD processor options
- Keyboards with a trackpoint - decades of ThinkPaddery have conditioned me; I regularly use a Dell touchpad-equipped laptop & contemporary Mac laptop and still pine for a trackpoint. Very personal preference, I know, but hopefully the Framework Marketplace comes to provide this.
- Proper 14" HiDPI screen
- Long battery life under Linux
I'm impressed with what they've been able to do and really hope they become sustainably successful!
I can't stress this enough. The display on the Framework can't do integer scaling and so almost everyone who intends to use an external monitor with the Framework can't do that on Linux without extremely annoying issues such as significantly higher input latency, GUI apps behaving abnormally, and not being able to use an external monitor and the laptop screen simultaneously. I don't care if they release Coreboot for the Framework, it's useless with its screen.
> On Linux, Wayland supports separate monitors natively with different scalings?
It does, but you will experience higher input latency than you would if you do not scale your display or use integer scaling. Some GUI apps might also misbehave when scaled fractionally.
I'm not sure if the higher input latency will be noticeable to someone using pretty animations in GNOME/KDE but it is pretty jarring when you mostly work on a terminal.
There's also a subtle loss of quality of text and images when using fractional scaling.
You're describing the Thinkpad T14S. It's a real shame it has soldered RAM, I hope Framework's success will show the industry there's an actual need for this.
I guess you're right, hadn't realized the AMD Thinkpads were now available with better than 1080p screens. Totally agree on the soldered RAM crap. Also would be great to buy from a more consumer-friendly company like Framework, especially if they are going to do things like support coreboot.
It doesn't seem to have a proper 14 inch HiDPI display. 1080p on 14 inches usually needs anywhere from 1.2x to 1.4x scaling and 4K would need around 2.5x scaling.
Keep in mind this is likely unique to CLI users. The vast majority of users have little use for arrow keys - nudging the text cursor a few chars left/right and making tiny moves in graphics software are about the only two I can think of.
Not just CLI but also browsers when you don't want to get bitten by infinite scroll adjustments moving your scrollbar cursor placement and then pressing down before noticing and accidentally scrolling past 50% of the page you were just trying to read.
Rejoice, Lenovo is introducing a ThinkPad that finally lets them scrap this excellent setup for a mainstream rectangular keyboard: Z13 and Z16. Doubly sad because those look like a kick-ass AMD Ryzen implementation otherwise. Trippy sad because they also found a way to get rid of the physical TrackPoint buttons and still call it a ThinkPad.
The writing is on the wall, just wait for Lenovo to finally extinguish their ugly step-child of asymmetry and deprive us of the last good arrow key layout left in portable laptops.
I am on a Mac for over a decade and I don’t understand what’s the issue with the keys. Well, they are smaller, but it’s not a problem for me, not at all.
This is I don't understand. Why laptop manufacturers neglect probably the most important thing that is the keyboard? Almost every single laptop that comes out these days looks like the keyboard is an afterthought.
Why can't I have full size cursor keys? Pg Up, Pg Down, Home, End and few others?
I suspect majority of users never touch Pg Up/Pg Dn/Home/End and all those other keys over there. For arrow keys, the compacted layout is helpful when designing a space constrained keyboard, and it's totally usable.
It probably doesn't help, but it definitely isn't the reason. Most people still do their work on desktops with full-sized keyboards and they already don't use those keys there.
Mouse. If you're correcting data in a spreadsheet you're probably jumping around a lot and a mouse makes more sense and if you're entering new data most people I've worked with use tab and enter.
Because I came from a laptop that had home/end/pgup/pgdn and grew fully accustomed to those keys for keyboard navigation (which is my bread and butter these days).
The alternative was to get a 15" laptop, which is slightly too big for me, so I suffer in silence and occasionally bitch about it on forums.
It takes two hands to use Fn+Up/Down instead of PageUp/PageDown keys to scroll around. These keys are for some people the most common keys used for fast nevigation in code and documents.
Ctrl+C / Ctrl+V are used far less often, and you can type them with one hand.
> It takes two hands to use Fn+Up/Down instead of PageUp/PageDown keys to scroll around
Doesn't seem like a big deal, I'm trying to think of a situation where I need the other hand to be free while paging or moving to end of the line.
> These keys are for some people the most common keys used for fast nevigation in code and documents.
Seems like a personal preference. I have a working trackpad so I almost never use them. Also, home/end on a thinkpad are out of reach anyway. And what's the point of 'insert' ?
> Ctrl+C / Ctrl+V are used far less often,
I use these constantly, I don't remember touching home/end ever, pg up/dwn maybe by accident.
Wow, you're right! Didn't understand how you could not have a reverse T for the arrow keys and took a look at the pictures. The up/down keys are split in half?! Why'd you make the arrow keys have different sizes?!
It was the design on MacBook's for almost 5 years. Apple rolled that change back in late 2020 but it will take other OEM's a while to update their available SKUs to match the Apple of today.
So that's where all this comes from. Not surprising. I saw that Dell announced a touchbar product. Guess they'll have to kill that too. This sort of slavish aping of Apple needs to stop.
My ex-boyfriend called me "insane", but I genuinely prefer ye olde 6-key arrow cluster from the Thinkpads of yore. I quickly got used to browsing with pgup and pgdown, now any keyboard without those keys adjacent to the arrows just feels wrong to me.
In any case, the keyboard on the Framework is fully replaceable. If there's significant enough demand for an inverted-T cluster, you can bet there are people who will make the replacement for it (if OEM doesn't get to it first).
And I hate the ThinkPad 6-key cluster because of accidentally hitting the pgup and pgdown buttons. I decapped both buttons because of it. Same with the the fn button next to ctrl.
Oh yeah, that would be awesome. I’ve searched for a proper tkl layout in laptops. There’s the current layout in Frame.work which is think is probably the worst, then current Macbook, then finally HP Omen (tkl) (but its kind of a shitty laptop).
Ive also seen a laptop with the arrow keys slightly offset downward.
I've extracted the Chromium-EC encryption functions, they are convenient for signing / verifying firmware on other platforms. Chromium-ec is nice for example code like this:
On the other hand, if you are looking for some generic embedded system code all in C, here is our library (it's been cleaned up for ATSAM and STM32 targets, but we've used in on many other platforms):
I think it's most unique feature is the embedded schema-based database- so you can save things like calibration and configuration information in local flash memory (think protocol buffers, but for tiny systems). Recently I've been adding device drivers for all common devices I can find on break-out boards from the Arduino and Raspberry-PI communities.
I bought a Framework for personal use and love it so much. I have it running Windows 11, if only because it was easier to get longer battery life out of it without doing endless tweaks on a *nix OS.
Upsides:
- Hardware feels VERY premium and nice. It's not too heavy. You'd never guess it's the first laptop made by a new company.
- Keyboard is a pleasure to type on. I did nanowrimo last year on it and wrote ~60k words and never had a complaint.
- Company and its mission are awesome! Support team is very helpful and their communication has been great.
- Guides on the website for opening it up and replacing/fixing parts is amazing. If anything I hope I can keep this thing running for many many years.
- Choosing what ports you want via the expansion cards is really nice (USB-C charging on BOTH sides of the laptop?!?! amazing)
Downsides:
- Battery could be better. I get probably 3-6 hours on Win11 depending on what I'm doing.
- It can get HOT. I have the i7 processor; doing light dev work with a few Docker images running and VSCode with a medium-sized Node project open, it gets uncomfortably warm on my lap and the fan occasionally spins up. I played through Inscryption on it (awesome indie game, built in Unity) and the fan was EXTREMELY loud during the whole thing because it was making heavy work of the integrated graphics card. Just browsing the web or watching videos it is cool and silent, though.
- Because of issues with Tiger Lake, S3 sleep isn't supported so if it sleeps when you close the lid, the battery will continue to drain for a bit and eventually it'll go into hibernation. I set mine to just go into hibernation when the lid is closed which saves the battery more if I'm on-the-go. It takes around 11 seconds to wake from hibernation which isn't bad. Not an issue with the Framework specifically, I think this affects all Tiger Lake processors.
- Expansion cards are a bit of a novelty for me. I have 2x USB-C, 1x USB-A, 1X HDMI and don't see myself changing that any time soon and can't really think of any expansion cards I'd need in the future.
Looking forward the question at the top of my mind is "will this actually be upgradeable?"... if they ever release AMD or ARM-based processors, it'd be great to try them out, but you'd have to swap out the whole mainboard which is a bummer (but understandable given the hardware constraints). Different screen sizes would require a whole new laptop but at least you could bring along the internals. A touch screen would be really nice.
What's funny is that when I originally wrote that comment, I had "light" in quotation marks to mean that it's not _really_ light programming, but it's a lot less than what I have running for work.
Call me when you get better display panels. Hopefully Linus Sebastian's obsession with OLED will help push the display is a higher-end direction -- or at least have the option.
A thread from two weeks ago gave me pause; I will wait a couple iterations until considering a Framework laptop to see if at least the software issues can be resolved and observe how the team navigates the waters.
We took that feedback and wrote step-by-step guides on setting up a few popular Linux distributions, calling out what items work out of the box and what needs manual workarounds. For now, we recommend Fedora 35 as the best distro to use where everything works out of the box, and Ubuntu 21.10 as a second option that works though requires some workarounds.
What is the reason behind closed firmware? I understand that wifi devices may operate out of the certification depending on what the firmware does, but other devices... why do they have closed firmwares?
It may be that writing the code is the easy part but caring enough to actually start on it is the hard part. There's been no visible progress on this... ever.
Probably to hide/protect corporate secrets, or if the firmware integrates proprietary code from a 3rd party it would be difficult to open source for legal reasons.
To give an example, a huge issue over all of the OpenSolaris lifetime at Sun was reportedly due to third party licensed content Solaris had by itself, which is why OpenSolaris source contained only the very base system and was stripped of certain stuff (including X11 server Xsun, iirc)
Also in the case of Wifi/Bluetooth it seems like FCC regulations would make having open firmware difficult due to the fact that it would make it easier to allow end users to broadcast on arbitrary frequencies. This way they have deniability.
...That said, not a subject matter expert so take this with a grain of rock salt.
That feels like a false excuse a manufacturer might make, as it seems plausible enough, but doesn't really hold up to deeper scrutiny. Even wifi chips that have closed firmware usually have a region setting, and there's nothing stopping you from selecting a region that includes frequencies that aren't allowed in your actual region.
Sure, that's not quite the same as allowing completely arbitrary frequencies, but that feels like a distinction that wouldn't matter much when it comes to government regulations.
FCC doesn't prevent you from opening the firmware (now, trade secrets inside is another thing) - they just do not allow unlicensed devices i.e. you can't just build your own radio firmware and have it operate legally.
I don't think that makes sense at all. One major part of Part 15 from the FCC covers this. A device would fall under the category as an intentional radiator in part 15.1. And in part 15.23, considered a home-built device.
§ 15.23 Home-built devices.
(a) Equipment authorization is not required for devices that are not marketed, are not constructed from a kit, and are built in quantities of five or less for personal use.
(b) It is recognized that the individual builder of home-built equipment may not possess the means to perform the measurements for determining compliance with the regulations. In this case, the builder is expected to employ good engineering practices to meet the specified technical standards to the greatest extent practicable. The provisions of § 15.5 apply to this equipment.
This entire part from the FCC basically states you don't need a license to operate in the frequencies for wifi, bluetooth, etc. You're not breaking a law by recompiling the firmware for your wifi module to fix a bug. You'd be breaking the law if you did so with the intention of operating within licensed spectrum/power levels, for example.
The problem starts with the fact that the device doesn't have any way of showing that it was modified, and some of the frequencies involved are license-restricted (especially in 5GHz wifi bands - 2.4GHz is dumping ground free-for-all because of aircraft ovens anyway).
So, let's say you modify something with your own firmware, break rules about ISM spectrum - or worse, mess with SDR hard enough you break some licensed spectrum, and upon investigation FCC certification marks are found and the number. Since certification points to vendor, vendor now has to explain why their device went outside of those limits, and might or might not be able to prove that you ran it with unlicensed firmware.
So an obviously home build device will go under §15.23 easily, but inconspicuously modified commercially sold device won't - without possibly long court case, that is.
The FCC is very familiar with inconspicuously modified commercial devices - hams have been doing it since before "firmware" was even a word. The fact that it's replacing some code on a chip instead of a shunt resistor on a PCB really doesn't make a difference.
And if this really was really the main issue, it seems pretty easy to just sign the firmware - I'm pretty sure many vendors do it already.
Exactly - the FCC certification is that a specific device, despite having purposeful (or accidental) transmitters, operates within the law and rules set by it for use of radio spectrum. The maker of the device is then able to sell it to people who are then indemnified should the device break those rules (and aren't required to have expensive in time and effort radio license themselves).
With significant portion of the regulated behaviour being done in software, things can become a bit problematic if the end user can load any code they want. This is also why "BIOS whitelists" exist, as the certification applies to the whole radio equipment, which means the certification must cover the antenna - and those are built into laptops, meaning you can't certify the cards separately as their exact characteristics depend on the connected antennas.
Hardware defects are often worked around by firmware. It can be things like adjusting current drive or lowering the clocks conditionally to mitigate EMI. It can even check the serial numbers of the hardware to determine what to do for the pieces with inferior quality in order to pass QA and increase yields. If customers get to find out what kind of defects or which batches are inferior, that would imply costly consequences for business.
The real issue is certification and so on. The people running small cellular networks tend to have necessary permissions or operate within certain limits.
For public, general usage baseband, it will need to be at least tamper evident and you won't be able to just run your own.
I'd personally be fine with auditable baseband (i.e. you can always verify what code it runs, then let's say compare to public code tree and build hashes), with possibly a signature scheme that would link builder and certifications. Then if you went to the trouble of proving you have the necessary qualifications and won't break shit, you could sign with your own certificate and take responsibility.
I can't find the post right now, but there are folks reverse engineering the proprietary binaries running under Linux on the PinePhone modem (which is Qectel) and replacing them with open source versions. The Hexagon DSP is out of reach for that work though.
Are there any OEM laptops with RYF certification? The only ones I can see on ryf.fsf.org are 10 year old refurbished and re-branded (and very expensive) Thinkpads.
Side note: the language selection is stupid on the website. No, I'm not from Germany, and I don't speak German even if it's the closest country to me that you sell laptops in. Also, it's a bad practice to associate flags with languages. Or to give options that don't work after you select them.
They don't have a language selector, they have a region selector which sets the appropriate currency, VAT (presumably), and also language, yes. It's an entirely appropriate usage of flags.
It is not. I can be present in Germany and want my laptop delivered there. That does not mean I speak a word of German.
Language and physical location are disjoint. Even worse when I know the original content is in English, my preferred language, but someone decides I only deserve the partial translation.
Sure, and now I can not select shipping destination "Germany" anymore, as somehow it's an impossibility to match the existing language contents and shipping destinations...
This is such a frustrating trend. Google has already been mentioned as an offender - it is an annoying procedure to keep resetting the language for every fresh session - but at least their texts are mostly properly translated... Going to the Amazon site of my country (a smaller one where I am a native speaker of the language and most but not all products listing are machine-translated), I have to constantly change my language preferences to get the non-machine-translated version of various texts, as "prefer original language" doesn't seem to be a thing. Some things are just so hilariously wrong that doing this is the only way to make sense of everything.
Oh, and they (framework) also force the currency tied to the nation. My credit card is not necessarily in the native currency of either my shipping destination or my preferred language. Just let us set all three independently, please :/
aliexpress and iherb are two sites that do this right.
The issue there is that "being in country X" and "wanting to see the site in language Y" is going to be against some users' preferences. Examples:
- Canadians from Quebec may prefer the site in french (but use CAD as a currency and see Canada's taxes where relevant).
- Expats in Thailand very much prefer to use the site in English.
- I'm in Spain and my browser is setup to reflect my preferences (Catalan first, English if that's not available, Spanish last). I prefer English to Spanish because international companies either have a strong presence here (and will probably have Catalan as an option) or their Spanish translation will be worse than the original language in English which I understand better than low effort translations.
Frame.work is going for a locale selector but they don't even support all the official locales of the regions they already operate in (e.g.: they don't support fr_CA). Even if they did, there are always users that would prefer a "non-official" localization (en_TH, en_ES following my examples above).
In the end they would be much better off letting users pick the language, region and currency separately. It's less effort from their part and a better solution for the users.
In that case, flags for languages are bad and flags for regions are fine but can still rub against some users' feelings. Example: pro-independence Scots having to pick the UK flag. Is it really that terrible to have auto-complete and/or select fields for these 3 things?
What it should offer is two separate options: One for the store location, one for the language. This becomes especially important in Europe because you have so many people who live in a country where they don't speak the associated language natively.
This is such a basic UX rule that I'm a bit surprised to see them fumble on it...
Disagree, examples in the blog are poo. English comes from... England... why shouldn't be represented with an English flag? Spainish comes from... Spain... why shouldn't be represented with a Spanish flag? There are Spanish speakers in literally every country in the world, what is the solution?
The Hindi argument is not good, Hindi is the _official_ language of India. I work with people from various parts of India and they can all communicate with each other because thry all speak Hindu/English (usually a mixture in conversation), even if their main language is Malayalam.
There are issues with flags = languages (e.g. "Welsh": "Gaelic" for instance, or Switzerland (which one?), but for English/Spanish examples, they are not good ones to use
And to end this, just because there is a website for your issues doesn't mean it's correct. There is nothing preventing someone from making a website called flagsarelanguages.com and having poo counter points to the original websites poo arguments. Appeal to authority nonsense.
Yea, it’s always a struggle. UI wise it clearly looks better to use flags and people know what it’s for when they see it. There’s always people who complain about it though.
I’m of the opinion to not worry about it and just use the flags. It’s enough effort to properly internationalize a site and keep it maintained. That it’s available at all is a huge effort. Debating flags vs a drop down with languages is nitpicking IMO.
Plus, when the language codes include a country it’s a natural UI decision.
EDIT: Supporting multiple languages increases the complexity of the entire development pipeline. Translation teams are brought in, translation tools are brought in to support in-code language as well as translations in the database itself. Every new text snippet needs to be translated to each language to deploy it.
Your search features get more complicated, date formats, number formats, currency, collations. Every language you add increases this complexity. Because of that, you will represent a language with a primary country and not every language spoken in that country. On the chance that a company has opted to go all in to support region specific dialects of languages where 100+ choices will be listed, then no…of course flags wouldn’t work. But in most cases you’re lucky to get 2 languages at all with potential for a couple more for all but the largest of companies. Virtually every other site is just going to use one and churn out some Google translations or ask you to do that yourself.
Yeah, just use flags and confuse the fuck out of multilingual countries. Belgium has Dutch, German and French as official languages. So what would a Belgian flag mean? What flag should I choose?
If I choose the flag from the Netherlands to get Dutch, I'll probably be confused by a whole bunch of terminology since the dutch of different countries differs vastly more than the English from different countries.
"People who complain about flags are nitpickers" is a perfect way to say "I grew up in a gigantic monoculture where you can drive 5 hours in any direction without encountering a different language, if you ignore the natives"
If Dutch, German and French were supported languages on the site I imagine that flags of the Netherlands, Germany and France would be representing the language selection.
As a US citizen I often visit sites that use a British flag to represent English. I don’t bristle because there’s not a US flag or question whether the US flag should also be referencing Spanish.
It’s just a detail to draw your eye that otherwise holds no importance once that is accomplished.
As an example: "weerhouden" in Flemish means "to be included", while in Netherlands' Dutch it means "to be excluded".
Or take "poepen" which means "to have sex" or "to take a shit" depending on which country you are in.
I frequently have to ask my friends from the Netherlands to clarify something because, even though I hear which word they're using, I have no idea what they mean because the words mean something different or are just never used that way in Flemish.
Can't say I recall a moment of really being confused by the terminology used in NL vs BE. But I do agree, a Belgian flag means nothing in terms of language. The flag can be used but only as a prefix to the actual language in text (to visually filter quickly).
With flags you also have the issue of how to represent politically disputed regions e.g. Taiwan even when the languages used locally are pretty clear-cut.
In the specific case of Taiwan, if you want to maintain good business relations with normal civilians on both sides of the straits you need to represent Taiwan as a state to Mainland China IPs and represent it as a country to Taiwanese IPs and most of the rest of the world.
I'm not advocating any particular political view, this is just the technological fuss you have to go through to maximize the number of happy customers. So sometimes it's much easier to just forget the flags, state the language and currency directly as text, and skirt around these issues.
As for language selection, I really don't think it's necessary to beautify it UI-wise. Pick based on the user's Accept-Language header and 99.99% of the time you'll present it exactly as the user wanted without them having to select anything. You can then implement a text-only language selector somewhere in a less conspicuous place, such as the footer, than polluting your navigation header.
As someone who grew up multilingually in Europe but now lives in the US and works for a US company (which seems to get localization right), I have the impression you don't really know the confusion and difficulties that arise from what you are saying.
To explain, let's turn it around. Assuming you also live in the US, imagine a EU company would make the following assumptions that are common (to the point of feeling entirely "natural") in lots of European countries, but wrong in the US, and think about how that could impede you in varying business situations:
* There is only one time zone in a given country.
* VAT and other sales taxes are the same over the whole country (and therefore just included in the display price).
* Every debit card, credit card etc. has a PIN, and a common API to the bank for card/bank-specific verification.
* Every bank account is identified by IBAN, even across countries. Wiring money is always free.
* Decimal separator is universally "," and grouping is ".". (Bonus: Let's instead be in an Asian country where it's common to group digits by 4 instead of 3.)
* Dates are always either in order "DD MM YYYY" or ISO YYYY-MM-DD. In the case the year is omitted, "DD MM" is assumed and no clarification is ever made. Your appointment is 4.5., thanks for doing business with us! Sincerely yours, noreply@example.com.
* Car-related business: You have to be at least 18 to drive a car (and have spent the equivalent of thousands of dollars and many hours of mandatory theoretical and practical training). It is illegal to drive a car more than 2 years without a thorough inspection that forces you to fix even minor things (Autobahn speeds are dangerous), so old cars are uncommon. There are special enthusiast registrations for so called "oldtimers", but that still requires extra maintenance.
* Gastronomy-related: But you're allowed to drink beer at 16 (was at least the case when I was that age), anything else 18.
* You have to use/publish your real name, address, and other information mandatorily in a lot more situations (e.g. when hosting a website of any kind--imagine a business enforcing that for all customers).
You may find that if you want to do business internationally at all, you have to start caring about those things.
I’m very familiar with it after working for a company which does a tremendous amount of business in Europe. Our European office, based in the Netherlands, just wanted to use some Google translate proxy service rather than properly internationalize anything.
If anything, I cared a lot more about getting it right than anyone else but it is a lot of work.
My point is that with all of the work a company has to put in to even make a proper language choice available, complaining about flags is literally just finding a reason to be bothered.
It’s like somebody built you a house just how you wanted it, but you latched onto the color of the front door to complain.
So yes, 100%…if flags make your site look better just use flags and ignore the noise. If you want to do it a different way, do that. You’re investing the time to get it right, you don’t have time to deal with petty complaints about the selection box.
We should push to adopt a standard iconography for "language/region menu/options". A good candidate may be a world icon (which some companies already use, e.g.: dell.com).
Once there, given that the language list itself is in its own localization (or that iso codes are used to represent them, or both) you should be able to pick yours just fine.
I am very tired of seeing one flag represent my language where that is the newer nation using that language as national language. But that language is spoken for a thousand years or more in other regions.
> I am very tired of seeing one flag represent my language where that is the newer nation using that language as national language. But that language is spoken for a thousand years or more in other regions.
I'm not disagreeing with your general point, but I'm curious: What language is over a thousand years old and still recognizably the same language?
I was thinking of English as a counter case when I wrote the comment:) Skimming the history section of https://en.wikipedia.org/wiki/English_language#History , I don't think I would really describe anything before "Early Modern English" (1500-1700) as meaningfully the same language; if you took a modern English-speaker and gave them a sample of Middle English, they wouldn't be able to read it, and if you stuck them in a room with a speaker of ME neither would be able to understand what the other person was saying.
Although in fairness, it does now come down to a semantic argument about what counts as the same language, and I acknowledge that a reasonable person could disagree with my narrower view.
"Englischmen þeyz hy hadde fram þe bygynnyng þre manner speche, Souþeron, Northeron, and Myddel speche in þe myddel of þe lond, ... Noþeles by comyxstion and mellyng, furst wiþ Danes, and afterward wiþ Normans, in menye þe contray longage ys asperyed, and som vseþ strange wlaffyng, chyteryng, harryng, and garryng grisbytting."
This is...difficult to read, but once you realize that þ == th, it's semi comprehensible. Looking up some Middle English on Youtube, it's also semi comprehensible. I doubt I could have a deep philosophical conversation with an ME speaker, I think we could make eachother understood.
> Although in fairness, it does now come down to a semantic argument about what counts as the same language, and I acknowledge that a reasonable person could disagree with my narrower view.
I really enjoy Jamaican patois for this. Arriving there, try as hard as I could...I couldn't understand a single word of it, even though it was ostensibly "English-enough" that I should have been able to. The first 5 days spending time in groups speaking the local language felt like anywhere else that I couldn't understand -- Saudi Arabia, Portugal, Guatemala, etc.
Right around the one week mark, something just 'clicked' and I could understand pretty much all of it as if it were regular English except for the true slang. Really felt like "dialect" on the cusp of become "language". Very cool spot for a language.
This answer wins. I suspect this is the most widely-used language that has not changed in 2000 years. When I was at school in the 80s we were seemingly learning the same Latin as spoken by the Romans.
Language codes are a solution. And it works great.
And language codes should be given in ASCII. Someone not native has a slight chance of not knowing what fr is, or bn is, or nl is, but, a native, or someone who speaks the language will always know.
This doesn't help the user choose a language. The language my browser sends to the website is not necessarily the language I want to view the webpage in.
Well, the problem is I'll sometimes go to a site like Wikipedia and then switch to the Japanese version because the Nihongo 日本語 version of the article has more information than the English one.
Use the user locale. Expressed as a geographic region (which you can use to compute the best possible region to serve the user from) and a language (used to render the page).
If you do it correctly you can support weird combinations, such as a German speaker living in California (expects prices in USD). Or the country of Switzerland (one territory, 4 official languages).
My first reaction was to agree, but, all languages also use Latin characters for all sorts of things, especially brand names. A lot of native languages just aren't adding native words fast enough to keep up with technology and so the English words end up getting subsumed. Sometimes they'll be converted into local glyphs (e.g. Katakana in Japanese), but sometimes not. I doubt there are many humans alive who can't recognize Latin characters, even if they have absolutely no understanding of what the meaning is or how to pronounce them.
I'm sure if Mandarin were the default language, English speakers would quickly learn to recognize the character for "English" and be able to find/click it on a webpage without too much hassle.
Language comprehension is unnecessary when all you need to do is recognize a character.
This is not related directly to the announcement, but touches on a thing that infuriates me to no end - for some reason the site assumed that because I live in the EU and relatively close to German border, I speak German and presented the site in that language. Despite my high-school teacher's heroic efforts, I can at best understand a few basic phrases. I didn't even know what to click in the cookie pop-up to kindly ask them to not track me.
Language auto detection^W assumption is such an anti-feature.
Google is particularly bad about this, they basically make it impossible to get normal English-language results if you're in another country, unless you mess with the URL parameters (gl=us).
Like if you're in Germany, you can set Google's language to English, but you're gonna get mainly German results for any search. A bizarre choice.
It's myopic by google. I speak more than one language, "belong" to more than one country, but google makes it very hard to find relevant results that are not narrowed-down to the country I'm in right now.
It's not because you're close to the German border. Apparently anyone anywhere else in the EU except France gets redirected to the German website. (France is the only other EU country where Framework decided to open sales.)
I believe Google (used to?) ignores it if it's set to only English because that's too often the default. If that's the case, the work around is to set a second preferred language.
Surprise! Not everyone on HN is in webdev. I don't know much about how this all works but surveyed my user-agent-switcher utility and found no such language options.
It's actually controlled by the Languages setting in your browser. Both Chrome and Firefox let you set the list of languages sent in the header, along with the order.
Doesn't exactly do a lot of good. Sites tend to ignore it, at least from what I've seen.
The first thing I do on any new installation is peruse the settings and tweak to my liking. It seems I missed that option, being privileged to have English as a mother tongue.
Quote from their website: “ Base and Performance configurations ship with Windows 10 Home pre-installed and Professional ships with Windows 10 Pro pre-installed. You can also load your own operating system later, like a Linux distribution.”
[0]: https://github.com/FrameworkComputer/EmbeddedController/blob...