26:03Well, certainly we touched on already that
bringing together these different people
26:06who came to this, world with different
motivations and different backgrounds do
26:12click and gel and share values together.
26:14So I think that was, a
happy, a happy learning.
26:18Getting a little more
kind of nuts and bolts.
26:20Uh, one of the things that really struck
me was just the element of UI performance.
26:25And obviously we're just talking
about Linear there, but, we
26:27had some demos specifically.
26:28You showed your app, Overtone,
sort of flipping between playlists
26:32and comparing that to Spotify.
26:34then, Aaron showed,
yeah, the demo was Zero.
26:37And we also saw there was a third one.
26:39Maybe it was jazz.
26:40In any case.
26:41Yeah.
26:42The thing that struck me seeing these
different demos, so completely different
26:46people building in many cases, pretty
different products, but all of them
26:49had this feel that was fundamentally
different from most of the software
26:54that we use in our daily lives.
26:55And we've talked about.
26:57UIs should be fast or, you
know, no spinners or whatever.
27:01And I think the way we wrote that in
the original essay, I was thinking
27:04like, okay, I log into Google drive
and it spins for five seconds,
27:08like literally 5, 000 milliseconds
before I get a paint on the screen.
27:12Okay, we can do better than that.
27:14Maybe we could, you know, get things
back in under a thousand milliseconds
27:17or under 500 milliseconds, but all of
these demos show Next frame performance.
27:22That's something where it's, there's
literally just no delay for in
27:26terms of like human perception and
it feels fundamentally different.
27:32And to me, uh, when I think of how
much human kind of energy and just
27:37like soul is lost on waiting for
software all the time, the idea of a
27:43new generation software that is kind of
next frame by default is, Very exciting.
27:48And seeing them side by side, again,
that several other, um, many people
27:53building towards this have ended on
a thing that has this fundamentally
27:57same feel that is the same as each
other, but different from everything
28:01else we know outside of, I don't know,
maybe like video games or something.
28:05That was That would, for
me, was very powerful.
28:08And I think it's like, was not necessarily
a new idea, but just reconfirming
28:12that, seeing that in different
contexts, uh, reestablished for me,
28:16like, Hey, this is worthwhile doing.
28:18and it's just every time I, for
example, do a search in Notion,
28:23particularly, uh, when you're in this
weird middle ground between having
28:28perfect connectivity and offline, this
is where like more traditional, kind
28:34Cache driven, web driven, software is
like trapped in this middle ground.
28:39like I was just riding on a train two
days ago and I was dreading the moment
28:44where I knew I needed to like change my
Notion page and I need to navigate there.
28:49And the, uh, I knew this, I had this
page open yesterday and I wanted to
28:54navigate it and like, it literally took
me 30 seconds until enough packets kind
29:00of flew in and I could navigate there.
29:02And, uh, this can be so different.
29:05And I think it's, uh, the, the different
demos in the conference showed that to us.
29:10So UI performance, and also the, the
different perspectives from, tool builders
29:15and app builders and people outside of
the local-first ecosystem all connecting.
29:20Anything else that, stood out for you
as a, as a theme or a new learning?
29:24Well, obviously sync engines
were, a frequent topic, that
29:28touched on in many ways.
29:29One thing I was quite struck by is how
much similarity in, I guess, architecture,
29:36if that's a word for it, between all
of these different presentations,
29:39which included, you obviously have
the infrastructure creators like
29:43Jazz and DXOS and ElectricSQL and so
forth, where they are very explicitly
29:48and intentionally trying to design
a good general purpose sync engine
29:52infrastructure, architecture, API thing.
29:55For lots of apps to use, but
also we heard a version of that
29:59from many of the app developers.
30:00So for example, GoodNotes, and they're
a really interesting case where a
30:03very successful existing business.
30:05They have like 30 million active users.
30:07They're basically on every
iPad in the world, effectively.
30:10and they, you know, they came to
local-first because they needed a
30:13solution for essentially merging
together rich text changes.
30:16And they're describing how they're,
they're using Automerge to do that, but
30:20their core, Architecture, again, is this
kind of event log model that then is fed
30:26in and, you know, turned in, reactively
rendered, and there's, um, that kind
30:32of event or transaction based system is
something you hear repeated again and
30:36again, and indeed that, uh, there are
many other kind of concepts in the, call
30:41them the architecture diagrams, whether
they actually put a diagram on screen
30:44or not, or just talking about it, you
saw that, again, all these builders,
30:47some coming from the app side, some
coming from the tool side, basically
30:51arrived at kind of the same solution.
30:53And again, that to me is surprising,
but also heartening in the sense that
30:57you give a lot of, different smart and
capable people the same set of starting
31:01conditions and problem statements.
31:03And if they arrive at a similar
solution, that means that solution
31:07is something General purpose of wide
utility, kind of a right solution if
31:13that's, if that's the word for it.
31:14So that was, that was very notable to me.
31:17Indeed, one of the points that
Martin made in his opening talk was,
31:20in a few years, he'd like to see
about going and getting an internet
31:25standard made for a sync protocol.
31:28And, uh, When he gave that, he's
mentioned that to me privately.
31:31And when he mentioned in his talk,
I'm kind of like, yeah, I don't know.
31:33Are we really like three
years away from that?
31:35Like kind of seems like it's
still too early for that.
31:38But then as I saw these architectural
similarities across all these kind of
31:42sync engine solutions, I was left with
the feeling of like, Oh, actually I do
31:47think we're a lot, I think he's right.
31:48I think we are a lot closer
than, than I thought we were.
31:50Yeah, and I, I think this is a, this
is the topic that I can't wait to,
31:55to see materialize more into reality.
31:58And I think there's like
a longer timeframe there.
32:01Maybe in three years from now,
we do the first early drafts
32:05of like a standardization.
32:07Yeah, it's probably start the
process in three years, not finish.
32:12Exactly but until,
until there's like a 1.
32:150 of something.
32:17There's like a reference
implementation, etc.
32:20That's going to take a longer time and
until maybe there are some pieces that
32:25need to actually trickle into browsers
or operating systems, that's, uh, even
32:30further down the road, but I think
we're certainly reaching a point where
32:34we've explored a bunch of different
approaches in the ecosystem where we can
32:39now try to converge on some of those.
32:42And, what you've mentioned before, the
kind of impromptu working group around
32:48authentication problems, et cetera, that
is a major aspect and there are other
32:52major aspects that need to still be
figured out, but it's really amazing to
32:56see how collaborative the entire ecosystem
is where, yeah, different vendors and
33:02different individual tool builders, app
builders, all come together, share their
33:06experience, and, trying to, to help create
like some sort of, convergent technology
33:13into existence, that's really cool to see.
33:16Another way to frame that same, same
direction you're going is kind of solve
33:21problems versus unsolved problems.
33:23And so increasingly, I think.
33:24A lot of the stuff in the sync engine
side of things, can and should have
33:28many sort of competing solutions out of
the marketplace, um, that fit different
33:33styles and, you know, maybe different
language ecosystems and things like that.
33:37But in some senses, how to do a sync
engine in this way, is mostly figured out.
33:44And actually one of my goals for the,
the conference content was that the
33:51term CRDT should not appear too often.
33:55Um, because typically, again, you
go to, some of the past events, that
33:59have, have existed with this or attend.
34:01You know, a conference or a meetup
or just have a conversation with
34:05someone or anytime the topic comes
up on Hacker News and people tend
34:10to be focused around the, yeah, but
how do you merge changes together?
34:13And there is still plenty of interesting
research being done on the CRDT side
34:18of things, and there will always
be need for new data types as we.
34:21expand the different applications
that people are applying this to,
34:23but ultimately how to build a basic
CRDT and put that into a sync engine
34:29and make that work reliably across
different devices and multi user,
34:33basically have that figured out.
34:35It's just now, it's a small matter
of engineering now, which is still
34:38a huge challenge, but in the sense
of like being a figured out thing.
34:44I think we're, we're basically there.
34:46Whereas there are other things here,
and, uh, this was, uh, you know, a
34:49topic for the day, to some extent,
is what are the unsolved problems?
34:52Um, that includes things like, uh,
schema and, uh, schema migrations, uh,
34:57over time, identity, as I previously
mentioned, kind of authentication,
35:02um, and, and permissions generally.
35:05And there's other stuff as well.
35:06but yeah, I think that as a community,
a way to kind of collaborate loosely,
35:10even though we're all working on our
own projects, is to think in terms of
35:14like, what are the relatively solved
problems that we can codify with, I
35:18don't know, writing or, you know, open
source libraries or things like that.
35:21We say this, this we basically have
settled on the right way to do it.
35:26and there's many implementations of that.
35:28and then other areas where we still need a
wide and diverse set of active experiments
35:33to try to figure out how are we going to,
how are we going to solve this problem
35:37in a local-first, uh, compatible way.
35:39This is also what stood out to me and
talking to speakers, talking to, to
35:45other attendees, is how have they.
35:48who ship products, who shipped apps, how
have they navigated the trade off space?
35:54some have like used off the
shelf, technologies such as
35:58like AutoMerge, Yjs, etc.
36:00But then you're sort of at the mercy of
how far those technologies are along and,
36:06the inherent or current insufficiencies
of those technologies are also, hard
36:14to, advance for, for you yourself.
36:17And, uh, I think there's a notable
other approach for, for app builders,
36:23which is that they don't yet use one
of those off the shelf technologies,
36:27but they've rolled their own.
36:29And, whether that's Good Notes or
whether that's Linear, et cetera,
36:32they've all started so early that They
were convinced this is the right idea,
36:37this is the right approach, but we
don't want to wait five years for the
36:41technologies to be there or to be mature
enough, so they built it themselves.
36:44And I think this is something that
so many of those local-first apps
36:50have that in common, which is very
encouraging for me because, at the
36:54core of it, Those you can make really
drastic trade offs, um, that fit your
37:00app use case and your app requirements
that might not need all the guarantees
37:06something like AutoMerge can provide.
37:07And this can help you going kind
of almost counter intuitively
37:12where, only very few would build
their own Ruby on Rails to ship.
37:16A Rails app, but it, in a way you
can get away with way stricter
37:22trade offs for your specific apps.
37:24So building your own syncing stack
is actually not as much work.
37:29If you, have sort of like a, Like two
months from Linear, if you have that
37:34sort of experience and, if you're
daring enough that you feel like this
37:38is something that you want to do, but
I think that's a, that's a similarity.
37:43And what is most interesting to me about
that as well is that the trade off space
37:49is traversed in a very heterogeneous way.
37:55So, depending on how someone has struck
some trade offs, they might be way
38:01further along to solve certain problems.
38:04So, if you, for example, follow more of
like a event sourced architecture, then
38:10you might have entirely different ways to
deal with the schema migration problem.
38:15Uh, for example, if you, implement your
own CRDT stack or you have other benefits.
38:20So, and I think this now gives us a
pool of experiences where one technology
38:26can learn from the entirely different
architectural approach and, uh,
38:31sort of cross pollinate, the ideas.
38:33And so this was really interesting
to exchange those ideas and that
38:38was kind of my main takeaway.
38:40Absolutely.
38:41I think, you know, maybe the last
takeaway I would probably mention was
38:45just, um, probably some of my favorite
conversations there were talking to the
38:50People I put in the local-first curious
demographic, sometimes they were, you
38:53know, colleagues with someone who was
deeper in that world and this was a chance
38:58for them to better understand this, this
weird thing their colleague was into.
39:02In some cases, they just had
seen the buzz online and wanted
39:06to, to find out about it.
39:07Yeah, for, for example, the, you know,
schema migrations being something that is,
39:11at least the many in the community feel
is, is, is largely an unsolved problem.
39:17And then that caused one person I was
talking to be like, whoa, whoa, whoa, I
39:21don't want to have anything to do with the
technology that, that hasn't solved this.
39:25because you know, this is so, that's
such a fundamental thing to, you
39:28know, building an app in the long term
and with a data stack you can trust.
39:32Which I thought was a, which I thought
was an interesting perspective.
39:34And I was kind of like,
don't worry, we'll solve it.
39:36And that didn't necessarily, you know,
put their, put them at ease, but it is a,
39:40you know, it was a good illustration of
the fact that we are trying to go across
39:43the cusp of the threshold from, you know,
academic, big idea, ivory tower into real
39:50world thing you can use, but you know,
it's, it's, it is still an intermediary,
39:55intermediary state very much.
39:57Very much bleeding edge.
39:59Another person I talked to said basically
that, you know, they were new to it,
40:04but they, the energy that they felt,
was really, um, unique and interesting.
40:09And they, made a comparison I, I
found very positive, which was to
40:13say they basically hadn't felt the
same thing since being part of, or
40:16being around in the React world circa
2013, where kind of, and obviously
40:20there, there was a, a main library
that everything centered around, but I
40:23think in general, the idea of reactive.
40:25UIs and reactive rendering as kind of
the right solution for, for building
40:30applications of all kinds was,
you know, was kind of this fresh,
40:35um, but, but clearly correct idea.
40:38But similarly there, I guess, coming
back to the, you know, still a work
40:42in progress, bleeding edge Stuff to
figure out if you were part of the
40:46React community back then, things
like state management, you would, you
40:50know, you would pick up a library that
was supposed to be the, uh, you know,
40:53this is the way the community does it.
40:55This is the state of
the art and you use it.
40:57And six months later, that
library is deprecated.
40:59And another one is, is now considered
the, and you're like, wait a minute, I'm
41:02trying to build an application here and
I'm not just sort of on shifting sands.
41:05And that is, you know, that of course
is the trade off being, being part of a
41:08community that's still so so young and,
and in the process of figuring it out.
41:13But to me, it's what makes it so exciting.
41:14Cause there are so many problems to
solve and not only engineering and
41:19technology wise, but design wise, we
need whole new UX and UI patterns in
41:24many cases to describe things like.
41:26Sync state, pick a very simple one.
41:28So that being on the frontier in that way
is to me, uh, uh, is quite a lot of fun.
41:33Yeah, it was certainly my happy place.
41:35I consider myself to be like a
technical pioneer and the conference
41:41had an incredible density of other
technical pioneers where it could just
41:46exchange sort of weird battle stories
of how you deal with, taming the
41:52browser to, to do what you want and,
to make things work cross platform or
41:58certain performance tricks, et cetera.
42:00So it was certainly my, my happy place.
42:02I want to slightly shift gears and
talk about another theme that stood
42:07out for me across the different
conversations I had, and also across
42:12the different talks that we heard,
which was more around centered around
42:16the definition of local-first itself.
42:19And Martin kicked off the day
by reiterating, the, the initial
42:23ideals for, for local-first.
42:26And I invite everyone to watch Martin's
amazing, keynote talk there as well
42:31to, to hear those, those words for
yourself, but I think the ideas were.
42:36Kind of reflecting on the initial
essay, how the initial essay laid out,
42:41the, the seven ideals for local-first
software, but that was never really
42:46like a strict definition of what
is local-first software actually.
42:50And also importantly, what
is not local-first software.
42:54So Martin provided, some new ideas about
that, which maybe you want to recap
42:59them here, but this also then led to
an interesting follow up conversation
43:05of like many of the products that were
showed throughout the conference would
43:10not fully qualify as local-first software.
43:13And I think this is, some people
feel more passionate about, like,
43:17very strictly, defining, oh, this
is local-first software, whereas
43:21this is not local-first software.
43:23And I think there's this interesting trade
off and interesting tension for, for us
43:28as a, as a community, as an ecosystem That
I would like to see is that we see, um,
43:35that see like an app sort of like on a
progression, on a spectrum of like growing
43:40up to become local-first and as a powering
technologies such as Automerge, et cetera.
43:47As they mature, it's gonna make
it much easier to build fully
43:50compliant local-first software.
43:52But kinda.
43:53grappling with that definition of
local, pure local-first software, I'd be
43:58curious whether you have some thoughts
on that and want to reflect on it.
44:01Yeah, this is an important question as
the community grows up and especially
44:05again, comparing to a community built
around a particular open source library
44:09or something like that, you don't
have that same definitional thing.
44:13Although even there, you can sometimes
have something where a major new
44:15version, it takes the library in a
different direction and then people
44:19say, this isn't what I was here for.
44:21This isn't the core of
what we're all about.
44:24local-first is unique in that
it is, yeah, philosophy and a
44:27set of ideals, that we think.
44:29imagines a better world or a better
type of software, but not a specific
44:33implementation or single library.
44:36and we always, you know, that initial
definition of the, the goal is data
44:40ownership for people who use computers
for creative and productive purposes.
44:45If I'm writing a book, The book belongs to
me, and the software should reflect that.
44:50and then the seven ideals are sort of
like the, also, in some sense, you could
44:53also describe them as user benefits.
44:55These are things that you get as a
result of kind of building in this
45:00way, and that therefore you can, as we
conceptualize it then, essentially create
45:04a scorecard, and that implies a spectrum.
45:06If you score a zero out of seven,
I think it's fair to say you don't
45:10really count as local-first software.
45:12Uh, you know, try again.
45:13If you score two out of seven,
well, you know, it's a start.
45:16That's, that's pretty good.
45:17If you score five or six out of
seven, then you're doing great.
45:21I mean, I think to some extent it's
almost not even fully achievable in
45:26the real world to, to have truly seven
out of seven and also have a, you
45:30know, a product that's widely used.
45:32I think that will change, I think, as
we continue to, if we push the, push
45:35the boundaries on this, there is a day
when you can imagine that all software,
45:39again, you referenced that earlier, like
things built into the operating system,
45:43fundamentally, I think that the, the
ultimate utopia for local-first or the
45:46ultimate, again, idealized world that
I picture with it is our computers are
45:51fundamentally built in this way and things
are built into the operating system or
45:55into a platform like web technologies
that is specifically designed to support,
46:01um, this way of software existing.
46:04But until then, you know, we'll
take, you know, I think Muse, for
46:07example, we called that local-first
software, but we probably scored a
46:10three or a four out of the seven.
46:12And that was because we identified,
coming back to that trade offs point you
46:15were making earlier, we identified Here
are the things that we think are really
46:20ready for primetime now, where now was
a couple of years ago, and, that we can
46:24implement on our team and that sort of
benefits our business and our users.
46:29Here's some other ones that we're just
going to leave out of scope for now.
46:32That's aspirational for the future, but
right at this moment, it's not pragmatic
46:37for us to, for us to pursue that.
46:39So I think this is sort of the, this
very interesting striking a fine balance
46:43between being pragmatic and being
idealistic, and where being pragmatic
46:48might help you shipping sooner, whereas
being idealistic, might take you longer.
46:54But, uh, enables your users with,
providing more of the benefits and
46:58ultimately full data ownership.
47:00And I think the, the hardest, ideal
to kind of reach right now, which
47:04Martin spelled out, uh, very explicitly
is like, if the, the app builders
47:10go out of business, the app still.
47:12can work and, so that the app is
not, degraded in functionality.
47:17And I think that takes a lot from
a company like Linear, et cetera.
47:22That's probably takes most of the
backseat and accomplishing the ideals,
47:27very understandably so, because
you building an app, et cetera.
47:31got to, for most people got to pay
the bills and this is the hardest
47:35to achieve and, probably also helps
the least in the short term in terms
47:40of getting new users, et cetera.
47:42So I hope that we'll reach at some point,
from a technological advancement that
47:47this is just so easy, that self hosting
becomes so easy, that data ownership,
47:52the operating system all supports that,
that we have a generic sync server.
47:57that we get this ideal almost for free
by using the right technologies, but
48:02I think right now you need to fight
the hardest to achieve that ideal.
48:07Yes, that's right.
48:07And again, that comes into built into
the platforms and the operating systems
48:11and the foundational layer, right?
48:13Like you can try to talk users into
using, I don't know, end to end
48:18encryption in their email by like
generating PGP keys or whatever, but
48:24ultimately, things like the mobile.
48:27Operating system platforms with their
secure enclaves and key management
48:30built in and biometrics and secure
messaging apps that kind of make all
48:36that easy and make it just, again,
part of the foundations where a
48:41regular person can, an app developer
can build this reasonably and a
48:44regular person using it can access it.
48:47It requires more than what any individual.
48:50builder or any individual
app creator can, can do.
48:53So, so you do your best,
uh, with what you have.
48:55Yeah.
48:56So to, yeah, exactly.
48:57So Martin's description, which you
should definitely watch the video of
49:00his talk, but is the thing that makes
something local-first is that no one can
49:06kind of take your data away from you.
49:09And I think in these, it's hard to
separate the data and the app to some
49:14extent, because While there are standard
file formats and things like that, the
49:17reality is just that, like, if Notion
stops working, but I have an export of a
49:22zip file of a bunch of HTML or however it
exports, it's like, well, I kind of have
49:28my data, but not really, I don't, without
the functionality of the application and
49:32the way to navigate links and search and
add new things, whatever, I kind of have,
49:37I really have lost something, like My
corpus of whatever I had in Notion to,
49:41in this example, would be lost to me.
49:44and his description is basically,
yeah, the company going out of
49:47business and being acquired and the
owner deciding to, you know, do a
49:51hard pivot in some direction that, you
know, you know, kicks out a bunch of
49:55the former users and customers, uh,
or just simply, yeah, servers going
49:59offline, right, is the short, is the,
is the near term version of that.
50:03And that, you know, the classic thing
of like, oh, Slack's down, GitHub's
50:06down, or whatever means now I can't
work, that, that would not be the case.
50:12So, I really like that as like a much,
A really boiled down litmus test that
50:17if you have that, all the other stuff is
probably going to tend to come with it.
50:22so I like it as a, again,
an aspirational thing.
50:25I think it's a longer term thing.
50:26I think it's a thing where we're
all trying to move towards.
50:29You can build in that way today,
but again, there are, there are
50:31trade offs to make, especially
if you're a commercial business.
50:34Depending on what exact domain you're in
and what platform you're on and so forth.
50:37For example, it's probably a lot easier
to do that if you're in a, uh, kind
50:40of like a building a native app and
then if you're building a web app.
50:43, but I, I think that is a
really nice, definition.
50:46Now he also said in his talk, you know,
while he is a, a cornerstone person in
50:51this, community, it is a community, right?
50:53No one has, you know, there, there's no,
uh, there's no benevolent dictators here.
50:57Or dictators of any kind, I guess,
and he, he has a lot of moral
51:01authority, but he can't just
say this is, this is what it is.
51:04We all have to decide that for ourselves.
51:07And so, to some extent, I think also this
could kick off a discussion about that for
51:12the community have sort of with itself.
51:14And again, I have my opinions.
51:16You have yours.
51:16Martin has his, um, but I think Again,
we, we may play key roles in the
51:21community and helping get things started.
51:23But what makes it as a community
is we're all defining it together.
51:26So I think to me, it's very healthy to
have those discussions and hopefully it
51:30doesn't turn into a purity or a holier
than thou discussion, but it does turn
51:34into a practically speaking, what unites
us, what are we doing here and how do we