This post describes my experience with the new Framework 12 laptop, but since you need an operating system to do most of the things this computer does, it's also somewhat a review of ElementaryOS 8.0.1.
ElementaryOS isn't one of the supported distros for the Framework 12, but it is the distro that I think will be the easiest for someone coming from MacOS to learn. This isn't me, but my intention is to leverage my experience with Linux to learn and improve a distro like ElementaryOS so that I can help anyone who is trying to make the transition.
But first, the hardware.
I purchased the DIY kit with the i5-1334U motherboard, no memory and no storage, so the first step of assembly was tracking-down some additional parts. This was a little nerve-wracking because I don't do a lot of work with regular PC hardware anymore and I was really afraid I was going to buy some RAM or an SSD that wouldn't work with this machine. Here's what I settled on, and as it turns out they both work perfectly with the Framework 12:
* CORSAIR Vengeance 48GB DDR5 SO-DIMM 5200 PC5 41600
* Western Digital WD BLACK SN770M NVMe 1TB
The next step was unboxing the laptop and the additional parts above. The packaging is great, it is simple and not too numerous and seems like it's all recyclable (I didn't confirm this since I'm holding on to it for a bit). I'm sure someone has already created an ASMR video of the unboxing so I won't dwell any longer on that.

Next I started downloading ElementaryOS 8.0.1 so downloading and writing it to a flash drive could run while I started assembly.
Assembly consists of opening the display, removing a protective piece of plastic, installing the memory, installing the storage, installing the keyboard and fastening a few screws on the back. Finally, you insert four I/O modules of your choice (it's like sliding a cartridge into an old game system) and you're done. That's it! It was so easy that it almost took less time that it did to download ElementaryOS and prepare a flash drive to install it.

Swappable I/O modules I selected to start-out with
One of my favorite surprises during the assembly was seeing that Framework used a little extra space that was underneath the keyboard to provide a couple of extra screws threaded into the machine's frame. If you've ever dropped a screw while working on something you can appreciate the thoughtfulness of having a couple of spares not only included but mounted in a safe, convenient space right within reach.

Spare screws tucked-away neatly under the Framework 12's keyboard
The next step is to install the OS. This is where I ran into my first snag.
After plugging the flash drive into one of the USB-A I/O modules I plugged a USB-C power supply I had laying around into one of the USB-C modules and pressed the power button. Nothing. No screen, no other light, nada. I assumed this was related to the power supply so I tried another port and this time the machine started. It booted straight into the ElementaryOS setup screen (so nice when the default boot order works this way!) and I installed ElementaryOS with zero surprises.

ElementaryOS installer finishing-up
After rebooting to finish the install I noticed that the battery wasn't charging. I didn't have another USB-C cable suitable for power so I just crossed my fingers and hoped I could finish the setup with the ~50% charge it came with from the factory. As it turns out, this was more than enough to finish setting-up ElementaryOS as well as install and play with a few applications. Later that day a couple of USB-C to USB-C cables I ordered arrived and I was able to charge the Framework using one of these and the Apple power brick from Jamie's laptop.
I'm not sure why the battery wouldn't charge at all from the USB-C supply I had on-hand. It is a very low wattage supply, so maybe that's the reason, but I would have expected that to just cause it to charge slowly. In any event, all of this could have been avoided if I would have just bought the supply Framework provides or bought something intended for charging a laptop, so this one is on me.
For the rest of the evening I installed all of the software I use on a regular basis (Signal, Syncthing, OpenSCAD, Kdenlive, KiCad, Go etc.) and everything worked as well or better than it does on my System76 laptops.

Left: First-generation System76 Pangolin, right Framework 12
Once the battery was fully charged I unplugged the power supply, closed the lid and left the machine to sleep until the next day to see how well it "hibernates".
The next morning I flipped the lid open and the machine woke-up immediately. I forgot to check the exact percentage, but the battery icon displayed only a tiny slice of capacity diminished. I topped-up the charge and then took the machine to work with me.to see if I could make it through an entire day on a single charge.
I can't use this machine at my job (they don't allow Linux) but I kept it on by my side for personal things and used it to listen to music nonstop throughout the day. Used in this fashion, the battery went for about 7 hours before the 10% charge remaining notification popped-up. I wasn't using the machine heavily (although it looks like it was using a software decoded to play the FLAC files I was listening to) but the screen was on all day and I left a lot of applications running (including Signal which chews a few resources just idling). I'll have to do some more extensive testing with the machine under heavier loads to get a more realistic idea of what the real "working time" of the battery is, but so far it easily outlasts any laptop running Linux I've used before.
The final test of the day was slicing a 3D model that has been particularly challenging on my other machines. The primary reason it's challenging is because (I believe) there is a memory leak in Orca Slicer that causes memory consumption to increase during the GCODE generation stage, and when I'm slicing detailed models for the Giga, there's a lot of GCODE being generated. Aside from this, the process of slicing a large, complex model is probably the most CPU intensive thing I do with my laptops so it's a good test of CPU performance as well.

Orca Slicer slicing the big beaver.
I'm happy to say the little Framework outpaces even my beefier System76 machine at this task, not only completing it in less time but completing it successfully with slicing settings that cause Orca to crash due to out-of-memory on the other machines. This could be due to having a little more RAM (48GB vs 32GB) but regardless it's impressive, and one of the major concerns I had about making a machine like the Framework 12 my everyday workstation.
Having spent about 24 hours with the machine and used it for a handful of regular tasks, I'm happy to say that it is exceeding my expectations. I was concerned about the feel of the keyboard, the strength and texture of the plastic construction and other physical attributes that there was no way of knowing until I had the machine in my hands and all of these things are better than I expected. The keyboard of course falls-short when compared to my full-size mechanicals, but it's as good any other laptop I've had and I like it a lot better than the MacBook Pro I use for work. As a replacement for my System76 laptops I don't see anything holding me back from switching to the Framework full-time, and that says a lot because System76 makes an excellent Linux laptop (I've used them for about 5 years). Where the Framework 12 with ElementaryOS fell-down is in the extra things I was looking for out of the Framework, specifically the fold-around display and stylus.
As-is, folding the display into "tent mode" and "tablet mode" does not work how you would expect it to. ElementaryOS doesn't appear to respond to any signal that the display is changing "modes", so it remains in it's normal laptop-mode orientation no matter how the screen is positioned. When in tablet mode, the keyboard and trackpad are disabled so there is some sort of signal being sent and received by the hardware, but this doesn't seem to be reaching or interpreted by ElementaryOS.
If there is a signal for the position and orientation of the screen that the Linux kernel can read, then I think it's at least possible for ElementaryOS to listen for this and respond by changing the screen orientation. Maybe it already has support for this that I need to enable (I've never used ElementaryOS with anything other than a landscape-oriented, static display). I'll be looking into this, but for now what I can say is that a regular install with default configuration doesn't respond to changes in screen position or orientation.
As for the stylus, this is my first time ever working with an USI device so I don't really know how it's supposed to work, but my understanding is that it's something that is mostly handled by the hardware and firmware of the machine (you use the BIOS to set the protocol used by the stylus). I bought a cheap USI 2.0 stylus since the official Framework stylus is not yet available and I was unable to get it to work. I was able to confirm that Linux could see the interface for the device provided by the laptop and that the window manager was using that interface for input, but I could not make the laptop and the stylus communicate. This may simply be due to an incompatibility between the Framework 12 and this particular stylus (although I would have hoped two devices using the same standard would be compatible), so maybe it will "just work" once the Framework stylus is available.
Neither of these things stop the Framework 12 and ElementaryOS from being a great laptop, and at least as good as my System76 machines, but I would by lying if I said I wasn't a little disappointed that I can't use these additional features yet. That said, the beauty of an open source operating system is that if you don't like something you can do something about it (or at least find someone who can) and I'm confident that both of these problems will be resolved in the future.
I've said that "I wonder if the Framework 12 could be the last laptop I buy". Most people I've said this to are incredulous, but consider that the laptop I've had the longest so far is an IBM Thinkpad T500. The T500 still earns it's place on my desk because of it's physical durability and extensive range of I/O. The things that prevent me from using the T500 as my only laptop are related to repair and upgradability (the display is fading, I can't find a battery for it that will hold a charge, the Core Duo CPU isn't up to running some of my more demanding tasks, etc.). The primary feature of Framework computers is to address those exact limitations, and I believe that the modular I/O design (especially given that custom modules are possible) can provide a similar level of interfacing flexibility that I keep the T500 around for (with one exception*).

The venerable, perhaps indestructable, Thinkpad T500
So if Framework is able to continue the path of maintenance and upgradability with the Framework 12 that they have established with the Framework 13, I should be able to use it at least until that changes, and even if Framework shuts-down, the modularity and openness of the design might even allow for these machines to continue-on, supported by the community. Perhaps my needs will change in a way that makes the Framework 12 no longer suitable even if it can be maintained, but I don't really see that happening, especially if I can sort-out the tablet mode issues. I'm always going to type, I'm always going to draw, and I'm always going to write programs. Over my 40+ years of working with computers I've distilled what I need to do this things pretty clearly, and the Framework 12 is as close as anyone has come to fulfilling those needs without having to build something myself.
* I'll probably never find a way to cram an optical drive into the Framework 12