Framework Laptop: A software engineer’s perspective

The Framework laptop is a relatively new competitor that promises to be more repairable and upgradable than normal consumer laptops. After nearly a year of their first generation product with 11th gen Intel processors on the market, they delivered on a big promise to allow upgrading that laptop to 12th gen Intel. With increasingly consumer hostile behavior by companies who care little for either the environment or their customers, this is a breath of fresh air. This is my personal experience with purchasing this laptop as a Software Engineer. I do not typically review laptops professionally and this is not a review unit from Framework. Hopefully this review helps anyone who is making a similar purchasing decision.

Checking the boxes

When I set out to find a new laptop for my software development needs, I had three primary needs in mind:

  1. It had to either run Linux out of the box or support it well.
  2. It had to have a good keyboard, trackpad, and screen.
  3. It had to have decent battery life and decent performance (more on that in a bit)

Some of you may be asking, why is Linux a hard requirement? Why not just get a Macbook and use macOS?

The answer to the second question is that I already own a Macbook Air M1 and a Macbook Pro 16 M1 Max. I primarily use my M1 Air for scripting, office work, writing, and as my everyday carry laptop. My M1 Max stays docked to my desk 90+% of the time and is used for heavy iOS/iPadOS development work.

The answer to the first question is really fairly simple: I do not enjoy using Windows. I find Linux to be a superior developer OS and while I do develop some cross platform desktop apps that have a Windows port, I always use it in a VM to build those ports (or use Github Actions on certain projects).

The primary use of this laptop was going to be replacing my Linux workstation desktop that is used to build Linux and Windows ports of my desktop applications and for working on server side software that really needs to be written in a Linux environment (to match where it will be running). The idea is to have an all laptop workflow where I can carry all of my work (for every OS) anywhere no matter the OS by taking both my M1 Air and whatever laptop I chose.

On point #3, I do not require a lot of CPU power to do anything on my laptop. I create web applications that typically require a REST API (my go-to is Java Spring Boot), a database, and front end web framework. I also create desktop applications in cross platform frameworks like Flutter, Electron, or Qt. I write scripts that do all sorts of automation and data manipulation. I also work on 2D games in Unity. None of this requires pushing the CPU to its limits (at least not for any long period of time) but does require quite a bit of RAM. I do some ML related research work but all of that is done on a remote server with NVIDIA GPUs so nothing on device. I am also almost always near an outlet so I can charge if I need to but I do enjoy the peace of mind of not having to worry about it.

The purchase

I had been looking at the Framework laptop for a while on their website and it caught my eye because at face value, it ticked all of the boxes. It says right on the homepage that it is “A thin, light, high-performance 13.5” notebook that’s optimized for Linux”. After doing some digging, I discovered that modularity is really the selling point for this laptop as you can either bring your own SSD/RAM/OS or buy it with Windows and already assembled. I, of course, chose to build it myself (with the i5–1240p processor) and bring my own OS.

You can also configure the ports that it comes with, which is a first (to my knowledge) for a laptop. I chose 4 USB-C ports because in some of my research, I read that the other modules can actually draw a small amount of power on idle and I wanted to avoid that. Also, I connect to my display with a thunderbolt cable and all the peripherals and passthrough charging are wired through the display so no need to buy any other ports for my needs.

I ordered the laptop on a Monday and on Friday it was at my doorstep waiting for me. I opened the laptop up and immediately installed 64GB DDR4 laptop RAM and a 2TB Samsung 980 Pro boot drive before closing it up and installing Ubuntu 22.10 with a thumb drive.

Picture of Framework laptop opened up

First impressions were great — the build quality was not quite Macbook level but very close, especially for a laptop that can literally be taken apart with only 5 screws. It is also surprisingly thin and light. There was very little flex in the keyboard or the lid and it was made of all aluminum. It is super easy to open and took a total of 3 minutes to have it opened, RAM/SSD installed, and reassembled. Can’t do that on any of my Macbooks. Installing Ubuntu was straightforward as ever and in no time, I had several applications installed.

Fractional scaling and battery life woes

The first thing I noticed is that everything was way too big. I looked in the display settings and realized that it had been set to 200% display scaling. Tuning it down to 100% made everything way too small. I enabled fractional scaling and went to 150%. Perfect… Or so I thought. Enabling 150% display scaling caused all of the text in Chrome and Firefox to become fuzzy (almost nauseating to look at). A quick Google search showed that any app not optimized for Wayland runs under XWayland, which is a type of wrapper for apps to run in X.org under Wayland. Long story short is that fractional scaling makes text fuzzy and there is little you can do about it unless the app can support Wayland. I figured out that you can enable wayland support for both browsers by setting some flags and that was fixed. So far none of my other apps had exhibited this behavior so I thought I was in the clear.

With that out of the way, for my first real test, I was going to build one of my Flutter apps using IntelliJ and see what the compile time looked like. Once again, the fuzzy text bit me and after doing some reading, IntelliJ doesn’t support Wayland because Java doesn’t. Yay. I logged out and tried to login under an X.org session and did the same fractional scaling there. I then realized the fans on my laptop were kicking on quite a bit and the overall experience seemed laggy.

It was at this point that I decided to try another distribution. I typically use Ubuntu based distributions because I find that most apps at least have a .deb package if nothing else and I also use Ubuntu server for my home server. I installed Linux Mint and installed some apps and configured fractional scaling for 150%. Everything looked fantastic and it even allowed me to use my external monitor at 100% while using my laptop display at 150%. No fuzzy text and no performance degradation (at least none I could see).

I installed IntelliJ again and went to build that application I mentioned earlier. That is when I noticed the screen tearing… On the laptop screen, screen tearing would happen very often when scrolling through text (something you naturally do all the time). It did not happen on my monitor nor did it happen when I disabled fractional scaling. Fractional scaling bites again! I also set a kernel parameter (i915.enable_psr=0) that made it slightly better but it was still noticeable. I decided to just go with it and maybe it wouldn’t bother me after a while.

It was at this point that I noticed the battery was almost dead. It had been almost 2.5 hours since I started my adventure with the laptop fully charged, which was concerning. I figured perhaps installing apps and setting up an OS twice consumed way more power than normal and decided to charge it up and come back later.

Upon coming back to it later that day with a full battery, I started fresh (while trying to ignore the screen tearing). I started working on a Flutter desktop app that I have been working on and quickly realized the battery was very low in no time. Probably 3 hours… Ouch.

I discovered a thread on the forums for Framework to help improve battery life and it was helpful. I was able to get idle wattage down from around 11w to 4w and was able to keep the battery from draining as much during suspend to the point where it would only drop around 2% every 4 hours. This equated to about 5–6 hours usage before needing to charge. Coming from an M1 Air that drains 0–1% completely overnight and can last me over 15 hours on a single charge, that was pretty disappointing.

Side photo of the Framework laptop

The rest of the machine

Over the coming days, I used it as my primary machine but found myself always reaching for my Macbook Air. I forced myself to use the machine so that I would get used to it and maybe then the transition between both machines wouldn’t be as jarring. Briefly I will list a few observations over those few days that I noticed about the machine:

  • Fan noise isn’t that bad most of the time but it can get really loud under a full load. Not whiny or annoying though — just the sound of air being moved.
  • Besides the bad scaling issues in Linux, the display is pretty sharp but extremely reflective as you can see from the image above. I mainly work in a dark room but out on my patio, it is not nearly as usable.
  • The touchpad is good. I was worried about that from reading the forum posts but it was fine. It isn’t haptic, which is disappointing but using touch to click and making sure my hands were clean made it very usable.
  • The keyboard is great. No complaints.
  • The hinge on the screen out of the box is pretty weak. Picking the laptop up to walk to the other room causes it to fall to the 180 degree position which is a bit odd. It isn’t terrible just sitting down but I prefer my hinges to be stiffer. They do sell a 4kg hinge in their store that apparently fixes this but doesn’t allow the laptop to be opened with one hand, which is a good tradeoff in my opinion.
  • It gets warm on the underside when running light to moderately intensive tasks. Not hot but warm enough to at least notice.
  • The speakers sound pretty bad. Not quite as bad as i’ve read about them on Reddit or on the forums but still pretty bad. Just use headphones.

Framework laptop with lid closed

A verdict

I am sad to say that after just 4 days, the laptop is headed back to Framework. I really wanted to like it. I went into it with high, but realistic expectations of what the machine could do for me. I did a lot of research beforehand to see if it was something that could suit my needs. The primary reasons I am returning it are (as you probably guessed):

  1. The display scaling issues with Linux.
  2. Bad battery life
  3. Fan noise and heat
  4. Bad speakers (much lower than the others on the list).

At the end of the day, I simply bought the wrong laptop for me. That is not to say that it won’t be the perfect laptop for you or someone else. If you choose to use Windows and are okay with keeping a spare battery charger with you, this laptop could be a much better experience. For myself, I will continue to keep an eye on Framework as a company and do hope they come out with more products in the future that improve upon the things mentioned in this article.

Tags:

To comment, please go to this article on Medium