Open-Sourcing our Firmware
frame.workI 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.
[0]: https://github.com/FrameworkComputer/EmbeddedController/blob...
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. All these years it's been the keyboard, not me. Kinda mildly infuriating.
Yeah, it really is, and people didn't believe me when I said with certainty that it was the keyboard's fault.
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...
There's nothing wrong with software debouncing. Almost all fancy DIY exotic keyboards use software debouncing effectively.
In fact it's more customizable for quicker response than hardware RC debouncing.
There is, however, something wrong with shitty debouncing software.
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 had clients who were going to bargain for less than a penny
For ten million units, a penny is $100,000. You could give an engineer an entire quarter to come up with a software debounce for less than that.
That shit adds up. BOM costs are everything for consumer goods.
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.
And if you make $10 on each of those that's .1%. Or even if it's only $1 that's 1%. So be it!
I don't want to encourage shitty design for pennies at any level.
Stop making shitty shit.
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.
I’m not too familiar with hardware, but would you be able to differentiate between the unpressed state with such a scheme?
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].
[1] https://forum.allaboutcircuits.com/threads/reduce-voltage-sp...
Of course. Hardware debouncing came long before software. It's basic electronics. Many switches have it built in.
>"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 must be it, then. The key pairs / triplets that I type in most quickly are left to right.
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).
> Yes. Essentially, when you see an edge, update the state immediately but have a guard interval before allowing further state changes.
Isn’t that ultimately what capacitor + Schmitt buffer debouncers does? The only difference is that this would be in software?
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.
Just to check, you do mean 'debounce' right?
Since you said 'denounce' a couple times I'm not sure if this is some jargon I've not been aware of or just auto-correct.
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.
> A global variable to hold the array length.
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.
Debounce is an interesting topic[0], I tend to use hardware debounce whenever possible on my own projects.
[0]: https://hackaday.com/2010/11/09/debounce-code-one-post-to-ru...
There's some good info here if anyone is interested: http://www.ganssle.com/debouncing.htm
Don't accept a keypress if the same key was previously pressed less than x milliseconds ago. What else is there to know about debouncing?
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.
What is x? Is it related to human capability?
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.
It bounces both ways but as long as you don't accept another keypress action (up or down) immediately after the first, you're fine.
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.
Since your ISR does nothing but record a timestamp (right...?) you are not going to have a "very bad time."
Although in many cases polling is fine as well.
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.
I remember such an issue; unloading and reloading the kernel module fixed it.
This is on Windows, I haven't tried installing Linux on the machine. It's also intermittent enough that it's virtually impossible to debug.
The copyright header at the top says "chromium".
I want to produce a keyboard switch which needs no debounce.
This appears to be the goal of optical switches.
IIRC those already exist in the form of optical switches.
Yes, but they are overengineering a simple problem. A mechanical bounce free switch is a no problem at all.
>A mechanical bounce free switch is a no problem at all.
Two questions:
1) do mechanical switches with zero bounce really exist?
2) are they cost effective enough to be used in consumer keyboards?
> 1) do mechanical switches with zero bounce really exist?
You just use a switch with 2 outputs: for on, and off position. Triggering 2 at the same time is impossible.
> 2) are they cost effective enough to be used in consumer keyboards?
Surely less than a percentage of a cent in extra cost.
>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.
Could buy one and donate it to someone else, or a library.
I can supply a mailing address.
lol. you could also donate the old laptop
Sorry for changing the topic but does anybody know the reason Intel has removed the seep states?
It drives me absolutely nuts when I open my bag and feel the heat coming out of it, and my laptop is left with 20% charge.
I believe the push came from Microsoft.
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
[0] https://www.intel.com/content/www/us/en/support/articles/000... [1] https://www.tenforums.com/tutorials/63346-sleep-states-avail...
The correct course of action is to return the "defective" product.
Unfortunately it's my work laptop.
Maybe they made a hardware bug in suspend circuit, and decided to simply fuse it out?
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.
What? I have a Tiger Lake ThinkPad , an X1 Extreme Gen 4, and https://i.imgur.com/RUI9rnd.png it definitely supports S3 sleep, it's a simple BIOS setting. You can go to https://download.lenovo.com/bsco/index.html and see for yourself, it's their BIOS simular.
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 think Apple hit here the sweet spot with the 13" and 16" sizes.
My wife (a teacher) loves his 13" one, it's ideal for her to make video calls, write emails etc.
For me as a developer at least 15" is a must, even though I love Framework, I'll only buy if they release a 15" or 16" version.
From reports I've read the Framework laptop has poor build quality. This comment from here actually: https://news.ycombinator.com/item?id=29807585
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")
Sometimes I think that I must be the only one who doesn't throw his laptop into a backpack full of hammers while jogging everywhere.
> From reports I've read the Framework laptop has poor build quality.
Sources please. That's news to me.
Yeah, the cited source doesn't rea mentioned build quality. It's mostly software bugs, muffled speakers and fan noise.
None of that is build quality.
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.
From the cited source:
> 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.
If a "hinge doesn't feel strong" and the keys are "mushy and creaky" that 100% indicates poor build quality.
Perhaps our individual thresholds for quality differ, but either one of those two statements are dealbreakers for me.
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.
That is a very good point - I never thought of it that way. Old Nokia phones are indeed built incredibly well.
Perhaps and "build quality" and "premium feeling" need to be separated. I suspect I'm not the only one conflating the ideas.
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.
Are you talking about personal testimonials, or published data?
If it's published data, mind sharing a link?
It was a recent thread here on HN. Let me see if I can find it...
This comment: https://news.ycombinator.com/item?id=29807585
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.
Thank you for sharing!
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.
Avoid.
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
> I've never heard of a heatsink needing replacement
It definitely happens. Usually as a direct result of someone just not taking care of their machine at all, but it still happens.
Source: work at independent repair shop.
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)
Buy someone else in your circles a Framework Laptop who needs a laptop! Or gift them one of your ThinkPads and get yourself a framework!
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.
Then go for the Framework one.
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
invest in the company financially
It doesn't seem like that's possible right now: https://community.frame.work/t/investing-in-framework/3980/1...
Perhaps find an open source project they depend on and donate to it.
Sell your Thinkpads and buy one of their laptops?
I wouldn’t buy a Framework right now because they come bundled with Windows and not Linux.
I want paid Linux support upfront.
I don’t want to pay for Windows support, remove it and then run unsupported Linux on my laptop.
A manufacturer saying “this is a Windows laptop but we won’t stop you running Linux on it” isn’t really good enough for what I want.
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.
They officially support Linux: https://frame.work/blog/linux-on-the-framework-laptop
That’s still not quite what I’m looking for.
It’s not the “not paying for Windows” angle for me. I don’t care much about that.
I can just treat it like an unused part of the package, like a foreign power adapter. It might even be useful someday.
What I really want is to positively pay for vendor Linux support, pre-installed.
I want the vendor to benefit from Linux and know why they’re supporting it for me.
I guess they could change that in the future though so it’s still worth keeping an eye on.
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):
graphics = { "media.ffmpeg.vaapi.enabled" = true; "media.rdd-ffmpeg.enabled" = true; "media.navigator.medidataencoder_vpx_enabled" = true; };
Really? I’m pretty sure chromium has decent VAAPI support.
Oh! Looks like they finally started adding official support last summer (June 2021). It still appears disabled by default though.
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.
M1 + Nix is ideal, IMO.
You have Nix running on M1?
Nix is the package manager, NixOS is the OS.
I’m very happy with purism’s librem 14 but the display is not as nice as frameworks.
* crisp display
* nice battery life
* Linux friendliness
Not elusive at all, you can find an M1 MacBook Pro at any Apple, Best Buy, or Costco store.
M1 are not Linux-friendly at all.
I can run a Linux vm emulating x64 or aarch64 right now on M1…
Not to mention zsh is the login shell out of the box…
It’s more flexible that WSL2 in my opinion
See https://github.com/lima-vm/lima for a very friendly QEMU wrapper running on M1
Run it in a VM. Works fine.
This is like responding "well you can make the civic look like a sports car, that should cover you!" when someone says "I want to drive fast".
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.
You can't even run unsigned apps on your M1. There is linux support slowly coming thanks to the fine folks on Asahi, but it is very pre-beta.
I can run a Linux vm emulating x64 or aarch64 right now on M1…
It’s more flexible that WSL2 in my opinion
See https://github.com/lima-vm/lima for a very friendly QEMU wrapper
I can write a program and send it to my friend - and they can actually run it - without me paying $99/year to Apple.
Try that on your M1.
You can run unsigned software on an M1 Mac, clicking “run anyway” isn’t that hard lol
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.
https://eclecticlight.co/2020/08/22/apple-silicon-macs-will-...
What’s the big deal? They don’t require it to be notarized. You can self-sign.
Quite frankly no one should be running unsigned binaries regardless of OS or architecture.
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
https://01.org/blogs/qwang59/2018/how-achieve-s0ix-states-li...
> disabling secure boot solved the issue
Lovely...
Isn't secure boot just a Microsoft thing to try to stymie competition by preventing booting OSes other than Windows?
Debian seems to indicate otherwise: https://wiki.debian.org/SecureBoot
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:
https://www.tenforums.com/tutorials/145891-how-check-if-mode...
> cat /sys/power/mem_sleep
If deep isn't selected do so and try again. You could have problems with your nvme coming out of suspend though.
I got similar problems on my pinebook pro, but sadly this is all too common.
I can imagine that the power draw in S3 could come from having (replacable) DDR Memory instead of (mostly soldered) LP-DDR Memory.
edit: typo.
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.
Dell, Lenovo, HP etc. all have the same problem.
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?
So it was believed that S3 is deprecated on TGL, but it probably works. I remember reading about it on some coreboot channels. Starlabs may have enabled it. Grep for S3 on https://support.starlabs.systems/kb/bios-and-firmware/bios-a...
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.
I’ve found this to be variable in my personal experience based on OS, hardware, and use of TLP.
Having come from elementaryOS I can say that Fedora 35 is awesome. So much better!
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.
Yes indeed, I should've expanded to requiring user namespaces and other kernel magic I can't expect from any random box i wanna work on.
I'm looking forward to checking Darwin nix stuff out.
> Yes indeed, I should've expanded to requiring user namespaces and other kernel magic I can't expect from any random box i wanna work on.
That's fair, do have to make sure to avoid to modules that do user systemd services.
Longer term, though, I am hoping https://github.com/InitWare/InitWare will help with the userland part. And I hope to personally help with things like
https://lists.freebsd.org/archives/freebsd-arch/2022-January...
https://lore.kernel.org/lkml/f8457e20-c3cc-6e56-96a4-3090d7d...
to get us more sane cross-platform system calls.
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.
The Framework has a 200 DPI screen. It's lower than say a MacBook, but I wouldn't consider that to be "low-res", especially in the laptop space.
This 'low-res' comment makes no sense, I'll never go back to 1080p, but 2256x1504 is plenty IMO for text (I live in a CLI all day pretty much).
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.
You're always using it at native resolution, you're just adjusting your renderer settings.
Nobody's saying your fonts should be tiny. I'm saying they should be rendered in high resolution.
I have the same computer and display. I run it at 4k native but nothing is small, no magnifying glass required.
> You're always using it at native resolution, you're just adjusting your renderer settings.
No, when I wrote 'native resolution' I meant 1:1 pixel mapping, which is pretty obvious by context. Nobody has a laptop with a CRT on it these days.
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.
Same here. I own two Framework machines and haven't had any issues so far.
I also own an M1 air without any issues, but there was a class action lawsuit claiming that people were getting inordinate numbers of cracked screens (https://www.tomshardware.com/news/apple-m1-macbook-cracked-s...).
I haven't noticed inordinate fan noise running windows 10.
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.
Does the Framework support coreboot? IIRC it does not, and I was sort of surprised to not see that in this announcement.
Their github also doesn't have any mention of coreboot: https://github.com/FrameworkComputer
And it isn't here either: https://doc.coreboot.org/mainboard/index.html
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.
We haven't finalized our plans around this, but one path we have explored is a signed shim loader.
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.
Yep! It's great to hear that, and I would definitely be interested in chatting. I've DMed you on twitter.
Gotcha, thanks!
IIRC they said that it was a point of interest but not something they’d started work on yet.
I love these guys. I sincerely hope that they are successful and stick around. Keep up the good work!
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!
> - Proper 14" HiDPI screen
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.
"Proper" should also include at least 100% DCI-P3 coverage instead of sRGB
On Linux, Wayland supports separate monitors natively with different scalings?
> 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.
> You're describing the Thinkpad T14S.
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.
Really hoping for the laptop's next iteration to have a reverse T for the arrow keys. Otherwise very solid laptop, would be my first non-Mac choice.
Because I'm down the rabbit hole of highly customized keyboards, at one point I did a frequency analysis of the keys I use the most.
Guess what was the most frequently used key? Cursor down followed by cursor up.
For example, cursor down was pressed ~2.5x more times than space, or ~4 times more than letter E, which is was the most frequently used letter.
Guess what are the smallest keys on a Mac-type keyboard (the layout also used by the Framework laptop). Cursor up and down. Madness.
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.
Even then. If you're strictly CLI you should likely prefer Ctrl+b, Ctrl+n, Ctrl+p, Ctrl+n, etc etc
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.
I love the ThinkPad with the Arrow Key and PgUp/PgDown all next to each other.
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.
Do you scroll with the arrows keys?
You don't?
Either that, or PgUp/PgDown
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.
Wouldn't that be because these keys are difficult to use in typical laptop keyboard, as in self fulfilling prophecy?
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.
So how they e.g. move around cells in the spreadsheet or documents?
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.
fn+arrow combo is imho equally as usable
I hate fn+arrow as an alternative to having real home/end/pgup/pgdown keys. It's probably the thing I hate most about my blade laptop.
Why? Do you feel similar about not having a "real" dedicated key to ctrl+c / ctrl+v ?
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.
Different strokes for different folks. I'm personally just glad that we were able to collectively hate the Touch Bar enough for Apple to '86 it.
Pedantry incoming, but “86” doesn’t need the apostrophe before it.
The etymology from what I remember comes from the fact that if asking for 86 of anything at once is impossible to provide.
In theory you can just buy the keyboard and swap in when/if it becomes available https://frame.work/marketplace/keyboards
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 hate half size arrow keys, why don't make it normal size.
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:
https://github.com/jhallen/rsa-verify
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):
https://github.com/nklabs/libnklabs
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.
> a few Docker images running and VSCode with a medium-sized Node project open,
I'm admittedly a hobbyist/novice programmer, but this isn't necessarily what I'd call light.
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.
Thanks for this detailed write up of your experience with it. I love what they're doing but don't need a new laptop at the moment.
On the expansion card front, I think I tweeted to them about doing some kind of card bay to put a USB dongle in.
Just a suggestion for site - separate language from currency. For example, for me it’s much faster to read in English, but I’m paying in euro…
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.
It's getting harder to resist buying one of these.
As if I didn't have enough reason to be happy with my decision to buy a Framework, here they are giving me yet more reasons.
Ooh, they use chromium ec, nice. Where is its serial console accessed? :)
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.
* https://guides.frame.work/Guide/Fedora+35+Installation+on+th...
* https://guides.frame.work/Guide/Ubuntu+21.10+Installation+on...
That thread does not mirror any of my experiences at all, and I've been using the laptop since it was launched.
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?
For BIOS/UEFI a lot of hardware vendors outsource their firmware to AMI and AMI keeps everything proprietary so they can keep charging money.
(Coreboot is not an option for real computers because it doesn't have menus and various other things.)
I would assume that building an UI with menus and whatnot is the easy part of it? (not an expert, genuinly curious)
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.
Coreboot doesn't deal with that, the payload does. And tianocore does come with a menu for changing boot order, boot devices etc.
The stock edk2 menu has, like, two items.
System76 have built a more serious setup UI: https://github.com/system76/firmware-setup
Microsoft’s https://github.com/microsoft/mu also probably contains UI from the Surface line or something??
Aren't there coreboot payloads for doing menus/etc?
Open source WiFi firmware exists btw:
https://github.com/qca/open-ath9k-htc-firmware https://github.com/chunkeey/carl9170fw http://netweb.ing.unibs.it/~openfwwf/
None for recent WiFi standards though.
Other open firmware:
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.
So open firmware from the manufacturer is fine, but if you were to modify it and re-flash it yourself you would be breaking the law?
I guess that makes sense, thanks for the clarification!
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.
https://www.ecfr.gov/current/title-47/chapter-I/subchapter-A...
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.
Vendors also want to comply with slightly different rules all over the world, and ultimately the easiest way becomes to sign and verify.
The code being secret is more of "trade secrets" than anything legal.
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.
I've heard rumours that making firmware proprietary helps hide patent violations.
Man I remember reading this CEO's hobby blog a decade ago. Glad to see him doing cool stuff https://eclecti.cc/
Good news for learning as well. I had never seen an open source EC firmware before, and I'm curious about what's inside that.
I wish they'd ship US ANSI keyboard in Europe, I would totally pick one up.
The International English keyboard option is ANSI. It is US English with a Euro symbol and Alt Gr.
Oh that's actually great, ot's just I've been burned before by German retailers with "English International" on ISO keyboards.
I might go do some shopping then. Say hello to Linus btw, his video has done marvels to deservedly promote your product.
I'm hoping for a 16" or 15" version and then i'm in
now lets get an open source baseband
Osmocom is a thing, but no idea how good it is. I've seen articles about people running cellular networks with it.
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.
Also, Qectel modems run Linux on one of the chips on the modem:
https://projects.osmocom.org/projects/quectel-modems/
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.
Is there any chance to know when frame.work sells laptops with 12th gen Intel processors?
This is one company I really like. Hope they offer an ARM based laptop soon.
Great! So how’s that RYF certification coming?
It's impossible for recent x86 systems to be RYF certified.
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.
I wish frame.work offered CUDA compatible GPUs and/or AMD CPUs.
On the bright side, there have been reports of people getting their Framework to work with an external GPU.
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.
Otherwise, very nice news!
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.
You can switch the region then, it takes 3 seconds and persists across visits.
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.
> Also, it's a bad practice to associate flags with languages
There's even a website for this issue
http://www.flagsarenotlanguages.com/blog/why-flags-do-not-re...
Don't think the site is going against these. It says "Choose Location and Language" and offers for example:
- :us-flag: United States [USD]
- :ca-flag: Canada (English) [CAD]
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.
> Hindu is the _official_ language of India
Hindi, not Hindu. Also, Hindi is not the only official language of India.
Thanks! It was a typo, I've corrected it
Do you have an alternative iconography for language selection? It undoubtedly makes the UX better, especially with many languages
I agree that flag != language (British Union flag for English being a prime example), but what is the next best alternative?
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.
After considering all that, yes…just use flags.
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.
Except Belgian "Dutch" is called Flemish. And is different enough from the other Dutch to warrant its own i18n.
Belgium is an exceptional case but I'm sure you can find more.
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.
> Plus, when the language codes include a country it’s a natural UI decision.
Un-natural UI decision then if a language can exists in more than one country, and one country can have many languages?
Why have flags at all? Just use the native language name and a translation.
If I end up on the page in a language I don't know, then how would I find the language selector?
I agree that flags aren't great, but I don't know of any other solution to this problem.
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.
More problematically, in a character set you don't know!
Iconography is required.
“Please select your ISO language code” /s
Anything but the flag.
Why not use full language names?
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?
US English comes to mind, not that middle English is particularly readable.
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.
> What language is over a thousand years old and still recognizably the same language?
Latin.
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.
Arabic
Icelandic and old norse perhaps
> Why not use full language names?
If I end up on the page in a language I don't know, then how would I find the language selector?
I agree that flags aren't great, but I don't know of any other solution to this problem.
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.
I've seen English represented as a flag made of halves of UK and US flags
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.
Then you have to change your browser settings.
https://www.w3.org/International/questions/qa-lang-prioritie...
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.
> but what is the next best alternative?
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).
We've had two-letter designations for languages for a long time now.
Two letters in the Latin alphabet, I assume - does that assist those who primarily read Cyrillic, Greek, Vietnamese, Arabic, Thai, Tamil, … ?
Localisation basically never has a simple “we should just…” solution.
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.
What’s with the sticky scrolling on this site? (Safari at least)
Add blocker was blocking cookie pop up, after disabling and acknowledging the pop up the problem disappeared even with blocker re-enabled.
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.
/rant
edit: I see I am not alone, who got hit by this.
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.
I'm German, I live in Germany, and I too hate this behaviour. I rarely want out of date badly translated variations of the original US topics.
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'm surprised things like "preferred language" aren't built into HTTP yet, seems to have a natural home in the user-agent corner of that world.
I believe HTTP has had this feature since 1999 as the Accept-Language header defined in the HTTP/1.1 RFC[0].
As for why it does not get used, MDN suggests[1] it's because changing it may lead to fingerprinting but there are likely other historical reasons.
[0]: https://datatracker.ietf.org/doc/html/rfc2616#section-14.4
[1]: https://developer.mozilla.org/en-US/docs/Web/HTTP/Headers/Ac...
Actually there is a header for this purpose [Accept-Language on MDN](https://developer.mozilla.org/en-US/docs/Web/HTTP/Headers/Ac...).
But some sites just don't care about it and try detect this base on other information.
edit: formatting
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.
Accept-Language: fr-CH, fr;q=0.9, en;q=0.8, de;q=0.7, *;q=0.5
https://developer.mozilla.org/en-US/docs/Web/HTTP/Headers/Ac...
There is the Accept-Language header: https://developer.mozilla.org/en-US/docs/Web/HTTP/Headers/Ac...
I guess this is sarcasm but if not:
https://developer.mozilla.org/en-US/docs/Web/HTTP/Headers/Ac...
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.
No need for any add-ons or extensions, you can set it the browser directly, although most websites these days ignore it anyway.
The option should be in your OS or browser settings.
I wish I could get one without Windows
You can even get one without a drive
You can
All configs list Win10. what am I missing? Of course I can buy with Win paying for it and then re-install.
This is the version you are looking for: https://frame.work/laptop-diy-edition
You want the DIY edition.
Pretty sure from other discussions I have seen that it's only the DIY version that has an option for no OS, then you install Linux yourself
You have to pay for Windows.
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.”
The DIY Edition has a no OS option.