Changelog Interviews – Episode #560

Tauri’s next big move

with Daniel Thompson

All Episodes

This week we’re joined by Daniel Thompson, Co-founder and Core Member of Tauri. It’s been a year since we last had Daniel on the show. He catches us up on all things Tauri, their continued efforts towards Tauri 1.5 (which just released), the launch of CrabNebula and how they’re the people pushing the Tauri ecosystem forward and building on top of it, the state of Electron vs Tauri, and UI with Tauri. He even surprises us with his idea of creating a web browser.

Featuring

Sponsors

Sentry – Get $100 towards your error monitoring with Sentry! Use the code changelog.

.Tech Domains – They’re giving selected startups guest spots on the biggest podcasts, conferences, and billboards in the tech game. Apply at startups.tech/changelog

Neo4j – NODES 2023 is coming in October!

Fly.ioThe home of Changelog.com — Deploy your apps and databases close to your users. In minutes you can run your Ruby, Go, Node, Deno, Python, or Elixir app (and databases!) all over the world. No ops required. Learn more at fly.io/changelog and check out the speedrun in their docs.

Notes & Links

📝 Edit Notes

Chapters

1 00:00 This week on The Changelog
2 01:10 Sponsor: Sentry
3 02:21 Start the show!
4 04:39 What is Tauri?
5 09:09 Tauri + Rust
6 13:21 CrabNebula and next steps
7 24:20 The org model of Tauri
8 27:34 Sponsor: .Tech Domains
9 29:08 Big picture of CrabNebula
10 32:47 App distribution for Tauri
11 35:50 You want to build a browser?
12 36:36 The burden of maintenence?
13 42:45 What does a web broswer need?
14 43:23 Servo-window options for Tauri
15 46:08 Sponsor: Neo4j
16 47:09 Why build a browser?
17 53:02 Tauri vs Electron
18 1:00:33 Tauri and UI
19 1:07:15 What's left?
20 1:09:07 Wrapping up
21 1:09:38 Up next

Transcript

📝 Edit Transcript

Changelog

Play the audio to listen along while you enjoy the transcript. 🎧

Alright, we’re here with Daniel Thompson from Tauri, back after about a year and a half we had you on the podcast… Welcome back, Daniel.

Thanks. It’s really, really great to see you guys again.

One of the main compliments we got was how amazing your voice is.

I was kind of jealous.

Yeah. People were jelly of your voice.

Yeah, well…

“Yeah, well…” [laughter]

“What are you gonna do…?”

You know, I’ve gotten older, so it’s more raspy now. I sound like my grandpa all of a sudden. Fast-forward, a year goes by and I’m 10 years older.

Ha-ha! Has it been one of those years, or what?

It’s been a nonstop year, yeah. I mean, we met I think last summer, after the 1.0 was released, talked about the plans for the future, and… I mean, I did review the show, and I think we were pretty spot on. This “Coming Soon” is going to be the release of the 2.0, which has mobile embedded into it, Android and iOS. I found out that Tauri, iOS and Android makes an 8.5 megabyte binary. So competitive with React Native. iOS is a little bigger, but I think that early adopters also have a lot to learn about how to get things really small and tiny. It’s one of the things that we see on Twitter a lot, people are like “Yeah, my first Tauri app. It’s 14 megabytes.” And I’m like “Did you minify? Did you put in those special cargo flags for the release?” They’re like “Oh, no.” And then they come back, and now it’s only eight megabytes. So I think we’ve held true to that.

Excellent to hear. Well, for those who didn’t listen the first time around, that episode is called build tiny multi-platform apps with Tauri and Webtech. I remember we had a hard time naming that episode…

Yeah, we did.

…because Tauri is a little bit – it’s not hard to explain, but it’s hard to like put into three words, which, we like to be in the three to five-word range. So Daniel, for those who heard that, but haven’t heard much else of Tauri, give the quick explainer, so we’re all on the same page.

Well, I mean, first and foremost, Tauri is a community of developers building stuff for developers. And the stuff we like to build for developers are tools to help make apps. We started out with desktop, and now we’re working toward mobile apps, and you can bring any frontend framework you want. In a lot of ways, it’s similar to Electron and Capacitor, but we’ve put a lot of special focus on the security of the framework, as well as the ultimate bundle size. We want things to be small and performant, and not consume a lot of resources. So that’s how we started it, and that’s how things have been going.

So you have a lot of sponsors, which is awesome. We talked to you right after 1.0, and usually, 1.0 is a time where people decide, “Okay, I can finally take this thing seriously”, and it’s usually a boon for adoption. Have you had a lot of folks building stuff with Tauri since the release?

[05:43] Yeah. I just recommend looking over at the awesome Tauri repo at our GitHub organization. It’s kind of like endless scrolling. Lots of dev tools, lots of games, actually; things are being built for communication… And the rate at which I measure adoption though has changed a little bit over the past year. There’s some reasons for that, but mostly, we’re seeing people come in with really innovative questions, things that go outside of our expectations when we built the original project. And in most cases, we’re finding that it’s not necessarily an edge case, but people have to start learning to maybe think differently about how they construct their apps, and move heavylifting to the Rust side, and use the user interface for user interface things, and not put so much logic. And I think for a lot of classically-recognized full-stack devs, it can be kind of complicated, because you don’t care where it runs. On the client, in the browser, on the cloud, at the edge… As long as it’s running somewhere, that’s fine. But we’re trying to provide these highly-tuned opportunities, and… You know, people are making musical instruments, they’re making drawing tools, they’re being creative. And I think the biggest news out of our ecosystem is recently Fig.io, which is a developer tool that gives you kind of a supercharged command line experience, was just acquired by AWS.

Yeah, I saw that.

And they use the windowing and the web viewing libraries of Tauri. So they’re part of the Tauri family. And I guess the uptake has been really heartwarming to see… And it’s also early days. I think a lot of projects are in stealth. If you look at that awesome Tauri repo, I don’t know, like 10% of them are closed source, which means people are making money selling their products; there’s ecosystem plays that are being made, where people are starting to offer licensed servers, or licensed services, or analytics. People are creating integrations with Supabase, and Airtable, and Firebase. You’re starting to see these projects come in that have a set of requirements, and people are solving the problems, and I think that’s the exciting part that we’re at now.

Last year when I was here, we were really in the issue bubble. And the issue bubble in open source is a place where you only hear complaints, you only hear problems, you only see people struggling with what you’ve built… And over the past year we’ve started to hear from companies that are using Tauri internally; we’ve started recognizing “Oh, yeah, right. Engineers solve problems. And if you’re behind a corporate firewall, you’re gonna solve your problem one way or the other.”

Yeah, I mean, that’s really awesome to hear. Just looking at the sponsors listed on the homepage, there’s lots of big names there as well, so I assume they have some sort of interest in the success of the project. Do you find that the Rust – we focus a lot on the Rust aspect of Tauri. Last time around I was just kind of digging into the tool and figuring out how to use it… And one thing that you said that stuck with me at that time is you think that this is a nice – you didn’t say “gateway drug”, but I will say that; it’s a nice entrance into the Rust ecosystem. And I wonder - you know, I’ve been tinkering a little bit with just the fringes of Tauri as I’ve found a use case… I’ve been waiting for a use case to give it a try. So I’ve been doing the getting started, and dipping my toe into the water, as it were… And as a web developer, full-stack web developer, whatever you want to call me, somewhat intimidating, even though nothing seems too dragony so far… But I’m still just like “Umm, not so sure about (like you said) where do I put things, what belongs in Rust, what doesn’t etc.” Is that a common refrain? Are you answering those questions a lot? Do you think it’s been a barrier to adoption? Because it’s an opportunity for Rust, but it might be a barrier for Tauri.

[10:14] I think it’s both. I really think it’s both. I know that people are learning Rust, because once you get to a certain point in building your app, you’re like “Oh, I need to send a message from one window to another window, and I have to use the Rust bridge to do that.” Or you want to do tighter integrations with the cryptographic systems, you want to avoid using the database inside of the web view, so you kind of have to start thinking about - I’m gonna say it wrong… SQLite…?

Adam will tell you how to say that one.

That database…

There you go. Richard Hipp told us how. I still can’t toe the line, but Adam always has it. SQLite.

And to address your question, we’re seeing a lot more questions come up about using more Rust in the background of a Tauri app than in the foreground of the JavaScript side. There are always still people just dabbling… Well, look, I think that the opportunities that people have to learn new programming languages come with risks and benefits, and it’s really up to the people to decide what they want to do. We’ve seen both sides of this, where people have jumped because Rust is hard to learn. We’ve also seen people embrace it, and use Tauri as a way to become a Rust engineer. So we’ve seen both, and I think that what we’ve also seen are people who say, “Well, look, I’m using Python already. I don’t care about Rust.” OpenBB, they made a Python adapter for one of the low-level libraries. Somebody else just recently posted an Elixir kind of binding, so you can use Phoenix channels instead of Rust. People are working on, believe it or not, a PHP backend, so that you can write all your logic in PHP…

…and still get all of the benefits of our tight Rust core, and a user interface that can directly access both the Rust APIs through its JavaScript, or call out to, believe it or not, PHP. JavaScript I hear is on the horizon as well. So I think that what Tauri itself started out as is one thing, and where it’s moving I think is another. And that is turning into a collection of tools that you can kind of pick and choose how you want to piece them together.

That’s really interesting to hear. It sounds like there’s enough value there, enough interest where even if Rust is a barrier for you, there’s people that are like “Look, I can work around this particular aspect of Tauri by building a PHP backend, for instance, or providing access to Elixir… Because I want to use it so bad, and I don’t really want to use this part of it.” That to me shows quite a bit of interest for people that are willing to break out their code editors and work around, or code around these issues. So that’s pretty cool.

But you have this year, as we meet again, you have more news – obviously, the mobile stuff is huge… But you also have news around what’s behind Tauri. Open source strategy, funding round… There’s lots going on there… I know you had a very interesting take on open source last time. Can you tell us what you guys have figured out in terms of making this thing - I don’t know, sustain and thrive?

It’s tricky. We actually started a company last year; some of us from the Tauri working group started a company last year in November.

[13:54] And it was really important to us that nothing changed. From the outside, it’s still a militantly driven open source community, that now is supercharged with a handful of engineers being paid full-time to do the research, development and maintenance that a massive project like Tauri needs. And that company is called CrabNebula. We chose CrabNebula because we liked the idea of a place where stars are born. A nebula is a star factory, if you will. And we chose crab because - well, Rust, the icon, the avatar, if you will, is Ferris, the little crustacean/rustacean. Now, obviously, you can’t make a pitch to a VC and say “We’re just going to serve as a charity, and donate all of your money to open source.” Things would be nice if they worked that way maybe… But I think that we’ve found the perfect VC to join us on this trip. That’s JJ from OSS Capital, a West Coast-based venture group that only supports early-stage open source projects; commercial open source projects.

And through JJ and through years and years of being around, we sort of collected an all-star regiment of angels who joined us along the way. I could drop all of the names, maybe you can edit them out, or choose the ones you like, but I think of the almost 30 angels that we have, a good dozen that are really relevant are Naval Ravikant from AngelList, Automattic Inc, the company, the investment arm of Automattic from WordPress fame, Guillermo Rauch, the CEO of Vercel, Thomas Dohmke, the CEO of GitHub, Tom Preston-Werner, the original co-founder of GitHub, Paul Copplestone from Supabase, Justin Hoffman, the former SVP of Elastic… If I didn’t say Bob Young, I’ll say his name again, because he’s amazing… Emad Mostaque, who is the CEO of Stability AI, Clement Delangue, who is the co-founder and CEO of Hugging Face, Dave Teare, the founder of 1Password, Adam Wiggins, the co-founder of Heroku, [16:27] Naveen Rudrappa, the founder of NocoDB… Heather Meeker, if you know Heather; she’s not only the general partner of OSS Capital, but wrote the book on OSS licensing… And we also have a couple of people like Cassidy Williams, who’s the CTO of Contenda; you maybe know her as Cassidoo. Also Tejas Kumar… And I think what drove us to work with this number of angels is getting to know your idols, the people that have built open source, the people who are building open source, and people who are poised to build the next open source, who understand the challenges of not only having a product, but also having the machinery, the understanding, and the ability to innovate into products and new products as they come out.

So that happened, and nothing changed at Tauri. I mean, we kept on building Tauri, in line with our foundations, expectations… But behind the scenes, we are working on a few products. I mean, other than investing time in Tauri, we’re also auditing Tauri; that’s one of the things that we love doing actually, is auditing people’s software that they built with Tauri, with Rust. We just completed an audit for a company called Bloop.ai that uses Tauri. We don’t really do custom development. We do, but we don’t.

[18:05] We will pick from clients who wanted to have something done that aligns with our research goals, if that makes sense. We’re not just out there, cutthroat working for half a million dollars because somebody wants to pay us money to build something for them. I mean, we’d consider it, but it has to align with our research goals; things that we want to know, things that we know that the community needs. Those are the kinds of customers that we’ve been looking for, and been finding.

We also recognized from the beginning that shipping apps is hard. It’s really hard. I mean, anybody can build an app, but once you’re done, how do you distribute it? How do you update it? How do you sign it? And for that, we’re building a platform to empower the people to ship their apps super-easy, super-cheap, and in some cases totally discounted for open source. And we know that - this is gonna get a little political; I don’t know if that’s okay… But we know that the incumbents, like Microsoft, and Apple, and Alphabet, and Meta, and ByteDance, they have vested interests… Well, maybe less ByteDance, but definitely the platforms… They have an interest in keeping a hold over a chokehold, over the app signing process. They keep such a chokehold on it that in my opinion, it’s not talked about enough in the supply chain. That final bit of app signing for GUI apps, and in some cases even CLI apps - that’s just like “Oh, yeah, Apple will take care of that for you. We gotcha, we gotcha. Come here, come here. Just give me your 99 euro –” Or Microsoft changing the game suddenly last April saying “Now do you have to get an extended validation dongle, or HSM. But don’t worry, you can use our super-secure, never-been-hacked Azure platform for that.” Google is a little bit less concerned; I think that anything that impacts their ad business is going to be a problem for them, but apps on devices keeps people on devices, keeps them buying devices, so I think that that’s okay for them.

But when I hear from people from the Tauri community that they are having problems signing their apps… Some people don’t even sign them. They just ship their Microsoft apps without a developer signature, and they’re like “People will deal with it.” And there’s no money solution here. There’s no lobbying we can do, but we can, in Europe at least, get involved with the European Commission and its platform policy work, serving as experts and making sure that these changes are respected, that other types of app stores can be on their devices; other third-party apps can now, starting in April, in the European Union, by law, have to be landing on these devices. And I feel very, very deeply about empowering the citizen developers out there who don’t have the 99 Euro, or who are in a so-called third world country where $99 is just a month of food… But they still can build their apps, but they can’t distribute them, and they have no access to these larger markets; I find that compelling in a very sad way. And I think there’s this mixture of good business, good politics, supporting the community is really in the DNA of CrabNebula. So much to the point that one of our first products that we’re going to be bringing out in Q4 - and you can find out about it just by following our socials - is a dev tool, because debugging anything is hard. Debugging Tauri is triple hard. Web has great dev tools, apps not so much, and we want people to be able to connect their app to an analyzer to figure out where things are going wrong, or getting better.

[22:04] And I understand you’re thinking, “Daniel, this is niche. Not many people are using Tauri.” But the great news is that we’re working together with other partners in the Rust ecosystem to define and use emerging standards, so that the work that we’re doing for Tauri people can be used by, at first, others in the Rust ecosystem, and later other ecosystems as they get interested in it.

I think the final thing that I’d like to point out is that - you asked “How is this possible? How can you keep the energy going, the momentum going?” And in open source projects you generally have like three or four models. One, a company sits on top, puts its thumb down… It’s not even a benevolent dictator; it’s like “We’re doing this now this way. We’re calling our project open source, and later on we can rug-pull.” But another one is benevolent dictator, who decides the way the project goes, generally takes all of the funds, and other people will contribute as they have time; people come, people go. And what we have with Tauri though is really quite compelling, because from the core team, five of the people are still around almost five years later. And I think that that’s a testament to the fact that we really enjoy doing it. And yet, I don’t believe that it should be just the goal of one company sitting in Malta to finance an entire open source project. And we do have donors, and that’s amazing… I think where things are tending toward is toward applying for more systemic grants, where we apply for funding from the European Commission, from organizations like NLnet, and potentially even other companies come and recognize the value that they’ve gotten from the community and start giving back. I don’t know, I think that that’s a very long, long play, expecting people that get something for free to give back to a community that they’re not so much involved in.

There’s a lot to unpack there. At the end of the last show I asked you about venture capital, and the organization, and things that would come from the 1.0 release, and that was about a year ago. And you kind of teased us a little bit with a topic we like to talk about with Cory Doctorow, chokepoint capitalism. I think you’re talking about that with app signing. I think that’s definitely a position of “Hey, if there’s an artist shipping something, there’s a chokepoint at some point that says “Okay, we’re gonna collect our toll, our fee.” And that seems like one part of your mission.

Then you mentioned the core team and the model of open source, which I think is interesting… I’d love to touch all those, obviously, but maybe focus in on the organization itself. Remind us what it’s licensed as, remind us of the organization… What has happened since 1.0 to sort of formalize it? I know you mentioned CrabNebula… What exactly is the model of Tauri right now? How do you compare it to others? You mentioned company at the top rug-pulling, we’ve seen that more recently… And it’s a fresh wound to the open source community.

Yeah, absolutely. So nothing has changed in the organizational structure of Tauri itself. There is still a board of directors, there is still an entity held within a Dutch foundation. The proper name is the Tauri Program within the Commons Conservancy. All of the code is open source, Apache 2/MIT, dual-licensed at your leisure. We take potential license violations within our own codebase very seriously; we will investigate those and resolve them. A lot of times it’s a mistake; usually, it’s something we can correct. Actually, I think we’ve always corrected them.

[25:56] So to summarize, the license is MIT/Apache 2; it is still morally stewarded by the commons Conservancy. And internally, there is a working group composed of people who elect themselves to join the working group. Currently, there are about 45 members of the working group, and I would say about 20 are active. And these are not all employees of CrabNebula. I mean, there’s a large number of them, but the majority of the current working group members are not. And we even have other companies, more or less explicitly involved, or by association. One of our board members actually works at Microsoft.

So from the organizational side of the open source project, nothing has changed. From the perspective of the company, we are donating/allocating - I don’t know how you wanna say it - full-time employees to spend all of their working time on research, development and maintenance of Tauri itself, of the core pieces of that tech. And then the products that the company itself makes and distributes are generally going to be at the very least source-available. We always want to make sure that people can see what we’re doing and have faith in what we’re doing. A lot of the things will also be open source, MIT/Apache 2 as we roll them out.

Break: [27:31]

So CrabNebula is the entity which has all these amazing angels. Correct?

And it’s starting off as consulting and auditing. But that’s not the big picture that you drew for these angels that got them excited. I would imagine it’d be okay to back something like that, but your bigger picture is products, services… It seems like some sort of distribution network of maybe app stores etc. for the Tauri ecosystem. Is that what you’re saying?

Right. We see consulting itself as a way to offset the cost of R&D.

With the addition of grants coming in, that covers our R&D costs, because we align those tasks with R&D. And auditing is important, because it keeps our security team fresh, and we’re helping the ecosystem, arguably, with important projects that people are using, by auditing them.

Of course, neither of those is that exponential curve that everybody is dreaming about, and I think that the long play for CrabNebula is in the services of distributing, solving this signing problem one way or the other, and providing tools that bring joy to the act of development of software again. And I think that what we’re already seeing inside the team is we are generally very dissatisfied with products out on the market. It’s hard for us to find stuff that ticks all the boxes… And there are a couple things that we are building internally, that we might just spin off into a product itself; just “Here you go, world. Buy a seat. Have fun.” Because I think that the benefit of working with all of these fantastic people is the perspectives that you get when you’re analyzing a problem field, and seeing all of the different ways in which people are criticizing things. Like “Oh, the security is crap. Oh, the layout. Is this bootstrap 2.0?” And it’s a challenge to reel people in, to say “Okay, look, we’re not going to build that product right now.” We’re going to solve our own problems on our own time, but right now what we are building are these dev tools, and building out the platform. Because those are the things that will scale, especially once you consider that the mechanism for bundling, signing, and distributing - it’s kind of the same no matter what platform you’re using. If it’s React Native, or its Electron, or it’s any of the other competitors or competing systems to Tauri, I guess; it’s still just a bundle and a sign and a ship.

So that move there allows us to also become more than just the Tauri company. I think that that’s a risk that we identified really early. And as a matter of fact, it would technically be prevented by the statutes of the open source community. No one entity can profit exclusively from Tauri itself. We cannot be the Tauri company, but we can be a Tauri company. We can maybe be the best Tauri company, but we can’t be the only Tauri company. And we are starting to see people start building their products around Tauri as well.

So if you created a platform for Tauri, you would desire other platforms for Tauri. Is that what you’re saying? Like, if you were the app store for Tauri apps, that did all the bundling and signing and whatever else is involved, and allowed you to distribute your software to users. CrabNebula - you’re not going to be the next Apple in that regard. Is that what you’re saying? Like, the open source bylaws make it so you can’t be that? Because given your 100% success, we would end up in the same place with – we put you in the list; we’d be like “Ah, man, Microsoft, and Apple, and CrabNebula…” We would just add you to the list, wouldn’t we?

Okay, maybe the ambition is a little bigger. Maybe the ambition is more to say that the Tauri framework itself would be more aligned with something like JavaScript. It’s not a product. Tauri is not a product in and of itself. It’s a way to get stuff done. Like JavaScript, like PHP, like Ruby. And we would like to consider ourselves as the people pushing that ecosystem forward, and developing on top of it, but we are not Tauri, because Tauri can’t be a product. Monetizing open source for me is –

[34:02] Go ahead. Go off. Go ahead. [laughter]

It’s one of the scary parts about this. I have a lot of friends in the industry, and I don’t want to piss anybody off, but I really hate it when licenses get changed, or when communities break down, or when corporate interest and greed suddenly redefines community… And then you find out what it is behind the community. You find out “Oh, it was the money behind the community.” If CrabNebula - and it’s a startup. Startups have a gradient of potential success. If CrabNebula goes down, it would suck for CrabNebula. Tauri can continue.

Kind of…

And I think that that’s this kind of –

Well, I mean, if you’re funding some of the core team members, and you’re a major financier behind the scenes of making things happen, then obviously the economics of supporting it change… You’re right in the fact that it can continue, but it’s financially stabilized to some degree by the success and the angels that you’ve mentioned. So there is no way to completely remove yourself from that, so I’m not saying that’s a strike against you, it’s just the truth.

I want to agree with you in principle…

“…but I’m not going to.” [laughs]

You should. You should. Because I’m right.

[laughs]

I mean, I know you’re right for you. And from where you’re sitting. No, from where you’re sitting I think it makes a lot of sense. But the point I was trying to make was - and this is something I’m working with the whole working group on… And it’s not something that’s done in software very often. I mean, look at ECMAScript 2022. It’s neverending. It’s going to be TypeScript someday.

The point is, I think at some point we can actually declare Tauri is done. I’m not saying Kubernetes-done, but done enough so that all you have to do is add little things, and there’s little bits of maintenance… But done-done to the point where the features have been completed. And maybe that’s the point in time where we get to start thinking about other stuff we’d like to build. I don’t know, like a browser? Come on. That’s too much work. Is it? If we laid the groundwork for that over time, it might – I don’t know, I’m not trying to get ahead of myself, but…

We have opinions. We just shared our opinions on this. Do you listen to our show often, Daniel, by any chance?

I do. I do.

We just went off on this. We just went on like what we want in browsers; me, Jerod and Nick, on our talk show, Changelog & Friends. So we were just like knee-deep in this…

We were just talking about an open source browser. That would be amazing. So you’re teasing us here… But Tauri being done, when the underlying platforms, the deploy targets of Tauri are never finished… It seems like - okay, maintenance, but how much of a burden is that? I mean, iOS 17 just came out. Certainly, as the new versions of these desktop and mobile platforms that you’re creating apps for are changing, they’re moving targets. So Tauri can’t be finished unless it’s irrelevant. But maybe you could say just major efforts are done.

As a matter of fact, at CrabNebula this week we decided we’re changing Research & Development, changing its name; Research, Development and Maintenance. RDM. Because maintenance is that – it’s like that part of R&D that I think people forget. Like, let’s make a brand new framework, and call it new, and rage on all of the things that everyone else thinks is a good thing… No. I mean, right now in the RDM department we are working on a grant from NLnet, together with the awesome folks over at Igalia, to verify that we can use Servo as a web view target for Tauri apps… With early success; it seems actually quite good already, for the short time that the Igalia team has taken up the helm of working on Servo… And it’s a long future, and at some point, people get bored, and they start having silly ideas. And I’m not saying we will build a browser, and I’m not saying we won’t.

[37:56] I do know that it’s a massive undertaking; an open source browser is going to require a ton of stakeholders, a ton of specialists, for a very long time. And hey, we’re not raising money right now, but I think that if you were to do something like that, you would definitely have to have the entire EU behind you, you’d have to have the European Commission behind you, you’d have to have more than just money; you need the charm, and the goodwill, and… I mean, the drive kind of comes for free, because otherwise we wouldn’t even be talking about it, but… Do you guys remember our first conversation when I told you I’ve always kind of been interested in building tools?

And for me, one of the interesting side effects about working with Tauri is that – Lucas and I started way back in the day, and we thought we were going to make a better Electron. We haven’t gotten there yet. Electron is better in a number of ways, I’ll say it here. Tauri is better in a number of ways… It’s a different thing. But that’s what we started out to do. And along the way, we built a community, we made a ton of friends, we started a company, and then we realized, “Actually, maybe we should expand our reach a little bit. This updater and bundler that we’ve built, it’s tightly coupled to Tauri.” And then at CrabNebula we go to conferences, we went to four this year, or we will have gone to four this year… At one of the conferences, somebody rushed the table and was like “Guys, hey, can you please upstream the bundler? Because I’m using Dioxus, and it would be great if I could just bundle and ship that way.” And we backburnered it because we had to get the 2.0, we had to make that push to beta… But internally at CrabNebula we are working on the proof of concept research to upstream it, and make it available to other projects outside of just pure Tauri.

The most exciting one is Slint, because we’ve found out meeting with Slint they have a different target audience, but they are building desktop apps, and they’re using our low-level libraries, TAO and WRY. So all of a sudden – the reason why Tauri became so popular in the first place, in my opinion, is because anybody could use the frontend stack. If you’re React, or if you’re Svelte, or if you’re Solid, or Vue, or Angular, or choose any one of the hundreds… Or even Rust-based ones, like Yew and Dominator, and all that, you could use this thing that we made for you; we gave everybody a gift, and it was like “This is great.” And then we were still in this issue bubble, where we were seeing problems and comparing ourselves to others, and feeling like “Oh, there’s competition out there.” And by reframing it from “Hey, we don’t have to compete with Dioxus, or Slint, or Electron”, we can help them do better things. Do things better. And by moving out of that tight coupling to Tauri core, we are doing just that.

I haven’t had the opportunity to speak to Cory Doctorow personally, but I think that this mode of deciding for cooperation instead of competition is really rare in – I mean, in open source maybe, but in venture capital type companies, very likely.

It’s non-existent.

Yeah, “The competition helps you understand better who you are, but we’re gonna crush them.” I see the world differently. I see it as a way for us to build tools to support other people, and if they like our product, they’re going to use it. If they like somebody else’s product, they’re going to use that. I have confidence that the products we’re making are great, and that people are gonna love them and use them, and that’s what I sold. I didn’t sell my soul to a VC, or to wonderful angels… I sold this firm belief in the fact that we are not only doing something great for each other, great for the planet, great for people’s devices, but also great for this ecosystem, which is a subset of the markets that we can attract.

[42:15] I like that sales pitch. I don’t see how you get from there to a web browser, but I understand that if you get “bored”, then maybe you’re like “We need a big fish to fry”, and I would love to have somebody fry that fish, Daniel, so I would also buy that, in terms of a massive effort to do that I put my money and time and voice behind that effort. But to me, the web browser thing is out of left field, Daniel, I’m not gonna lie. I didn’t ever expect you to say that today, so I’m kind of confounded.

You know, what does a web browser need? What’s the one thing that it really needs, that we did really well at Tauri? It needs to be updated. Every freakin’ day it needs to be updated, it needs to be distributed across the planet, to every kind of device, every version of device, every operating system. It needs that kind of reach.

And you’ve done that already.

It seems like the design for the platform that we are rolling out to beta later this fall, early winter, is capable of that. So we’ve just kind of accidentally built one of the things we kind of need to ship a browser.

A research goal is to find a way to make Servo window options for Tauri devs. It’s a very interesting, almost legendary collaboration right there between Igalia and Servo.

What’s that mean, Servo window options? Tell us more about what that means exactly.

Well, if you remember Servo, Servo was a project from Mozilla that was designed to support the work on Firefox. Actually, a lot of the libraries and crates that are there are still in use. They never just got all deprecated, but the team was lost to the course of funding, or something; I don’t know. And Servo sort of languished for a couple years, and about a year ago - I don’t know, maybe in August or September, we started thinking about what it would look like to get Servo back on track. But we didn’t have the big enough team, we didn’t have any money to do that at the time… And then Igalia picked up a partnership with, I believe it is Future Way, which is a research and development group of UA company… And they started working on updating all of the other crates, on making a unified browser-like experience in a window. Basically, getting all the HTML, the CSS to work. I think they currently have compliance with CSS too, which is huge. Really, really amazing. JavaScript, of course; you know, that’s the unloved uncle in a browser… [laughter] And progress is being made there. But what we’re trying to do is leverage and work together with the Servo group to leverage the Servo web view as it were, as a target, instead of using WebKit GTK, WK WebView, or WebView 2 on the systems. This way, we can actually give everybody versions that they know are the same on these different platforms… Which is a sticking point for a lot of people. And building a browser isn’t something that I’m even committing to right now, just to say that very clearly…

No, I think that’s clear.

But should it become something that the group is interested in in the future - well, we’ve laid the groundwork for it. If the POCs turnout, if the collaborations continue; if the funding is made available, if the funding is palatable, if the engineers come together. There’s a lot of ifs and a lot of timelines, and there’s a lot of project management involved in that kind of thing…

Break: [46:04]

I have one more if for you then… An if and a what. So if you could assemble all those pieces together, if you could have all those resources, then what would compel you to build a web browser, and what does it need? What would differentiate the kind of browser you can envision, comparatively to what’s out there currently?

Well, first of all, first and foremost, it absolutely has to be privacy-respecting. It has to be securely-designed. And I know those are two simple words to just drop into a sentence… It’s easy to drop those two words into a sentence, and say “Yeah, it has to be privacy-centric, and secure by design.” But what that ultimately means is that in the context of local-first apps, we want – we want… I think that a solid approach would be to focus on that aspect of treating the individual as a human being, and not a data point for harvesting their conversations. The things that I say in this browser - they shouldn’t be tracked by something slurping up my voice, and my face, and the words I say, and feeding it into some LLM that’s training on me. Those kinds of privacy-centric things have to be important.

I think ads should just disappear. I did an artwork over a decade ago where somebody made a Firefox plugin, where you could supply different banner sizes, and then – I gave him a collection of images, and then they would replace all the ads in the browser with artwork. I loved that project; I never forgot about it.

I think that the way in which we’ve been instrumentalized and forced to use the browser is kind of sad. I mean, I understand why; there’s a lot of big money behind it, and big ad tech, and I think that the industry would be very much opposed to a browser without ads. And secure - by security, I meant that things like your personal identification, your secrets, your credit cards, your password management is done from first principles of preserving security, integrity, and reliability of data; not just for yourself, but for your device.

[50:00] I think that the easy way to look at security is to say “Oh, it’s just about my passwords.” The reality on the ground is that sometimes we share passwords. My mom, and her husband - they had to share a password for their banking, until I caught them. And I was like “No, guys. You can’t do that. You can’t share passwords these days.” And I think that the entire model of passwords, passkeys and cryptography needs a revision; it needs to be treated in a way that is built off of those principles, that if it’s not secure, it doesn’t ship.

Well, those were two aspects of the things that I put on my list, Adam, of what we want in a web browser… And I know the main thing that we all agreed we didn’t want was an ad company living inside of our web browser, which is why we have gone elsewhere. Super-interesting, Daniel. I think if you ever do decide to plant your stake in the ground, come here first and talk to us about it; we would be happy to help you bootstrap support around that project. It’s something that I think the world does need, and that’s cool. It just seems like, from the Tauri people [unintelligible 00:51:13.17] You gave the reasoning why you’ve been thinking through this, but for me it is a bit of a pleasant surprise. Adam, were you expecting to talk web browsers today with Daniel? I didn’t think we would.

No, but I think the components he mentioned, which – the signing, the delivery, the distribution… I agree with everything you said there, Daniel; you’re essentially building the necessary bones to build the skeleton of a browser. And Jeremy just talked about that. Obviously, we’re not going back to that Friends episode, but we are kind of, in a way… You know, I don’t use Safari because it’s got particular privacy or certain features like that; I use it for graphics, essentially. Like, okay, it gives me tabs that share to my iCloud. It gives me particular features like that, not because it’s more secure. And I think that the browser you’re talking about would be built on fundamentals that are for the people, versus for the corporation building the thing itself. That to me sounds like an amazing foundation. But no, Jerod, I was not expecting him.

Well, I mean, it would also need more than just that, of course… But we don’t need to talk about –

Oh, God. It would need perfect visual representation, it would need to have CSS 3 compliance…

See? There he goes again. [laughs]

…it would need to have TypeScript from the get-go… It has to have WASM… I mean, of course, there’s a laundry list of things that make a browser a browser.

Yeah. Performance. Speed.

If it doesn’t have those things that we ascribe to browsers, it’s not a browser.

Sure. And I’m not saying baseline browser features. I’m saying it would need – I know you chose the differentiating factors. But also, I think speed, performance, battery use, these are things that are also very important, alongside privacy and security. So there’s a lot of things that go into making a compelling browser. If we might just hop that conversation back over to Tauri, one thing that you said - it was probably 15 minutes ago now - that I was like “This is interesting. This is a change in perspective for you”, when you were talking about Electron and competition and cooperation, and VCs, and Tauri, you said that you set out to make a better Electron; you didn’t make that, you made something different, and it’s better than Electron in some ways, and it’s worse than Electron in some ways. And I would love if you’d just take a few moments to draw that out for people… Because a lot of us, Daniel, are still in a point where we’re thinking about Tauri and we’re just – we’re not as far down the line as you are in your thinking. We’re thinking “Should I use this, or should I use Electron?” We’re thinking about tooling. And so that’s a very interesting thing, is like just that comparison of the two, coming from your mouth, about what is Electron better at than Tauri, and vice versa.

[53:52] I think, just to address it - I made some mistakes, engaging in this idea that Tauri is better than Electron, and here’s why… And I even got into a Twitter battle with [unintelligible 00:54:04.00], where I proved that we were better in some way… And after reflecting on it, I think that there’s a lot of things that Electron brings to the table.

For example, you might consider it a bad thing, but it does bring a unified web interface to the major desktop platforms. It’s the same interface. If you look at it in Windows, it’s gonna look the same as it is on Linux. So I think that that’s something that we don’t currently have.

You also get an amazing general runtime of Node.js, bundled with joy, that can do anything. Basically, if you can think it in JS, your isomorphic skills are going to come in totally handy. You’re going to be able to follow documentation that’s been built over – I mean, Electron’s like almost… Is it 10 years old now? They’ve been around for a while, and a lot of people loved it and grew up on it, and made documentation, made whole tutorials. You can learn about it and not need to step out of your comfort zone. So I think that those are things that Electron has going for it.

What Tauri has going for it are you only ship the parts of software that you need to run it. You don’t need to ship a generalized runtime. So by doing that, we can reduce the actual engine size of a Tauri app down to 500-600 kilobytes, maybe 400, depending on how aggressive you compress.

Tauri is also – I might get some flak for saying this. Like, people do benchmarks, and they benchmark, and they compare, and like “Oh, this is a Hello World Electron app. This is a Hello World Tauri app. And this one starts up this fast, and this one starts up this fast. I know which is better.” But ultimately, what’s happening under the hood, what’s happening inside of the core runtime is fewer sys calls, less memory pressure… And believe it or not, a quicker startup. The time it takes to open up a large binary is linearly longer than opening up a small one. We’re talking milliseconds here; I guess you could split feathers… But once you start thinking at a global scale of the trillions, quadrillions of apps that are installed out on the planet, do they all need to have an individual 8 or 12-megabyte Node.js runtime, if you have 10 of them on your desktop? Not so much.

I’m very much convinced that as Tauri technology gets adapted by more and more teams, it does become a financial factor once you start to consider massive traction. I mean, if your app is downloaded a million times a day, the difference between 200 megabytes and 10 megabytes is going to mean something to somebody in your accounting team. And that’s just the accounting side of it. The transfer of this massive bundle costs electricity. We’re not in a cold fusion world yet; maybe at some point it won’t matter anymore, and we all have our little fusion packs built into our wrist.

But until then, we have to conserve electricity, we have to protect the planet, and every little thing we can do is important. And like I was saying, as Tauri grows more and more relevant and more widely used beyond the Fig.io’s and Spacedrives out there, it actually concretely positively impacts the planet.

Now, you could argue that the most performant app, the most secure app is the one you don’t build. But I think that’s a red herring. I think that people are going to continue to build apps, and we just want to make sure that they’re sussed out with the right tools.

[58:08] What does Tauri also do better than Node.js? Well, we can integrate very easily with third languages. There’s actually a dynamic library example that lets you rig Tauri from C++. Like I was saying before, people are building Elixir bindings, and Python wrappers, and PHP engine backends… And that ability for your preferred piece of backend and frontend to come together with the Tauri components working as glue is the really compelling part of it. Because I’m not gonna lie, I wrote a lot of JavaScript in my life. The thing about JavaScript is that – and it’s happened to me… I’d be writing something and I wasn’t sure which context I was in. Am I like on the frontend? Am I on the server? Wait a second, how does this work again? That isomorphism really – I lost my place sometimes… And I think that the fact that you can now use Rust, Elixir, Zig, C++, means that there’s a lot more entrypoints into the system… And combined with the fact that the work we’ve done on the bundler and updater is going to become more broadly available to others in the ecosystems, then I would argue that the Tauri project itself is grown beyond itself already. I think that it’s grown to see itself as a way of supporting the much larger ecosystem.

Yeah. That third language thing is really cool. I wasn’t aware of that until you told me here earlier. I think that’s really interesting. And I agree with you; I worked early on in some isomorphic contexts. I think with Meteor.js, where I was just as lost, and where was, in that the benefit of having all JavaScript really was lost in the fact that I still didn’t know which area of the stack I was currently coding for. So I’ve never had a problem hopping back between JavaScript and a different language, like contextually, especially ones that aren’t dramatically different… Anyways. I always thought that the isomorphic promise was somewhat spurious, or not interesting to me. Anyway, that’s a side tangent. But yeah, third language is really cool. It definitely allows Tauri to bust outside of the box that it’s currently in.

Interesting you mentioned user interface to a certain extent, and an Electron advantage with regards to what they provide… What does Tauri provide when it comes to interfaces? As I was kicking the tires, I was expecting kind of more like widgets, and other things, where you can just like “Give me a file explorer, give me a this-thing widget”, and it would provide that kind of thing. None of that’s there. So is everybody doing their own thing inside of – you know, you grab some Tailwind CSS, and like start from scratch, or how does it work?

Technically, you’re right. The various ways that people can interact with Tauri are gonna sound stupid - menus… Menus are part of the user human interface chair…

Taskbar applications… You have a little dropdown or a dropup, that gives you a little insight, close the app, show me the open windows…

Totally.

The window itself, the copy buffer, the keyboard, the mouse, the pointing device, potentially multi-touch, the microphone, the camera - those are the things that we wanted to make sure we got right. We talked about, at one point, even making a crate for people who want to play around with those little stoplights on your macOS. And we sort of decided, you know, if someone from the community wants to build a plugin, we’ll support it. And actually, that’s what happened.

[01:02:01.01] Now, a window isn’t just a window. There’s transparent windows… I’m being pedantic, but it’s important, I think. There’s transparent windows, there’s windows with decorations, there’s windows with title bars… These are all like classical things that we touch. The size of the window, the position of the window, the relationship between windows. Is a window on top? But what do you put inside the window? So the way that Tauri is built, there’s two very low-level – some people call it deep tech, and I hate that. But we’ll call it low-level libraries. One of them is called Tau. And that’s actually a fork of the winit project that we’ve added to keyboard accelerators… You know, the Command+Shift+T, or whatever… And menus, and the windows. So we can create the window and all of this touchy-feely stuff with Tay. And then you’ve got to put something in Tau. There’s a number of things that we currently offer. The primary one is the web view. That’s what everyone knows. It’s HTML, CSS, JS, compliant up to ECMAScript 2020, unless you’re on [unintelligible 01:03:07.00] Unless you’re on like Mac 10.13, because it’s using Safari web view… And what is it using exactly? It’s using WK WebView on macOS, it’s using WebKit GTK on Linux, and it’s using WebView 2 on Windows. WebView 2, I will note, is based off of Edge, which is based off of Chromium… So you do get a Chromium-like browser experience with all of the lovely telemetry that Microsoft puts into every app.

The lovely telemetry, yes.

Then, on macOS, it’s WK WebView, which is version-locked to the Safari that you have installed on your latest update… And on Linux, it’s WebKit GTK, which itself isn’t totally feature-compliant; for example, WebRTC doesn’t work there. So we also built two other kinds of Windows. So there’s an immediate mode, GL-type window called Tauri Egui, which you have to use Rust for. There’s no real good way around it right now. But Rerun.io is the company behind Egui, and it provides a JavaScript, HTML and CSS-free way of building user interface that we recommend for people who have high security requirements. You don’t paste your password into a JavaScript window, because you never know what somebody builds with the Node module that you installed. So you use one of those.

And recently, it’s not actually been made super-public yet, but there is also a web GPU window type that you can create. For example, the Bevy game group, they need the WGPU, but they also would like to put some HTML type buttons on it. It was a research project with CrabNebula; we put that together in about a week. So now they have more options. And ideally, the future looks like either Servo or CEF, Chromium embedded framework. Both of them come with caveats. I mean, CEF would be the quick way to do it, but then we’re shipping Chromium to everybody again. Anyway… That in and of itself, and making it work on all of these different platforms - oh my gosh, and then there’s the mobile stuff as well - has really led to us building these low-level tools, and then expecting people who build frontends to create the kind of user interfaces they need.

[01:05:51.18] And did you say earlier – I kind of expected that to be the product of CrabNebula. So I was thinking more along the Tailwind, CSS is the open source project, and then Tailwind UI is like the thing that you go and buy. And so I was kind of expecting – you did mention productizing some UI stuff, but there’s a lot different stuff in there. I kind of expect that to be your product play, was all this additional layer on top, that provides cross-platform widgets, and cool-looking things you can use, you know the doo dats and the…

Can I be honest with you? I think that market is right now too small.

I think that market needs two to five years to mature. Maybe two. Maybe less if we’re really successful doing what we’re doing. But right now, it’s not the time to bring that out. I think that there’s so many options for people to build stuff that – yeah, I mean…

Fair enough. I always get a laugh at the phrase “Can I be honest with you?”, because it’s like “Well, what have you been doing this whole time, Daniel?” Come on…

[laughs]

I’m – um…

I know. I’m just kidding.

Jerod…!

In German, they call them Floskeln.

What does that mean?

…which is like little flippers. It’s like little things you inject into a sentence to pass the time while you decide if you’re actually going to say the thing you want to say…

Right?! Nah, I’m just giving you a hard time. Good stuff, Daniel. We’ve talked about a lot… Is there anything obvious or big regarding your news, and your release? 2.0 you mentioned. Is this stuff burgeoning? You have a product in the fall… What’s coming out? What else haven’t we talked about or that you want to reiterate as a final thing?

Well, I mean, right now Tauri itself is close to entering the beta phase. The beta phase means we’ve reached a compliance internally with our expectations of what it should do. Basically, as soon as we mark Tauri as 2.0 beta, we’re sending it off to audit. It’s going to be audited by two companies. Radically Open Security on one hand, and on the other hand it’s CrabNebula, because CrabNebula has been auditing Tauri since the 1.0 release. 1.3, or 1.4, whenever we started the company back in November.

And once the audit is completed, and we’ve fixed the findings, we will then mark Tauri as RC0, give the community a good time to feedback, reply, make last-minute changes, and then we will release Tauri 2.0. I hesitate to give timelines, because audits can find lots of things that you weren’t expecting… But we do expect to keep things speedy.

We have a blog post about it on the Tauri website, where we go into detail about it… But the challenges of an open source community is that it’s really hard. I mean, even with the venture-backed group like we are being involved, it’s really hard to give the community timelines. I’d like to say a certain date, but obviously we’ve learned that engineering sometimes just takes the time it takes. But we’re closing it on it, and it will have mobile, so I think we’re checking off the to-do list for Tauri right now.

Well, all exciting things, Daniel. We of course hope the best for you. Always appreciate you coming on the show and discussing these things. Big picture, little picture… I love how you can go from the stars, down into the nitty-gritty of web views just like that. So we definitely appreciate – you’re our kind of fella. We appreciate you coming on, and come back anytime, especially when you’re ready to announce your open source privacy-focused browser project.

I promise to do so.

Thanks, Daniel.

Changelog

Our transcripts are open source on GitHub. Improvements are welcome. 💚

Player art
  0:00 / 0:00