February 21, 2024

What’s a Rich Text element?

The rich text element allows you to create and format headings, paragraphs, blockquotes, images, and video all in one place instead of having to add and format them individually. Just double-click and easily create content.

Static and dynamic content editing

A rich text element can be used with static or dynamic content. For static content, just drop it into any page and begin editing. For dynamic content, add a rich text field to any collection and then connect a rich text element to that field in the settings panel. Voila!

How to customize formatting for each rich text

Headings, paragraphs, blockquotes, figures, images, and figure captions can all be styled after a class is added to the rich text element using the "When inside of" nested selector system.

Chronicles

Luca Stefani's journey from CyanogenMod to LineageOS to OSOM

Android is a many-layered thing, and no one person at OSOM is in charge of the whole stack from end to end — it’s simply too big and too complex a system. But folk like Senior Software Engineer Luca Stefani come close to understanding all of it (or, at least, working on all of it). From his time at CyanogenMod to his volunteer work at LineageOS, maintaining both devices and applications, Luca is a low-level Android expert and the subject of today’s Employee Spotlight Interview. 

Thanks for taking the time to chat with me; I know it’s a lot later for you in Italy, Luca. You’re a senior software engineer?

Yes, that’s my title.

But that’s a very broad title and can mean a ton of different things, right? That just means you work with software, and you know what you’re doing. So, what sort of stuff do you work on?

So I work on the BSP — that’s the baseline that we are using to get the actual hardware working on Saga, and that contains all the code that hardware vendors and partners gave us. That means we have to assemble this whole layer, which translates everything that our hardware actually does to the workloads that Linux and Android do. And we build up every layer until stuff starts working. So it's quite a lot of work, but that's what we are used to. 

I was gonna say, you're experienced in this sort of thing. I know you volunteer over at Lineage, and you’ve worked for Calyx, right?

Yes, I did a lot of open-source work for Lineage and, before that, CyanogenMod [Editor’s note: Lineage is the spiritual successor to CyanogenMod]. I’ve done this since 2014, so since I was like 14, I worked with CyanogenMod to “bring up” the Motorola Moto G 2014 — the second generation Moto G. I enjoyed working on something different than I was used to. Before that, I was just randomly trying programming with little projects here and there. But then I had the opportunity to learn from other people (mostly on IRC), where I got to learn a lot about Android generally. 

There were crazy people there. Some were really all-around knowledgeable: you could just go ask them anything, and they would come back to you with a sane explanation that you could learn from. Others were very specifically knowledgeable about Android. From there, I learned everything about Android, little by little. 

At the same time, I was working on random bugs and improvements — mostly doing some random fixes for applications. Within weeks of getting merge permission on my first repositories, the whole CyanogenMod project was canceled. And, after the initial turnaround of old and new people, I somehow (I don't even understand why) became a head developer and director at Lineage. But it just happened, and we had to build a whole new infrastructure, try to get other people to help us, and try to bring everyone back together. That was a whole mess initially. But that also helped me learn how to better manage people. One moment, I’m taking my first step on the CyanogenMod ladder, and then I’m on the top. It was a shock initially, but it was a great learning experience. 

That’s a great story — you went from volunteering and getting your first code commits to being a director in just a couple of years. That’s pretty rad.

I think it was Stefanie Jane [Editor’s note: The founder of CyanogenMod] who gave me merge permissions — I think the group was called CM-Apps or something like that. And I don't even know if I used it — maybe a few changes here and there. But after that, I had too many other responsibilities. There were a lot of people we lost and who moved on from the project. Of course, it wasn’t just me left, but it still wasn’t easy.

Yeah, a lot of folk still remember the downfall of Cyanogen and the impact that it had on the ROM community.

At that point, I didn’t know pretty much anything about Cyanogen as a company. I wasn't that interested in it one way or another; I don’t know why. But Cyanogen collapsing and dying like it did was something that I didn’t expect.

I am glad that Lineage OS was able to pick up where they left off and continue the work. Are you still involved over at Lineage?

I’m still one of the head developers. I don’t work that much on the platform itself. I give guidance on random projects or changes that are happening so that I can help people improve what they are proposing or contributing. Aside from that, I mostly work on applications like the new Aperture camera and the browser Jelly — just some projects that don’t take a lot of time but where I can actually improve things that people will really use. 

Aperture is a good app. It’s got a good future. Android needs a good open-source camera app.

Yeah, that was a lot of work, but thanks to Google’s new APIs, we managed to do something pretty good. All the open-source camera apps are pretty ugly, and they are also using completely different APIs. I don’t think there's any application that uses our setup outside maybe Google. We are also working on a new Gallery application after Google killed the open-source one. But it's fun work; I get to learn new things outside my usual messing with the system side. That means I don't get to play with the devices anymore at Lineage, but I do that at OSOM, so it’s a good equilibrium.

Speaking of learning new things, I know you are in college. You are a fan of the perpetual education model – you’re always learning. So, what classes are you taking these days?

I am taking Computer Security, Software Engineering, some Calculus. There’s — I don’t actually know the name in English — it’s Automata Theory, really interesting stuff. I enjoy studying and learning. 

It’s pretty complicated to manage both work and classes, especially during the periods when there are exams that meet during the week. I have a lot of overlapping deadlines between exams and OSOM. But I always try to help. And if I manage to help someone, it makes my day easier and better.

This is a bit of a shift, but it’s another thing you and I have talked about in the past. You and I, unlike most of the people at OSOM, are both big fans of small phones. What is your take on why small phones don't succeed?

So, honestly, I think it's just psychology in a way. Initially, people enjoyed having, let’s say, “normal-sized” compact phones. And then there was a flood — phones that were getting bigger and bigger, and the bigger phones started selling better and better, starting a feedback circle that never ended, so all the companies started making bigger phones. “Big” was new, and “small” became old, and people want new things. 

I hope the status quo has reached a state of equilibrium now and that we aren’t going to see phones get any bigger. I am using a Pixel 8 right now, and I don't know the size of the display, but it’s already too big for me. I also don’t really like the weight of big phones, but part of that comes from the bigger battery, and that’s also a strong driver for big phones — longer battery life. We needed longer-lasting phones for more powerful chips, brighter screens, better cameras, and that meant bigger phones. Power needs haven’t kept up with the battery. 

But nowadays, I don't think we are seeing bigger batteries, so a lot more work has been going into efficiency. Every year, there are new nodes and chips that are increasingly more efficient rather than power-hungry. I think we’re at a good place there, though I’d still rather have a smaller phone, though I can’t get anything smaller in Italy. It could be worse — there are a lot of devices that are huge. 

One last question, Luca, and I ask this one of everybody: What’s your favorite feature on Saga?

Personally: Seed Vault, because as soon as I joined the company, I started working on Seed Vault. There was nothing made in… let’s say, the “deeper part of stock” when I joined, and I was tasked with writing the side that was going to run in the TrustZone — that is one of the most secure layers in a phone, and I didn’t know anything about how to write any kind of application for the TrustZone. I just had to jump in, reading code and examples, because I don’t think there is any sane documentation. I wasn’t that helpful initially, but we were able to build a few prototypes to get the hang of it, and then we settled on an implementation that worked. 

But it was a new, shiny thing that I had never worked with before — you don’t get to even touch this side of the platform, and almost no one does it. For me, this was like breaking a barrier, changing code no one else can. 

It was a great learning experience, and it helped with the Android work, too. I also worked on the interfaces between the different parts — the TrustZone, Android, the userspace HAL, and querying information from the different layers. 

We started from literally nothing, doing work that no one is usually allowed to do, that no one has experience doing. I don't know how much time it took, but, give or take a month or so, we had something that was usable to develop on and finally connect all the pieces when there wasn’t even glue to start. It was a great moment the first time that it worked and that we were able to show our screen — that we were able to communicate with the TrustZone and show a user interface that runs completely aside from Android. And as soon as that was working, the rest was “only” incremental work — you couldn’t even run tests without that. 

Thanks for chatting with me. I know it’s still the start of my work day here in Massachusetts, but it’s the end of your day over in Italy — hope I didn’t keep you from dinner!