1
00:00:06,200 --> 00:00:07,660
[CLAIRE] Welcome to Talking Postgres,

2
00:00:08,050 --> 00:00:10,680
a monthly podcast for developers who love Postgres.

3
00:00:11,040 --> 00:00:12,440
I'm your host, Claire Giordano,

4
00:00:12,680 --> 00:00:15,600
and in this podcast we explore the human side of databases,

5
00:00:16,170 --> 00:00:17,680
open source, and Postgres.

6
00:00:18,110 --> 00:00:22,420
And what that means is we dive into why do people who work with this database

7
00:00:22,570 --> 00:00:24,500
do what they do and how did they get there?

8
00:00:24,930 --> 00:00:27,100
I want to say thank you to the team at Microsoft

9
00:00:27,400 --> 00:00:29,500
for sponsoring this community conversation.

10
00:00:30,200 --> 00:00:35,460
And today's guest, and this is episode 27, is Peter Farkas.

11
00:00:36,480 --> 00:00:44,660
Now, Peter is co-founder and CEO of FerretDB, and it's an open source MongoDB alternative.

12
00:00:44,950 --> 00:00:55,680
Peter spent the last 15 years of his career working on open source for different database-related companies, including Cloudera and Percona, and now FerretDB.

13
00:00:56,300 --> 00:00:56,920
Welcome, Peter.

14
00:00:57,620 --> 00:01:02,240
[PETER] Hello, Claire. Thank you very much for the invitation. Glad to be here. And hello, everyone.

15
00:01:02,940 --> 00:01:10,540
[CLAIRE] I'm glad you're here too. So today's topic is how I got started with FerretDB and why we chose

16
00:01:10,860 --> 00:01:17,100
Postgres. So although you work at Ferret, there is a Postgres connection to today's conversation.

17
00:01:17,840 --> 00:01:25,540
And I think I just want to start there. What is the connection between FerretDB and Postgres?

18
00:01:27,060 --> 00:01:32,280
[PETER] Well, there's a lot of connection, but let me go back a bit in time.

19
00:01:32,390 --> 00:01:41,340
So actually, I was not really part of the Postgres community back in the early 2010s, I believe.

20
00:01:41,850 --> 00:01:45,140
So I was very much into MySQL.

21
00:01:45,860 --> 00:01:48,940
I worked for a company named Percona.

22
00:01:49,540 --> 00:01:56,179
It's like EDB, but for MySQL, or back then it was really just MySQL consulting

23
00:01:56,200 --> 00:02:06,460
and support company. But back then we were seeing two database technologies to emerge next to MySQL,

24
00:02:06,630 --> 00:02:13,480
which is pretty much the default open source database for many of our users, MySQL that is.

25
00:02:14,610 --> 00:02:25,580
But we've seen Postgres and actually MongoDB to emerge later in the 2010s. And that's when I

26
00:02:25,500 --> 00:02:32,900
started looking into really what Postgres is, how the community looks like and so on.

27
00:02:33,020 --> 00:02:42,940
And I found that it's a great database and I really liked the community, even though it was much different than MySQL.

28
00:02:43,700 --> 00:02:45,680
[CLAIRE] What was your role at Percona?

29
00:02:46,060 --> 00:02:46,480
Do you mind?

30
00:02:46,720 --> 00:02:47,640
Sorry, I interrupted you.

31
00:02:49,160 --> 00:02:49,620
[PETER] No worries.

32
00:02:50,920 --> 00:02:57,260
So my role at Percona was I was in charge of the subscription support business.

33
00:02:59,000 --> 00:03:08,080
Basically we've built a team of more than 35 people to provide services for MySQL and later

34
00:03:08,620 --> 00:03:11,480
MongoDB and Postgres.

35
00:03:12,640 --> 00:03:15,180
And yes, that's what I did at Percona.

36
00:03:16,879 --> 00:03:17,260
[CLAIRE] Okay.

37
00:03:18,220 --> 00:03:19,320
So I'm guessing that...

38
00:03:19,340 --> 00:03:47,700
[PETER] It was just to add something. So, you know, some, having spent a lot of time in support for databases was really valuable because that's the organization which talks to users, which talks to customers. So you kind of get the other side of the story as well. You may think that one feature is really helpful and this is going to be the next big thing.

39
00:03:48,240 --> 00:03:56,640
And then later on, you realize that some things were overlooked and improvements are needed on the product side.

40
00:03:56,650 --> 00:04:08,220
So it's a very, very interesting and very valuable experience to actually be in this double agent situation where you're a champion for your users.

41
00:04:08,560 --> 00:04:14,880
But you also need to make sure that the business grows and the product evolves.

42
00:04:16,500 --> 00:04:17,519
[CLAIRE] Well, you read my mind.

43
00:04:17,680 --> 00:04:27,240
That's what I was wondering when you said you were in charge of the support business, because on a previous episode of Talking Postgres, David Rowley, who is a Postgres committer, was on.

44
00:04:27,580 --> 00:04:40,340
And he talked about how formative his time working, supporting customers at 2ndQuadrant was and how that has influenced to this day his work as an engineer and as a committer.

45
00:04:41,020 --> 00:04:50,760
So I was curious if that time in support at Percona, leading that team, has affected your worldview now at Ferret.

46
00:04:52,080 --> 00:04:53,820
[PETER] Absolutely. Yes, absolutely.

47
00:04:54,020 --> 00:04:58,800
That's actually part of the reason why we started the company.

48
00:04:59,160 --> 00:05:03,680
because if you are familiar with the MongoDB story,

49
00:05:03,980 --> 00:05:08,900
MongoDB was this really big up-and-coming database in,

50
00:05:09,560 --> 00:05:14,420
well, I would say starting 2014, we started seeing MongoDB users.

51
00:05:15,140 --> 00:05:15,340
So

52
00:05:15,340 --> 00:05:19,720
that's when it started to become more popular

53
00:05:20,160 --> 00:05:25,300
and it started seeing production scenarios and we talked to the users.

54
00:05:26,080 --> 00:05:28,300
And of course there were problems,

55
00:05:28,560 --> 00:05:36,040
but the bigger problem was that they changed the license in 2018.

56
00:05:36,860 --> 00:05:43,360
So a lot of users who chose an open source database product

57
00:05:43,840 --> 00:05:50,480
for their database needs found themselves in a situation where they ended up

58
00:05:50,480 --> 00:05:56,120
with a proprietary or source available or however you want to call the SSPL license.

59
00:05:56,920 --> 00:06:05,000
And so I've seen this combination of technical problems or challenges as well as the legal ones.

60
00:06:05,080 --> 00:06:07,000
So that was the starting point.

61
00:06:07,000 --> 00:06:13,860
That was the problem statement FerretDB started with in 2021.

62
00:06:15,360 --> 00:06:23,440
[CLAIRE] So for people who are listening, who are perhaps unfamiliar with FerretDB, let's just go there.

63
00:06:23,740 --> 00:06:24,980
What is FerretDB?

64
00:06:26,420 --> 00:06:32,500
I know I said in the beginning, in the introduction, a MongoDB alternative, and you just hinted at that as well.

65
00:06:32,630 --> 00:06:36,500
But can we peel the onion and just go one layer deeper than that?

66
00:06:37,100 --> 00:06:37,540
[PETER] Absolutely.

67
00:06:37,650 --> 00:06:38,900
But this is a huge onion.

68
00:06:40,880 --> 00:06:41,980
[CLAIRE] With many, many layers.

69
00:06:42,680 --> 00:06:43,120
[PETER] Yeah.

70
00:06:43,560 --> 00:06:48,320
Like you go to the vegetable section of the grocery store and you see this giant onion.

71
00:06:48,600 --> 00:06:49,540
Well, that's FerretDB.

72
00:06:50,400 --> 00:06:57,780
So FerretDB is basically an open source MongoDB alternative.

73
00:06:59,140 --> 00:07:08,960
We take Postgres as the storage layer and we make it speak MongoDB.

74
00:07:09,060 --> 00:07:11,780
So we emulate the MongoDB API.

75
00:07:12,660 --> 00:07:22,240
And so users can connect their MongoDB applications to FerretDB and FerretDB will store their data

76
00:07:22,640 --> 00:07:28,640
in Postgres, meaning that we turn Postgres into a MongoDB compatible database.

77
00:07:28,850 --> 00:07:35,100
And what compatible means is that users don't have to rewrite anything.

78
00:07:35,210 --> 00:07:38,860
They don't have to change their habits, their frameworks, their tools.

79
00:07:39,540 --> 00:07:48,900
can just keep using MongoDB related or MongoDB compatible frameworks whether that is a JavaScript

80
00:07:49,280 --> 00:07:56,900
framework or some application building tool or something else and just use it with Postgres and

81
00:07:57,080 --> 00:08:07,280
the MongoDB application will not notice that it is not running on MongoDB proper but it runs on

82
00:08:07,140 --> 00:08:11,340
on Postgres and I still think this is crazy, crazy cool.

83
00:08:12,400 --> 00:08:13,720
[CLAIRE] It is crazy cool.

84
00:08:16,000 --> 00:08:19,420
Okay, so we're going to dive into the Postgres part.

85
00:08:19,760 --> 00:08:22,940
Obviously, the name of this podcast is Talking Postgres after all.

86
00:08:23,420 --> 00:08:27,040
But first I want to know a little bit more about how you got started.

87
00:08:27,170 --> 00:08:31,020
Like you talked about MongoDB changed their license in 2018.

88
00:08:31,840 --> 00:08:35,599
Obviously, from your place at Percona, you observed that.

89
00:08:36,400 --> 00:08:36,719
Then what?

90
00:08:37,240 --> 00:08:39,919
How did you go about founding a company?

91
00:08:40,110 --> 00:08:41,060
How did it happen?

92
00:08:41,510 --> 00:08:42,400
Did it happen overnight?

93
00:08:43,320 --> 00:08:45,160
A nine-month period maybe instead?

94
00:08:45,900 --> 00:08:46,320
Like what?

95
00:08:47,010 --> 00:08:47,700
Tell me about it.

96
00:08:49,780 --> 00:08:53,780
[PETER] So I left Percona around 2016,

97
00:08:54,450 --> 00:08:57,880
so I was actually not there when the license change happened.

98
00:08:58,190 --> 00:08:58,380
I

99
00:08:58,380 --> 00:08:59,360
was still very much

100
00:08:59,360 --> 00:09:01,980
in touch with the community though.

101
00:09:02,140 --> 00:09:15,380
So Percona's founder, Peter Zaitsev, who you might be familiar with, is a very well-known person in the open source database space and founder of Percona.

102
00:09:15,960 --> 00:09:29,180
So we kept in touch after I left and we observed all of these changes and we were very active in discussing how is this going to change the course for MongoDB users.

103
00:09:29,900 --> 00:09:37,180
We've also seen Postgres to evolve into something which users really, really like.

104
00:09:37,540 --> 00:09:49,700
So in 2018, we kind of expected that the community is going to fork MongoDB and that there is going to be an alternative,

105
00:09:50,400 --> 00:09:54,060
such as what happened with Redis and the alternative Valkey,

106
00:09:54,300 --> 00:10:03,480
where Redis moved to SSPL and Valkey basically got started overnight by the community as a fork.

107
00:10:04,060 --> 00:10:08,240
But that is not what happened with MongoDB.

108
00:10:08,660 --> 00:10:15,220
So we were kind of waiting and expecting that something is going to happen on that front

109
00:10:15,400 --> 00:10:17,100
and forks are going to appear.

110
00:10:17,700 --> 00:10:38,960
But the only thing we've seen, not that that was not a big thing, but kind of unexpected, that AWS came up with their MongoDB alternative and Azure, Microsoft Azure came up with their MongoDB alternative, presumably not based on MongoDB code.

111
00:10:39,440 --> 00:10:51,940
So even though there was no fork, alternatives appeared. But these alternatives still, well, they were not open source and they were tied to specific cloud vendors.

112
00:10:52,800 --> 00:11:00,420
So by 2021, it became clear that the fork is not going to happen.

113
00:11:00,800 --> 00:11:17,520
Well, maybe much earlier than that, but in 2021, we were thinking, is there a possibility that we can just either fork MongoDB or create an open source alternative,

114
00:11:17,600 --> 00:11:25,600
a truly open source alternative for MongoDB users who were surprised by this license change and

115
00:11:25,720 --> 00:11:35,080
impacted by this license change. So the actual conversation, it happened in pretty weird

116
00:11:35,480 --> 00:11:46,300
circumstances. So with Peter, we went to this epic trip to the Himalayas. And that means we went to

117
00:11:46,180 --> 00:11:56,800
to the K2 base camp, which takes about two weeks in total and you sleep in very nomadic circumstances

118
00:11:57,620 --> 00:12:01,080
on a tent, most of the time on a glacier.

119
00:12:01,760 --> 00:12:15,640
And you know, during those two weeks you speak about family, you speak about hobbies, you just try to kill time at some point.

120
00:12:16,260 --> 00:12:17,600
[CLAIRE] Kill time and stay warm.

121
00:12:18,540 --> 00:12:20,520
[PETER] And stay warm and stay alive.

122
00:12:20,760 --> 00:12:23,480
Yes, that's also important.

123
00:12:24,120 --> 00:12:25,800
[CLAIRE] What's the altitude at K2 Base Camp?

124
00:12:27,240 --> 00:12:27,900
[PETER] What was that? Sorry.

125
00:12:28,460 --> 00:12:30,800
[CLAIRE] What's the altitude at K2 Base Camp?

126
00:12:30,870 --> 00:12:32,320
Do you know off the top of your head?

127
00:12:33,260 --> 00:12:39,320
[PETER] K2 Base Camp is about 5,200 meters.

128
00:12:40,130 --> 00:12:40,280
And

129
00:12:40,280 --> 00:12:41,060
that is about

130
00:12:41,060 --> 00:12:43,420
17K feet for

131
00:12:43,420 --> 00:12:44,200
folks in the

132
00:12:44,200 --> 00:12:44,440
US.

133
00:12:45,520 --> 00:12:57,920
So yeah, that was pretty extreme. That was my first time above that altitude and that's when you can't really have a rest.

134
00:12:58,310 --> 00:13:07,540
Your heart rate when you sleep is still above like 90 beats per minute, so you don't really have a good night's sleep.

135
00:13:07,800 --> 00:13:16,520
These are the circumstances where we came up with the idea of FerretDB where we were thinking

136
00:13:17,380 --> 00:13:27,240
maybe it is possible to take an existing database engine and turn it into MongoDB and we did not know

137
00:13:28,160 --> 00:13:36,180
whether that is the same thing as what the folks at Azure and AWS did but we assumed that they did

138
00:13:36,120 --> 00:13:46,360
not fork MongoDB and we also assumed that it has to be something related to Postgres under the hood.

139
00:13:49,200 --> 00:13:57,660
So in July 2021 that's where we went to this trip. We were in a hotel in Islamabad and we decided

140
00:13:57,750 --> 00:14:03,320
that we are going to start the company which was called MangoDB. It's very

141
00:14:03,320 --> 00:14:04,240
controversial,

142
00:14:04,700 --> 00:14:05,140
I know.

143
00:14:06,060 --> 00:14:14,160
uh that's when that's when we embarked in this uh in this uh adventure and uh we involved uh

144
00:14:15,220 --> 00:14:21,300
my co-founder Alexey Palashchenko right away who is also a former Perconian so

145
00:14:21,900 --> 00:14:26,040
like this the three of us started this uh this uh adventure

146
00:14:28,440 --> 00:14:32,220
[CLAIRE] That's quite a quite a birthplace for

147
00:14:32,220 --> 00:14:36,000
a database company. [Yeah, yeah it is]

148
00:14:36,620 --> 00:14:48,220
All right. So why did you choose Postgres? You said you were there at altitude and you knew that it needed to have Postgres involved, but why?

149
00:14:49,860 --> 00:14:52,760
[PETER] Maybe because of the altitude. Just joking.

150
00:14:56,220 --> 00:15:03,500
The reason why we chose Postgres is because Postgres, first of all, is truly open source.

151
00:15:04,140 --> 00:15:19,800
And you know what, with MySQL, which was our main database technology we cared about for the most part at Percona, it's dangerously close to Oracle nowadays and some users don't appreciate it.

152
00:15:19,900 --> 00:15:24,040
And it's also not as good with extensions.

153
00:15:24,770 --> 00:15:31,580
So Postgres extensions are very mature and popular.

154
00:15:32,360 --> 00:15:37,920
And with MySQL that is not really the case as far as we understand.

155
00:15:38,960 --> 00:15:48,099
But the main reason why we chose Postgres over anything else is because the community is very much dedicated

156
00:15:48,180 --> 00:15:56,840
to make it work in very different scenarios. So Postgres and its community is unique in the sense

157
00:15:56,900 --> 00:16:04,960
that they are very proud of or we are very proud of Postgres and we want to make it succeed and we

158
00:16:05,280 --> 00:16:15,219
want to make sure that more and more users can benefit from the advantages of Postgres and we

159
00:16:15,240 --> 00:16:26,320
needed this kind of dedication and power to pull this off. We couldn't have done anything like that

160
00:16:26,870 --> 00:16:36,620
with the help of the community. And from day one, when we published our tech demo on GitHub,

161
00:16:37,920 --> 00:16:48,840
I think in two or three days we got 5k stars, which was a very good indicator that this is something we need to move forward with.

162
00:16:49,150 --> 00:17:02,700
Most of those stars were coming from the Postgres community around the world because they really wanted to see Postgres succeed in this kind of use case as well.

163
00:17:02,880 --> 00:17:18,620
So all in all, I think my answer would be definitely the community and definitely the way the community engages with newcomers, with people who are trying to do something very, very different.

164
00:17:19,079 --> 00:17:22,579
And that helped us a lot along the way.

165
00:17:24,520 --> 00:17:28,540
[CLAIRE] Did you consider other databases?

166
00:17:29,160 --> 00:17:34,600
I mean, you told me already a second ago why MySQL wasn't a candidate, but I'm wondering

167
00:17:34,650 --> 00:17:41,600
if you did any kind of bake-off or performance benchmarking or testing, or if it just, like

168
00:17:41,720 --> 00:17:47,580
the analysis was maybe just in your minds, it was an obvious no-brainer.

169
00:17:49,179 --> 00:17:51,900
[PETER] Well, there were a couple considerations.

170
00:17:53,020 --> 00:18:03,220
First of all, we don't just support Postgres, we also have support for SQLite,

171
00:18:04,160 --> 00:18:10,420
because SQLite is this very lightweight and very much embeddable database,

172
00:18:10,900 --> 00:18:20,460
which can be enough for lots of use cases without having to spin up something much more serious like Postgres.

173
00:18:20,680 --> 00:18:32,840
So we do have support for SQLite, but it does not bring the performance and the compatibility as what the Postgres backend does with FerretDB.

174
00:18:33,560 --> 00:18:58,100
And we also had community contributions for other database technologies like SAP, where SAP implemented SAP HANA support for FerretDB, which was really surprising as it did not happen without our intervention or much help at all.

175
00:18:58,200 --> 00:19:03,960
It just appeared overnight, but that's the power of open source.

176
00:19:04,050 --> 00:19:05,700
And we were very happy to see that.

177
00:19:05,860 --> 00:19:07,560
But back to our choices.

178
00:19:07,880 --> 00:19:13,620
So we had lots of requests for SQLite, so we obviously did that.

179
00:19:14,020 --> 00:19:19,680
We also had lots of requests for MySQL, but ultimately we decided against it

180
00:19:19,780 --> 00:19:27,179
because the community was not that engaged and it was just...

181
00:19:28,280 --> 00:19:38,380
It was just not something which would have given us lots of extra stuff over Postgres.

182
00:19:39,720 --> 00:19:43,760
That was not something we were interested in in general.

183
00:19:45,380 --> 00:19:54,299
There was also a third thing which we've seen and that is we were looking at AWS DocumentDB

184
00:19:54,320 --> 00:19:56,660
and Azure Cosmos DB for MongoDB.

185
00:19:57,300 --> 00:20:13,200
And we kind of had a feeling that these teams also used Postgres because of some of the limitations we were seeing in the documentation were crazy similar to Postgres's limitations.

186
00:20:13,680 --> 00:20:33,760
And that was also a sign that we might be on the right track if these large organizations with very smart developers arrive to the same conclusion as we did when it comes to Postgres being capable of doing all of this.

187
00:20:35,400 --> 00:20:35,920
[CLAIRE] Got it.

188
00:20:36,580 --> 00:20:41,660
Okay, so you just mentioned the Azure Cosmos DB for MongoDB team.

189
00:20:43,240 --> 00:20:56,160
And I know that FerretDB now runs on top of something called DocumentDB, which was an open source offering released by Microsoft a couple of months ago, back in the beginning of this year.

190
00:20:56,900 --> 00:21:00,140
So can you explain that to our listeners?

191
00:21:01,300 --> 00:21:23,000
[PETER] Absolutely. So how that happened is that we've been working on FerretDB for over a year when we got engaged with the Microsoft Cosmos DB team.

192
00:21:25,820 --> 00:21:32,960
they were interested in FerretDB and we were interested in what they did

193
00:21:33,700 --> 00:21:43,660
because we kind of had the community around this open source implementation of a MongoDB alternative

194
00:21:44,020 --> 00:21:54,579
whereas they had a powerful Postgres extension which at that point powered the MongoDB compatible

195
00:21:54,600 --> 00:22:02,440
service on Azure Cosmos DB for years at that point.

196
00:22:02,840 --> 00:22:09,540
So we engaged in conversations on how can we join forces and how can we make sure that

197
00:22:10,440 --> 00:22:15,580
we can combine the positives of the two products.

198
00:22:15,680 --> 00:22:17,720
And we started working on that.

199
00:22:17,980 --> 00:22:22,080
And, you know, I'm not sure how much I can say about this.

200
00:22:22,080 --> 00:22:23,980
I don't want to speak for Microsoft.

201
00:22:24,400 --> 00:22:33,280
I just know that an organization like Microsoft is obviously large and open sourcing something

202
00:22:34,040 --> 00:22:36,480
definitely needs lots of approvals.

203
00:22:36,570 --> 00:22:42,700
And we were seeing that during the time when we worked together or while we still work together

204
00:22:43,010 --> 00:22:43,880
with the team there.

205
00:22:44,700 --> 00:22:51,400
And it was really good to see that Microsoft is trying to do the right thing and they were

206
00:22:52,800 --> 00:22:59,340
assigning lots of resources into making sure that this open sourcing of their MongoDB compatible

207
00:22:59,820 --> 00:23:07,200
database solution alongside with FerretDB can actually happen. And the reason why this is very

208
00:23:07,560 --> 00:23:16,460
important and the reason why I think this is one of the greatest steps towards FerretDB's mission

209
00:23:16,800 --> 00:23:23,960
at this point, which is to bring MongoDB back to open source is because the more alternatives we

210
00:23:24,180 --> 00:23:35,740
have on the market for a MongoDB compatible database solution, while it's really good and

211
00:23:36,280 --> 00:23:43,659
there should be lots of alternatives of course, but an open standard is also needed. So if you

212
00:23:43,440 --> 00:23:53,020
think about it, if Microsoft, Amazon, FerretDB, SingleStore and other companies, Oracle, come up

213
00:23:53,020 --> 00:24:00,480
with their own implementations of a MongoDB compatible database, while it provides choices

214
00:24:01,360 --> 00:24:09,259
for the users, it also creates this environment where if these alternatives are not based on a

215
00:24:09,280 --> 00:24:13,380
common open standard then the features and the

216
00:24:13,380 --> 00:24:13,840
behavior

217
00:24:13,840 --> 00:24:16,040
of these products will be very different.

218
00:24:16,670 --> 00:24:25,740
So by working together with Microsoft we combined the two uh we combined two of the

219
00:24:26,860 --> 00:24:36,459
several well-known MongoDB alternatives out there and we placed them on a single foundation which

220
00:24:36,480 --> 00:24:46,720
enables users to migrate and use their existing know-how to actually move to an alternative and

221
00:24:46,800 --> 00:24:55,820
they can use this know-how and migrate between these alternatives away from MongoDB without the

222
00:24:56,040 --> 00:25:05,739
fear of getting locked into yet another product because that's the problem with a missing open

223
00:25:05,760 --> 00:25:12,700
standard. When you think about SQL, you can use SQL across multiple different products, but when it

224
00:25:12,710 --> 00:25:18,460
comes to MongoDB and their query language and all that, there is no standard behind it. So the moment

225
00:25:18,530 --> 00:25:25,480
you create an alternative, that is going to be a very unique implementation of what MongoDB does.

226
00:25:26,020 --> 00:25:35,700
So all in all, our work with Microsoft was really interesting and we are looking forward to

227
00:25:36,440 --> 00:25:45,320
pushing forward for an open standard together by keeping our products compatible and by making sure

228
00:25:45,480 --> 00:25:49,600
that others will join this effort.

229
00:25:50,860 --> 00:25:55,179
[CLAIRE] And just in simple terms, the open source DocumentDB

230
00:25:55,200 --> 00:26:02,740
layer that FerretDB now runs on top of. DocumentDB includes, I think, a Postgres extension, correct?

231
00:26:04,280 --> 00:26:08,480
[PETER] So DocumentDB itself is a Postgres extension, yes.

232
00:26:08,980 --> 00:26:13,580
[CLAIRE] Okay. And which goes back to what you said in the beginning, you were talking about

233
00:26:14,020 --> 00:26:19,220
the reasons you chose Postgres and you felt like the whole extension ecosystem was really strong

234
00:26:19,340 --> 00:26:23,840
in that space. And I don't know if you know my background, but the whole way I got involved in

235
00:26:23,680 --> 00:26:28,400
in the Postgres open source project was by joining Citus Data years ago, back in like

236
00:26:28,620 --> 00:26:28,840
2017.

237
00:26:29,799 --> 00:26:32,960
And Citus is an extension to Postgres as well.

238
00:26:33,440 --> 00:26:38,020
So I've seen firsthand just the power of the extension ecosystem.

239
00:26:38,110 --> 00:26:44,220
And it still boggles my mind that if you go back to the very first paper about the Postgres

240
00:26:44,380 --> 00:26:52,779
database from, gosh, the 1990s, I think, you know, one of the core requirements was that

241
00:26:52,800 --> 00:26:59,260
it be extendable and to see it have played out in the way that it has enabling like the innovation

242
00:26:59,800 --> 00:27:08,880
underneath FerretDB and enabling situs and enabling PostGIS, I'm still wowed by it all. [Indeed.]

243
00:27:08,880 --> 00:27:14,420
OK, sorry I'll get off that soapbox uh all right so how how is FerretDB

244
00:27:14,590 --> 00:27:22,760
working out for you? Do you have any interesting customer stories to share um or or maybe even um

245
00:27:23,300 --> 00:27:28,220
customer pain points, like brick walls you ran into that you had to break your way through

246
00:27:28,530 --> 00:27:30,740
in order to make your customers happy.

247
00:27:32,240 --> 00:27:38,140
[PETER] So just to tie this in with the conversation about extensions and how good that is.

248
00:27:39,840 --> 00:27:43,220
So the main problem has always been, well, two things.

249
00:27:43,440 --> 00:27:46,000
One, compatibility and two, performance.

250
00:27:46,780 --> 00:28:03,160
And for the most part, for the initial year, we focused on compatibility because Alexey, my co-founder and I were talking a lot about where to start actually.

251
00:28:03,300 --> 00:28:16,240
You have a lot of comments to implement, you have a lot of features to implement, and you also have quite a good performance in terms of what MongoDB can deliver to users.

252
00:28:17,460 --> 00:28:23,280
And we kind of need to have both in order to provide a good alternative.

253
00:28:23,680 --> 00:28:30,940
But we had very limited resources, of course, and it's just not possible to focus on everything.

254
00:28:30,960 --> 00:28:44,780
So we ended up focusing on compatibility because our assumption was that there is no value in FerretDB if it just performs, but it is not compatible.

255
00:28:45,100 --> 00:28:56,260
Whereas if FerretDB is compatible with MongoDB, that's already valuable to users, even if it does not perform the same way as MongoDB.

256
00:28:56,800 --> 00:29:03,300
And by the way, it still doesn't, so we are very open about that part.

257
00:29:03,900 --> 00:29:17,340
So when it comes to extensions, we did not start to implement FerretDB as an extension.

258
00:29:17,470 --> 00:29:26,520
It was a proxy which translated SQL queries between MongoDB drivers and Postgres.

259
00:29:26,740 --> 00:29:39,600
So we got the MongoDB API on one side and the Mongo queries and we translated back and forth between Postgres.

260
00:29:39,740 --> 00:30:02,020
But the obvious problem in this is not just the overhead, but also some of the missing things in Postgres core, like certain data types, which are expected to exist from the MongoDB side in BSON, but it was not something which we had in Postgres JSON.

261
00:30:02,100 --> 00:30:22,580
So these workarounds were really detrimental to the performance of FerretDB, but it enabled us to be compatible.

262
00:30:23,160 --> 00:30:44,680
So if you think of FerretDB 1x, which was not based or is not based on an extension, it is fairly compatible, but it does not perform due to these missing features in Postgres to support MongoDB workloads.

263
00:30:45,320 --> 00:30:50,720
And when we started working with the Microsoft DocumentDB team and they

264
00:30:50,720 --> 00:30:54,120
provided their...

265
00:30:54,120 --> 00:30:56,220
[CLAIRE] Which I want to be clear, that's not me.

266
00:30:57,260 --> 00:30:58,780
That's a whole different team at Microsoft.

267
00:30:59,140 --> 00:31:00,100
I'm on the Postgres team.

268
00:31:00,130 --> 00:31:01,360
So anyway, keep going.

269
00:31:02,060 --> 00:31:04,980
[PETER] Microsoft is indeed large.

270
00:31:07,260 --> 00:31:13,160
Yes, as we came to understand, or not understand, the org chart, that is.

271
00:31:14,840 --> 00:31:31,640
So the main point of the Postgres extension was to introduce these missing features without having to change anything in core Postgres.

272
00:31:31,680 --> 00:31:53,780
Because if you fork core Postgres and you add features there, then you kind of have this strange flavor of Postgres and you can just tell users that, hey, if you have Postgres, you can just slap FerretDB on top of it and be compatible and perform well with MongoDB workloads.

273
00:31:54,320 --> 00:32:04,680
And you need to have this different flavor of Postgres, which is kind of hard to manage from an operational standpoint.

274
00:32:04,850 --> 00:32:11,900
But those users who are equipped with the ability to just add Postgres extensions,

275
00:32:12,090 --> 00:32:23,120
and if the extension can add all of these features to Postgres in a performant way, then everyone wins.

276
00:32:23,220 --> 00:32:28,560
And this is exactly the power of Postgres extensions.

277
00:32:28,710 --> 00:32:36,340
And I fully believe that some of these features which live in extensions,

278
00:32:37,080 --> 00:32:43,200
if they are used enough, they will end up in core Postgres.

279
00:32:44,900 --> 00:32:59,960
So with the Microsoft team, we worked in combining FerretDB and the DocumentDB Postgres extension into one Docker image anyone can run.

280
00:33:01,440 --> 00:33:09,860
And that provides a MongoDB-like experience, not just in Azure, but anywhere the user wants to run it.

281
00:33:09,900 --> 00:33:16,780
And this is what users want.

282
00:33:17,240 --> 00:33:23,340
This is what someone trying to move away from the MongoDB vendor lock-in would actually want.

283
00:33:23,500 --> 00:33:32,980
Because that's a true alternative, which is not tied to any given vendor out there.

284
00:33:34,380 --> 00:33:38,560
[CLAIRE] Can we circle back to something you said probably about 90 seconds ago?

285
00:33:38,940 --> 00:33:46,440
You mentioned BSON and JSON. So for someone who's listening who is um has worked in Postgres for

286
00:33:46,440 --> 00:33:53,060
years and is obviously familiar with JSON and JSONB what what is BSON what's the connection between

287
00:33:53,080 --> 00:33:57,200
those two things?

288
00:33:57,200 --> 00:34:08,040
[PETER] So JSON, both JSON and BSON, are basically the document

289
00:34:08,060 --> 00:34:16,820
database workload support in relational database. JSON is, if I remember correctly,

290
00:34:16,820 --> 00:34:24,560
it's a JavaScript Object Notation and BSON is a Binary JavaScript Object Notation.

291
00:34:29,960 --> 00:34:37,659
BSON is, I'm not sure if you're familiar with how MongoDB actually came to be.

292
00:34:38,100 --> 00:34:44,360
So they actually use a relational database engine called WiredTiger.

293
00:34:44,440 --> 00:34:50,720
So they still had to implement document database capability in a relational database engine.

294
00:34:51,120 --> 00:34:56,080
And that's exactly what Postgres did as well with JSON.

295
00:34:58,080 --> 00:35:11,920
JSON contains basic data types, whereas BSON comes with some extra data types, which MongoDB uses very heavily.

296
00:35:12,960 --> 00:35:22,480
It does use more space, it supports indexes, and it stores data.

297
00:35:23,240 --> 00:35:30,420
And maybe Alexey can correct me if he's listening, my co-founder Alexey Palashchenko,

298
00:35:30,500 --> 00:35:42,200
but well, I think from the name it's clear that it also stores data in binary whereas in a standard format.

299
00:35:42,710 --> 00:35:53,520
So these differences are pretty big and using just JSON to emulate BSUN while it's possible

300
00:35:53,630 --> 00:35:59,840
and we have quite extensive blog posts on how to do this.

301
00:36:00,440 --> 00:36:07,400
Ultimately it will never give you the performance which stock MongoDB would be capable of.

302
00:36:09,440 --> 00:36:14,760
[CLAIRE] So I know, or I believe as a CEO of this company, as the co-founder,

303
00:36:15,960 --> 00:36:18,760
you probably talk to a lot of people about Ferret, you talk to customers

304
00:36:19,600 --> 00:36:24,640
investors, interested like supporters out in the world, or advisors, or whatever.

305
00:36:24,880 --> 00:36:30,540
What are the kinds of things that surprise people, surprise your customers?

306
00:36:31,360 --> 00:36:35,680
Have there been any interesting lessons that you want to share?

307
00:36:37,660 --> 00:36:38,460
I know that's, well,

308
00:36:39,690 --> 00:36:40,840
I didn't prepare you for

309
00:36:40,840 --> 00:36:41,360
this question.

310
00:36:42,460 --> 00:36:50,180
[PETER] I'm enjoying not being prepared for questions because it actually gives

311
00:36:50,180 --> 00:36:53,540
me a moment to think about it,

312
00:36:55,220 --> 00:36:57,060
or opportunity to think about it.

313
00:36:57,920 --> 00:37:03,880
I would say that one of the biggest surprises customers usually,

314
00:37:04,180 --> 00:37:12,580
or users usually, have when thinking about moving to FerretDB

315
00:37:12,580 --> 00:37:14,040
is that it's actually possible.

316
00:37:15,180 --> 00:37:31,060
So most MongoDB users have a hard time to believe that Postgres is capable of doing all what MongoDB does.

317
00:37:31,280 --> 00:37:40,020
And it's quite cool to talk about this with them and introduce this concept to them.

318
00:37:40,320 --> 00:37:44,980
And, you know, some of these MongoDB users are not Postgres users.

319
00:37:45,040 --> 00:37:53,020
and they are not familiar and they think of Postgres as, well, what the MongoDB marketing team usually says,

320
00:37:53,070 --> 00:38:03,880
that Postgres is this archaic and outdated and horrible technology which is very hard to use and not good for you.

321
00:38:04,020 --> 00:38:10,780
This is verbatim what MongoDB marketing would tell a user who would inquire about Postgres,

322
00:38:11,020 --> 00:38:15,940
not just their marketing team, but in general, all of the content you see from MongoDB.

323
00:38:16,760 --> 00:38:25,160
They don't like Postgres and when we show MongoDB users that this is actually a viable alternative

324
00:38:25,580 --> 00:38:31,480
and it's available, then that's obviously a big surprise.

325
00:38:32,260 --> 00:38:48,180
And, you know, well, some iPhone users might or iOS users might not like this idea, but

326
00:38:50,580 --> 00:38:59,000
I believe that it's also surprising for those who see the variety of what's available out there.

327
00:38:59,420 --> 00:39:04,880
Think about all the different vendors you can go to when you want Postgres as a service, for example.

328
00:39:05,430 --> 00:39:23,040
So for a MongoDB user and for an iOS user, for example, the variety of what else is out there might be very, very surprising that you don't just have three vendors who can run MongoDB for you with essentially the same kind of pricing,

329
00:39:23,300 --> 00:39:31,140
but you can have 50 or 100 plus who can provide you Postgres as a service,

330
00:39:31,500 --> 00:39:38,500
run FerretDB on top of it and provide you a better experience than MongoDB

331
00:39:38,840 --> 00:39:43,540
could when it comes to the whole package, like availability or extra features

332
00:39:44,600 --> 00:39:48,140
or combined offerings or just pricing in general.

333
00:39:48,260 --> 00:39:50,680
So I believe that this is the most surprising thing,

334
00:39:50,800 --> 00:39:57,800
that you have users who were logged into some certain platform or MongoDB Atlas or

335
00:39:58,040 --> 00:40:07,320
whatever else, and we can introduce this whole ecosystem to them, which is much

336
00:40:07,320 --> 00:40:12,980
more colorful and comes with a lot more opportunities and flexibility than they

337
00:40:13,940 --> 00:40:15,400
are used to.

338
00:40:15,700 --> 00:40:25,960
I believe this is the most common surprise which we experience when talking to these users.

339
00:40:27,880 --> 00:40:33,740
[CLAIRE] I wrote down the adjectives you shared, which I completely disagree with when it comes to

340
00:40:33,880 --> 00:40:37,860
Postgres. Archaic, outdated, horrible, not good for you. I do

341
00:40:37,860 --> 00:40:39,140
not agree with any of those.

342
00:40:39,140 --> 00:40:40,160
[PETER] Not my words. Not my words.

343
00:40:42,060 --> 00:40:49,200
[CLAIRE] Good, good, good. Someone told me that Ferret is written in Go, is that right?

344
00:40:51,279 --> 00:41:00,260
[PETER] Yes, Ferret is written in Go and this has been consistent for the very beginning even though

345
00:41:01,020 --> 00:41:09,160
some people wanted to convert us to Rust early on and later on as well, but we believe in Go and we

346
00:41:09,780 --> 00:41:10,520
are Go shop.

347
00:41:11,340 --> 00:41:17,840
[CLAIRE] Okay. Is that, I mean, does it matter to users or to customers or is that just an

348
00:41:18,140 --> 00:41:26,140
interesting thing that some developers, particularly ones who are, have preferences and languages care

349
00:41:26,300 --> 00:41:26,480
about?

350
00:41:28,340 --> 00:41:34,960
[PETER] You know, some users have preferences, but I believe that they are the minority. So some

351
00:41:34,980 --> 00:41:44,300
users have extensive experience with Go and we have some capabilities which they can leverage as

352
00:41:46,500 --> 00:41:57,320
Go developers like we have some embedability feature in FerretDB which makes you able to just

353
00:41:57,380 --> 00:42:08,020
run FerretDB as a go library. Alexey might kill me saying this because it may not be fully

354
00:42:10,820 --> 00:42:19,880
specific or correct what I'm saying right now but my understanding is that we do offer some

355
00:42:21,680 --> 00:42:29,720
positive, you know, function, we provide some functionality which is

356
00:42:29,860 --> 00:42:35,200
specific to those who, who might also develop their applications, their MongoDB related

357
00:42:35,480 --> 00:42:42,980
applications in Go. But I would say it shouldn't matter. So I'm not interested in

358
00:42:43,340 --> 00:42:47,560
what language the OS I'm using is written in.

359
00:42:48,060 --> 00:42:51,920
And I believe that most database users

360
00:42:52,120 --> 00:42:53,840
would not be interested as well.

361
00:42:53,920 --> 00:42:56,860
Maybe DevOps teams would be interested,

362
00:42:57,160 --> 00:42:59,840
but I would say that's a minority.

363
00:43:01,080 --> 00:43:01,520
[CLAIRE] Okay.

364
00:43:04,840 --> 00:43:09,200
I'm going back to the fact that you wear this hat, right?

365
00:43:10,880 --> 00:43:16,240
I have this belief that sometimes the jobs people have or the roles they have in a company

366
00:43:17,240 --> 00:43:19,920
end up changing them, end up changing the worldview.

367
00:43:20,200 --> 00:43:24,360
So, I don't know, I'm making this assumption that you're CEO, you talk to a lot of people,

368
00:43:24,880 --> 00:43:28,840
you have to evangelize what Ferret's doing.

369
00:43:29,600 --> 00:43:33,460
And so that means you have to explain to people, like, why does open source matter?

370
00:43:34,720 --> 00:43:36,400
And I'm coming at this question with a bias.

371
00:43:36,620 --> 00:43:37,860
I think open source matters.

372
00:43:38,940 --> 00:43:49,120
But I'm curious whether you've come up with any analogies or any ways of helping people who don't already have their own belief that open source matters.

373
00:43:49,580 --> 00:43:51,160
How do you help get them there?

374
00:43:51,180 --> 00:43:52,800
How do you help explain it to them?

375
00:43:54,400 --> 00:43:56,580
[PETER] Well, that's a great and timely question.

376
00:43:58,020 --> 00:44:05,880
I'm also biased, of course, because similar to you, I've been working with open source for a long, long time.

377
00:44:06,000 --> 00:44:10,980
and I do believe that that's a good thing in technology.

378
00:44:12,820 --> 00:44:15,900
But there are some users who...

379
00:44:16,900 --> 00:44:23,220
Well, first of all, I don't think that it is their fault.

380
00:44:24,940 --> 00:44:30,600
So marketing around open source has been pretty murky

381
00:44:30,720 --> 00:44:41,340
or sometimes even downright, I would say, deliberately confusing, if you will,

382
00:44:42,080 --> 00:44:48,400
because lots of products were marketed or are marketed as open source,

383
00:44:48,660 --> 00:44:54,080
which are really not open source, and MongoDB is one of them.

384
00:44:54,920 --> 00:44:59,960
So when you come up with a license which is not open source, but say things like,

385
00:45:00,020 --> 00:45:03,140
"Hey, this is just as good as open source and more."

386
00:45:04,200 --> 00:45:12,040
You know, that's not open source and you're deceiving users to think that open source is how you define open source

387
00:45:12,400 --> 00:45:14,540
at a marketing team, at a large corporation.

388
00:45:15,520 --> 00:45:21,180
And I believe that we have a problem in our community, the open source community,

389
00:45:23,400 --> 00:45:32,100
where the voices of those who really understand what open source is and understand what is the open source definition

390
00:45:32,340 --> 00:45:48,099
and how licenses are expected to be adhered to these standards are not as loud as a billion dollar corporation

391
00:45:48,140 --> 00:45:52,500
who says things like, hey, the SSPL license is just as good as open source.

392
00:45:53,050 --> 00:46:04,940
So our voices are a lot less amplified as the voices of those who want to bend open source according to their business needs.

393
00:46:04,990 --> 00:46:15,099
And I think that one of the hats I'm wearing is trying to explain the difference between a false or fake open source license

394
00:46:15,120 --> 00:46:17,940
compared to real open source and I

395
00:46:17,940 --> 00:46:18,660
have lots

396
00:46:18,660 --> 00:46:22,620
of people who would say stuff like "hey, SSPL is open source"

397
00:46:22,680 --> 00:46:29,640
and again it's not their fault, that's what MongoDB or Redis or Elastic or some others

398
00:46:32,980 --> 00:46:43,120
told their users for years and you know I'm picking on SSPL, but it's BSL, and it's all of the other

399
00:46:45,299 --> 00:46:49,360
false or fake open source licenses included.

400
00:46:50,120 --> 00:46:55,200
And it's pretty hard to explain the difference.

401
00:46:55,430 --> 00:47:05,860
It's pretty hard to make a case that, hey, only the OSI approved licenses are real open source licenses.

402
00:47:06,460 --> 00:47:07,860
And someone would ask, you know, why?

403
00:47:08,780 --> 00:47:10,480
Who is the OSI to define?

404
00:47:10,760 --> 00:47:13,560
Why can't anyone else define what open source is?

405
00:47:13,640 --> 00:47:17,460
And in reality, anyone can use open source.

406
00:47:17,500 --> 00:47:18,480
It's not a trademark.

407
00:47:18,880 --> 00:47:29,040
It's not something which is protected by, you know, government organizations or the patent office or the trademark office or whatever else.

408
00:47:29,680 --> 00:47:39,000
Unfortunately, anyone can say that something is open source without complying with the open source definition.

409
00:47:40,160 --> 00:48:00,740
And so part of my job is to explain why the SSPL is bad for you, because in this specific case we are dealing with the SSPL and fortunately more and more people understand and more and more organizations understand that it's not as good as open source.

410
00:48:00,840 --> 00:48:18,700
Just last week, Redis, one of the newly SSPL-licensed products, announced that they are moving back to a proper open source license.

411
00:48:19,300 --> 00:48:35,960
Elastic did that, I think, last year. So I'm seeing positive trends in this area, but the problem is still the same.

412
00:48:36,460 --> 00:48:54,260
How can we define, how can we explain open source to those who are not spending their daily lives thinking about open source all the time and just want to benefit from the positive side of open source?

413
00:48:54,460 --> 00:48:56,200
That's definitely a challenge.

414
00:48:56,520 --> 00:48:59,660
And some voices are still louder than us.

415
00:49:01,540 --> 00:49:03,760
[CLAIRE] It is a tough thing to explain.

416
00:49:05,580 --> 00:49:18,660
For someone who's listening to this and wants to dive deep after the show, I have known Stephen O'Grady of RedMonk for years, and he is a brilliant explainer.

417
00:49:19,120 --> 00:49:24,180
He's been at a boutique analyst firm that he and James Governor co-founded at RedMonk.

418
00:49:24,920 --> 00:49:27,420
Gosh, since when did I first meet him?

419
00:49:27,710 --> 00:49:28,660
In the mid-90s?

420
00:49:29,140 --> 00:49:38,760
So he's been around the block for a while, focused on open source developer communities, and wrote a book called The New Kingmakers.

421
00:49:39,100 --> 00:49:43,520
Anyway, just yesterday, he published a blog post about this very topic that you just mentioned.

422
00:49:44,340 --> 00:49:48,960
And I dropped the link into the show notes or into the Discord, and I'll include it in the show notes.

423
00:49:49,440 --> 00:49:52,120
And it's called "Two Steps Forward, One Step Back."

424
00:49:52,180 --> 00:49:58,720
But he explains SSPL and AGPL and OSI approved licenses and why you might care.

425
00:49:59,300 --> 00:50:00,480
and why you should care

426
00:50:00,720 --> 00:50:02,860
and kind of gives a little bit of the backstory

427
00:50:03,340 --> 00:50:05,540
along what just happened at Redis

428
00:50:06,020 --> 00:50:07,980
because this is very much new news.

429
00:50:08,520 --> 00:50:10,180
So if anyone wants to dive deeper,

430
00:50:10,300 --> 00:50:12,020
that might be a good place to start.

431
00:50:12,200 --> 00:50:15,200
I don't know if you have your favorite places

432
00:50:15,420 --> 00:50:18,240
that you direct someone who wants to learn more.

433
00:50:19,900 --> 00:50:20,920
If you do, let me know

434
00:50:20,950 --> 00:50:22,940
and I'll drop that into the Discord as well, Peter.

435
00:50:24,260 --> 00:50:26,019
[PETER] So there is this very...

436
00:50:29,360 --> 00:50:32,980
mysterious website called ssplisbad.com.

437
00:50:33,880 --> 00:50:40,360
I don't know who did it, but I like to direct people there

438
00:50:41,400 --> 00:50:45,340
because it's not affiliated with any organization,

439
00:50:45,800 --> 00:50:47,720
although we don't know who made it.

440
00:50:47,760 --> 00:50:49,460
I promise it was not us.

441
00:50:50,600 --> 00:50:52,980
It actually predates FerretDB,

442
00:50:53,040 --> 00:51:02,600
but ssplisbad.com is definitely a good one. We also have some SSPL related blog posts on

443
00:51:03,300 --> 00:51:15,520
blog.ferretdb.io on our blog. So I think there are really strong and experienced voices

444
00:51:16,560 --> 00:51:24,620
all around the internet talking about this very topic and it's great to see that people not only

445
00:51:24,900 --> 00:51:34,040
recognize, experts not only recognize the need to talk about this, but the discussion is still very

446
00:51:34,200 --> 00:51:43,179
much alive years and years after SSPL appeared. And of course moves like Redis or Elastic moving back

447
00:51:43,240 --> 00:51:47,900
from SSPL to their original license, I think both were AGPL, maybe not,

448
00:51:50,040 --> 00:51:54,780
is definitely a positive change.

449
00:51:55,120 --> 00:52:01,960
And I think some bloggers and Salvatore Sanfilippo,

450
00:52:02,140 --> 00:52:05,300
the original author of Redis,

451
00:52:06,640 --> 00:52:11,939
explained how they expected SSPL to be accepted by the community

452
00:52:12,040 --> 00:52:13,860
and the community did not.

453
00:52:13,860 --> 00:52:15,540
And that's the power of community.

454
00:52:16,090 --> 00:52:17,820
That's the power of the community that,

455
00:52:18,730 --> 00:52:21,420
you know, our voices are heard by these organizations.

456
00:52:22,180 --> 00:52:25,660
They draw on the consequences and they take action.

457
00:52:25,830 --> 00:52:32,280
So it's not even pointless to talk about these problems

458
00:52:32,580 --> 00:52:37,820
as we see action on the organizational side.

459
00:52:40,320 --> 00:52:43,340
[CLAIRE] All right, so let's pivot away from licensing for a second.

460
00:52:44,580 --> 00:52:50,420
I want to talk a little bit more about you and kind of how you got started at FerretDB.

461
00:52:50,800 --> 00:52:55,700
I was looking at your official bio on the POSETTE website, and we'll come back to POSETTE in a second.

462
00:52:56,680 --> 00:53:01,300
And it said you have a quote unquote passion for reading and exploring.

463
00:53:02,040 --> 00:53:04,540
And someone might see that and think, yeah, yeah, yeah, whatever.

464
00:53:05,120 --> 00:53:08,600
But I was curious, like how, what do you read?

465
00:53:08,780 --> 00:53:14,260
And how does what you read influence your job, influence what you do for Ferret?

466
00:53:15,060 --> 00:53:15,880
Same for exploring.

467
00:53:16,080 --> 00:53:20,720
I mean, obviously, we already know that you went to the Himalayas and this company was

468
00:53:21,060 --> 00:53:26,500
founded as a result of that trip and your time in a tent at 17,000 feet with Peter Zaitsev.

469
00:53:27,960 --> 00:53:29,180
But yeah, tell me more.

470
00:53:29,820 --> 00:53:31,720
Passion for reading and exploring.

471
00:53:32,740 --> 00:53:38,300
[PETER] So the reading part, I wish I would have more time to read fiction.

472
00:53:39,080 --> 00:53:48,300
But that's actually not really part of my life nowadays or for the past couple years, definitely.

473
00:53:49,940 --> 00:53:52,860
But I'm reading a lot of Peter Drucker.

474
00:53:52,990 --> 00:53:55,380
I'm reading Dale Carnegie.

475
00:53:55,480 --> 00:54:11,800
I'm reading some original management-related authors whose work is often used to write new books on the matter.

476
00:54:11,960 --> 00:54:41,520
Like if you see all these Amazon bestsellers on how to manage organizations, on how to manage software, on how to do this or that in business, if you read some of the old school stuff out there, you realize that a large chunk of these new bestsellers are based on the original teachings, as it should be actually, of these great authors.

477
00:54:41,880 --> 00:54:45,040
So that is mostly what I'm reading.

478
00:54:45,200 --> 00:54:49,700
I'm also, you know, I don't smoke.

479
00:54:50,300 --> 00:54:51,080
I don't drink.

480
00:54:51,840 --> 00:54:52,640
I read Wikipedia.

481
00:54:53,380 --> 00:54:53,960
It's a problem.

482
00:54:54,820 --> 00:54:57,680
I can read the most

483
00:54:57,680 --> 00:55:02,480
random stuff from plants to space exploration.

484
00:55:03,680 --> 00:55:06,120
You know, it's a problem, I admit.

485
00:55:07,180 --> 00:55:11,840
But, you know, it's one of my favorite hobbies to just...

486
00:55:11,860 --> 00:55:21,420
explore and read about things which I may not even hear about if it's not for Wikipedia.

487
00:55:22,180 --> 00:55:28,600
I think Alexey mentioned, my co-founder, that he's suffering from the same addiction.

488
00:55:29,290 --> 00:55:39,040
So maybe we have these shared company values here where we read a lot of weird and random stuff on Wikipedia.

489
00:55:39,940 --> 00:55:56,760
When it comes to exploration, my friend and bad influence, Peter Zaitsev, and I went to lots of different mountains out there.

490
00:55:57,140 --> 00:56:06,500
Most of them are above 400 meters, but there are some even above 7, sorry, not 400, 4,000.

491
00:56:06,740 --> 00:56:14,640
And we even went to Aconcagua, that is 7,000 meters plus.

492
00:56:15,600 --> 00:56:16,900
[CLAIRE] Where? Say it again.

493
00:56:18,000 --> 00:56:19,340
[PETER] Aconcagua in Argentina.

494
00:56:19,980 --> 00:56:25,600
That's 22K or 23K feet for those in the US.

495
00:56:26,150 --> 00:56:34,660
So we do have this passion for mountaineering and I quite enjoy to go outside and just go to

496
00:56:34,500 --> 00:56:43,440
places which are very remote and where the situation may not be cozy because it kind of

497
00:56:44,460 --> 00:56:52,640
reintroduces some suffering into your life in terms of getting exposed to weather and

498
00:56:55,100 --> 00:57:04,460
really bad food and places where there's no beaten path. I quite enjoy that and I would

499
00:57:04,480 --> 00:57:07,040
to do it as much as I can.

500
00:57:07,200 --> 00:57:08,820
And this is how FerretDB was born.

501
00:57:08,980 --> 00:57:14,060
So, you know, it's proven that it stimulates the brain

502
00:57:15,380 --> 00:57:20,600
and, you know, there are some good ideas I have

503
00:57:21,560 --> 00:57:25,860
and some bad ideas when I come back from these trips.

504
00:57:26,360 --> 00:57:32,100
We actually have this initiative called Geeks Go Peaks,

505
00:57:32,720 --> 00:57:58,020
GeeksGoPeaks.com, shameless plug, where we are trying to introduce this concept to more and more people in IT who spend their days for the most part in front of some screen to go outside and do things which you never think you're even capable of doing.

506
00:57:58,220 --> 00:58:13,440
Our next trip is Via Ferrata trip near Bolzano, Italy in May, but if you check out the website, we do have some other trips planned,

507
00:58:14,170 --> 00:58:22,240
which are ranging from caving to mountaineering to exploring some abandoned stuff.

508
00:58:22,370 --> 00:58:25,740
I think that's just planned, but it will definitely happen.

509
00:58:25,900 --> 00:58:55,860
So, yeah, that's just an initiative which introduces this hobby to those who would say, "oh, I'm never going to be able to do that", or "oh, I'm too fat", or I'm too, you know, well, wimpy or less able or just too geeky.

510
00:58:55,900 --> 00:58:58,940
to go outside and climb a mountain.

511
00:58:59,360 --> 00:59:04,440
And our trips are a success for the most part.

512
00:59:04,700 --> 00:59:08,880
And lots of people realize that they can do so much more

513
00:59:09,520 --> 00:59:14,140
in the physical world than they thought they can.

514
00:59:14,170 --> 00:59:15,900
And that includes me as well.

515
00:59:15,900 --> 00:59:22,559
I never thought I would be able to see the K2 with my bare eyes

516
00:59:22,660 --> 00:59:29,920
and, you know, go there and experience the altitude and all that.

517
00:59:29,950 --> 00:59:36,200
And it turns out that we are much more capable of doing things than we think.

518
00:59:37,320 --> 00:59:39,800
[CLAIRE] I am way more selfish a person than you.

519
00:59:39,830 --> 00:59:41,360
I think it's amazing.

520
00:59:41,570 --> 00:59:43,840
I didn't know about this Geeks Go Peaks thing

521
00:59:43,840 --> 00:59:47,480
and that you're sharing your love of doing this

522
00:59:47,820 --> 00:59:51,620
and the benefits that you get from this mountaineering and this outdoor adventure.

523
00:59:51,700 --> 00:59:55,980
Like I go sailing in Greece every summer for a week or this year it'll be two weeks.

524
00:59:57,120 --> 01:00:01,440
And we we bare boat charter a boat and we go from island to island.

525
01:00:01,740 --> 01:00:09,400
And unless you're in charge like we are, like our friends, the biggest decision they have to make every day is like what color bathing suit am I going to wear?

526
01:00:09,860 --> 01:00:14,040
And it's it's amazing how it changes my perspective.

527
01:00:14,800 --> 01:00:16,840
You know, I get back to work and I really am,

528
01:00:18,100 --> 01:00:18,320
different.

529
01:00:19,380 --> 01:00:26,400
So, but I've never thought of sharing that, right, or making it available or encouraging other people to do it in that way.

530
01:00:26,680 --> 01:00:28,660
So very generous of you.

531
01:00:29,740 --> 01:00:39,140
[PETER] Well, you know, it's also, you know, I think the more people we have there, the better for us as well, right?

532
01:00:39,240 --> 01:00:51,580
We talk to new people, we hear new ideas, we share an experience much differently than if we would have went alone.

533
01:00:51,900 --> 01:01:01,620
So I don't think that this is generosity, but more like enhancing how we are doing this.

534
01:01:01,780 --> 01:01:07,580
And it's kind of like open source. Is open source generosity? I don't think it is.

535
01:01:07,640 --> 01:01:16,360
Open source is good for everyone involved if it's implemented the right way, if nobody's exploited.

536
01:01:17,900 --> 01:01:24,980
So it's kind of similar to open source where you share and you get things back in return.

537
01:01:25,060 --> 01:01:29,360
I think the concept is pretty similar if I think about it.

538
01:01:31,920 --> 01:01:32,420
[CLAIRE] All right.

539
01:01:32,780 --> 01:01:44,520
So you mentioned a second ago that when you do these amazing adventures, like your trip to the Himalayas, that you come up with some really good ideas, like FerretDB, but you also come up with some bad ideas.

540
01:01:44,870 --> 01:01:49,720
And when you said bad ideas, I thought to myself, yeah, like the name, MangoDB.

541
01:01:50,500 --> 01:01:52,180
So, which of course it isn't now.

542
01:01:52,400 --> 01:01:53,220
Now it's FerretDB.

543
01:01:53,450 --> 01:01:55,260
You didn't stick with MangoDB.

544
01:01:55,630 --> 01:01:59,500
But I'm curious, did you have any other bad names that you considered for this company?

545
01:02:01,460 --> 01:02:02,860
[PETER] We all have bad names.

546
01:02:03,460 --> 01:02:05,000
[CLAIRE] I like thinking about names.

547
01:02:05,270 --> 01:02:07,100
So to me, it's an interesting thing.

548
01:02:07,170 --> 01:02:08,720
So what will you share?

549
01:02:09,130 --> 01:02:11,380
Any other bad names?

550
01:02:12,720 --> 01:02:23,360
[PETER] Honestly, I think I have the document somewhere where we came up with lots of different names.

551
01:02:24,040 --> 01:02:35,720
And the reason why we named, well, FerretDB, initially MangoDB, is because we ate a lot of mangoes on the mountain

552
01:02:36,460 --> 01:02:43,200
and it kind of sounded like mongo. And then my father is a patent attorney and trademark attorney.

553
01:02:43,780 --> 01:02:54,600
And when I got home and I told him about MangoDB, he told me that this might not be the best idea, to

554
01:02:54,600 --> 01:02:55,140
put it

555
01:02:55,140 --> 01:02:55,480
simply.

556
01:02:56,660 --> 01:03:00,880
And of course, we kind of knew that this is going to be a project name.

557
01:03:01,500 --> 01:03:11,560
So the way how we came up with FerretDB is the three of us had quite a lot of calls, Alexey, Peter Zaitsev and I.

558
01:03:11,960 --> 01:03:20,280
And we discussed a lot of different names and I don't even know. There were different types of

559
01:03:20,340 --> 01:03:28,120
or different species of mangoes involved in the naming and then lots of animals.

560
01:03:29,700 --> 01:03:36,799
And the reason why we decided on Ferret is first of all because we had a domain which was available

561
01:03:37,940 --> 01:03:47,840
ferretdb.io, not ferretdb.com. We acquired that later when it became abandoned.

562
01:03:48,040 --> 01:03:56,660
ferretdb.com was the ferret database, which was done by a lovely lady somewhere,

563
01:03:57,400 --> 01:04:05,520
maybe in Canada, maybe in the US, where she created this database of the different types of ferrets

564
01:04:06,160 --> 01:04:10,060
and then she abandoned that domain and that's when we registered it.

565
01:04:11,320 --> 01:04:17,780
So that's when we got ferretdb.com, but it was crazy hard to come up with a name which did not exist already.

566
01:04:18,160 --> 01:04:23,020
And I think that's a pain whenever you start a company or a project.

567
01:04:23,200 --> 01:04:26,960
I envy you, Claire, if you like thinking about names.

568
01:04:29,660 --> 01:04:30,940
I'm not the same.

569
01:04:31,840 --> 01:04:37,400
I'm also having a daughter in two months, so that's also a naming challenge.

570
01:04:38,100 --> 01:04:39,340
But back to FerretDB.

571
01:04:40,060 --> 01:04:40,600
[CLAIRE] Congratulations.

572
01:04:41,980 --> 01:04:42,320
[PETER] Thank you.

573
01:04:42,860 --> 01:04:43,500
So the reason

574
01:04:43,500 --> 01:04:47,580
why we went with FerretDB is because first the domain was

575
01:04:47,840 --> 01:04:51,080
available and second, and we realized this later.

576
01:04:51,500 --> 01:04:58,140
So I'm not trying to say that this was deliberate, but in English, and none of

577
01:04:58,060 --> 01:05:04,680
us are native English speakers but in English there is such a thing as to ferret something out,

578
01:05:05,900 --> 01:05:13,660
which is to seek for something and fetch it and I think that's what the database does.

579
01:05:13,990 --> 01:05:20,820
So I think it turned out pretty good and in open source no one is going to

580
01:05:24,080 --> 01:05:31,640
flinch if your product is named after an animal. We have the Postgres elephant, the Hadoop elephant,

581
01:05:32,780 --> 01:05:37,260
the MySQL dolphin. So, ferret, why not?

582
01:05:38,140 --> 01:05:41,100
[CLAIRE] The Go language has a gopher, right?

583
01:05:41,100 --> 01:05:42,100
[PETER] A gopher, yes.

584
01:05:42,600 --> 01:05:43,360
Alexey has a

585
01:05:43,360 --> 01:05:46,940
lot of plush gophers, yes.

586
01:05:46,940 --> 01:05:51,040
I wonder what rust has, I don't know. Is it a rusty rebar?

587
01:05:52,540 --> 01:05:52,800
[CLAIRE] I thought

588
01:05:52,800 --> 01:05:55,440
it was a crustacean. [Maybe. Actually.]

589
01:05:56,600 --> 01:05:58,280
The Rust mascot language.

590
01:05:58,840 --> 01:05:59,200
Let's see.

591
01:05:59,320 --> 01:06:00,660
I'll look that up really quickly.

592
01:06:01,360 --> 01:06:03,160
Ferris is the unofficial mascot.

593
01:06:03,840 --> 01:06:06,160
Many Rust programmers call themselves Rustaceans.

594
01:06:06,560 --> 01:06:11,460
So the fact that I have to look this up shows you that I am not a Rust programmer, right?

595
01:06:12,440 --> 01:06:12,700
[PETER] Me

596
01:06:12,700 --> 01:06:13,180
neither,

597
01:06:13,420 --> 01:06:16,180
but Ferris the crab, that's almost ferret.

598
01:06:16,520 --> 01:06:16,620
See?

599
01:06:16,900 --> 01:06:20,600
So everything points to the direction of Ferret.

600
01:06:21,000 --> 01:06:21,540
[CLAIRE] Yeah.

601
01:06:22,300 --> 01:06:25,480
I've often said that all good open source projects have a mascot.

602
01:06:25,980 --> 01:06:29,180
And for whatever reason, it's nice.

603
01:06:31,380 --> 01:06:37,860
I worked at Citus for a couple of years before kind of moving my focus over to Postgres more

604
01:06:38,200 --> 01:06:38,360
generally.

605
01:06:38,640 --> 01:06:45,400
And at Citus, our mascot was the Elicorn, which was part elephant in homage to Postgres and

606
01:06:45,660 --> 01:06:50,260
then part unicorn, because the idea was by scaling and distributing Postgres, we made

607
01:06:50,300 --> 01:06:50,620
it magic.

608
01:06:51,580 --> 01:06:52,080
[PETER] So that,

609
01:06:52,080 --> 01:06:57,980
that's a bit more creative than what we did.

610
01:06:58,000 --> 01:07:02,480
A unicorn elephant is definitely original for sure.

611
01:07:03,240 --> 01:07:06,020
[CLAIRE] Well, I'm glad you brought up the whole mascot thing

612
01:07:06,240 --> 01:07:09,400
because in researching for the show,

613
01:07:09,940 --> 01:07:12,520
I'm a big fan of the Postgres Weekly newsletter

614
01:07:13,160 --> 01:07:16,680
that Cooperpress, Peter Cooper, publishes every week.

615
01:07:17,260 --> 01:07:21,460
I find it a really useful way to kind of try to stay current.

616
01:07:22,200 --> 01:07:26,400
That and the whole Planet Postgres syndication in the world that I work in.

617
01:07:26,900 --> 01:07:31,020
And anyway, I think it was earlier in March at some point.

618
01:07:32,540 --> 01:07:39,200
One of your blogs or articles got linked to at the very top of Postgres Weekly that week.

619
01:07:39,620 --> 01:07:45,460
And that the graphic that he had at the top of the newsletter that week was a ferret and an elephant kind of looking at each other.

620
01:07:46,080 --> 01:07:47,840
So, you know, it

621
01:07:47,840 --> 01:07:49,420
makes for good artwork.

622
01:07:50,560 --> 01:07:58,240
[PETER] Yeah, especially in the age of AI or, you know, generative AI, definitely some crazy stuff.

623
01:07:58,370 --> 01:08:02,500
And I agree that Postgres Weekly is just amazing.

624
01:08:02,880 --> 01:08:15,800
And it's, you know, I'm not a fan of a lot of newsletters, but that definitely stands out as something where you can actually keep your finger on the pulse of the Postgres

625
01:08:15,820 --> 01:08:23,299
community and we were very honored to get featured basically with most of our new releases

626
01:08:23,440 --> 01:08:31,040
in the Postgres Weekly and we were very grateful for Mr. Cooper to do that for us.

627
01:08:32,660 --> 01:08:36,040
[CLAIRE] Well, the other thing is I'd like to think I'm a decent writer.

628
01:08:38,660 --> 01:08:45,779
Part of my joke is that I no longer program in C or have a favorite development language

629
01:08:45,799 --> 01:08:51,279
my programming language is now English. And, um, you know, I spend most of my time

630
01:08:53,260 --> 01:08:58,380
communicating in email or talking to people or giving conference talks. Like it's just,

631
01:08:58,620 --> 01:09:05,580
it's a different way to express your ideas and your thoughts.

632
01:09:05,810 --> 01:09:13,099
So I'd like to think I'm decent at it, right? And I'm not, I'm not being modest, I really

633
01:09:13,120 --> 01:09:20,160
am just decent at it. But Peter Cooper, he writes at a whole nother level. Like I look at the way in

634
01:09:20,279 --> 01:09:28,279
which he describes the things he's run across over the week. And the the twist of phrase and the

635
01:09:28,839 --> 01:09:35,140
insights that he derives from them, he gets to the crux of whatever each article or blog post

636
01:09:35,140 --> 01:09:38,960
or whatever is about. And I don't know, I wish I could write like Peter Cooper.

637
01:09:40,279 --> 01:09:40,380
[PETER] I

638
01:09:40,380 --> 01:09:41,240
wish

639
01:09:41,240 --> 01:09:42,200
too. Yes,

640
01:09:42,319 --> 01:09:47,140
I share your experience reading whatever he writes.

641
01:09:47,299 --> 01:09:47,680
Definitely.

642
01:09:48,160 --> 01:09:48,520
Definitely.

643
01:09:49,400 --> 01:09:51,720
There's a reason behind his success, I would say.

644
01:09:52,540 --> 01:09:52,700
[CLAIRE] Yeah.

645
01:09:54,260 --> 01:09:57,940
And he doesn't make things more boring than they are,

646
01:09:58,300 --> 01:09:59,300
which a lot of people do,

647
01:09:59,540 --> 01:10:00,840
maybe because they don't fully understand

648
01:10:01,140 --> 01:10:02,220
whatever the article was.

649
01:10:02,620 --> 01:10:05,040
He makes things more interesting than they are,

650
01:10:05,180 --> 01:10:06,140
maybe in some cases.

651
01:10:07,360 --> 01:10:10,160
He entices me to, okay, I better go read that thing.

652
01:10:11,000 --> 01:10:11,840
So anyway.

653
01:10:11,900 --> 01:10:13,640
All right, enough fans.

654
01:10:14,360 --> 01:10:16,740
[PETER] Some things AI can't really do.

655
01:10:19,740 --> 01:10:30,000
For some reason, I participated in multiple panel discussions where I was also expected to share my views on AI,

656
01:10:30,840 --> 01:10:39,400
and I'm by far not an AI expert, but when some people said that writers will all lose their jobs

657
01:10:39,660 --> 01:10:46,180
and it's going to be just hell for anyone who is doing creative work,

658
01:10:46,720 --> 01:10:51,820
I don't think that that level of quality can be matched by AI.

659
01:10:52,650 --> 01:10:59,219
Like when you mentioned Peter Cooper or some of the other articles you can read

660
01:10:59,640 --> 01:11:04,120
from engaging writers, just my opinion,

661
01:11:04,400 --> 01:11:09,480
but I think there's still plenty of space for people to

662
01:11:10,020 --> 01:11:13,760
write good content, and I wish I would be one of them.

663
01:11:14,060 --> 01:11:16,900
I'm unfortunately not, so that's that.

664
01:11:19,719 --> 01:11:22,780
[CLAIRE] It's May, next month is June.

665
01:11:23,710 --> 01:11:26,540
I can read a calendar, very impressive.

666
01:11:27,040 --> 01:11:28,620
But I'm thinking ahead to POSETTE.

667
01:11:29,700 --> 01:11:34,000
So I was on the talk selection team for this year's POSETTE: An Event for Postgres,

668
01:11:34,710 --> 01:11:37,260
along with some other amazing Postgres people,

669
01:11:38,440 --> 01:11:43,020
Melanie Plageman, Daniel Gustafsson, and KK Ravi.

670
01:11:43,940 --> 01:11:47,680
And one of the things, as a talk selection, team that we try to do

671
01:11:48,100 --> 01:11:52,280
is combine conference speakers.

672
01:11:52,620 --> 01:11:55,260
It's a virtual event that happens annually,

673
01:11:55,880 --> 01:11:59,640
and it's organized by my team at Microsoft.

674
01:11:59,960 --> 01:12:01,120
Teresa Giacomini is the chair,

675
01:12:01,660 --> 01:12:09,200
and one of the things we did on the talk selection team is we tried to mix together speakers from outside Microsoft, speakers from inside Microsoft,

676
01:12:10,540 --> 01:12:23,819
people focused on like the core Postgres open source, as well as people talking about some Azure managed services, and things in the extension ecosystem,

677
01:12:23,840 --> 01:12:27,920
and the broader Postgres ecosystem as well, not just the core.

678
01:12:28,500 --> 01:12:33,280
So anyway, I was really excited that we got to consider and accept your talk

679
01:12:34,240 --> 01:12:39,040
because I think it's important that this conference span all three of those areas.

680
01:12:40,680 --> 01:12:44,360
And your talk title that's coming up is From MongoDB to Postgres,

681
01:12:44,860 --> 01:12:47,880
Building an Open Standard for Document Databases.

682
01:12:48,540 --> 01:12:50,520
I don't know if you've done the recording yet.

683
01:12:50,560 --> 01:12:53,580
I know all those talks are prerecorded and then live streamed in June.

684
01:12:54,440 --> 01:12:55,320
Have you done it yet?

685
01:12:56,620 --> 01:12:57,460
[PETER] Yes, I did.

686
01:12:57,990 --> 01:13:04,220
It was an honor to be selected to one of the tracks on POSETTE.

687
01:13:04,520 --> 01:13:06,300
And yes, we did the recording.

688
01:13:06,430 --> 01:13:10,540
It was very professionally organized, by the way, Teresa,

689
01:13:10,860 --> 01:13:13,700
and, you know, the rest of the team is awesome.

690
01:13:14,020 --> 01:13:18,260
And I'm very excited to attend the virtual event.

691
01:13:18,260 --> 01:13:26,740
So I think the talks are pre-recorded, but then all of the speakers will be attending

692
01:13:28,280 --> 01:13:30,160
live and answer questions in the chat.

693
01:13:30,920 --> 01:13:31,520
That's my...

694
01:13:31,580 --> 01:13:33,480
[CLAIRE] Always a tough nut to crack.

695
01:13:34,920 --> 01:13:40,620
I know, I mean, next week I'm going to be in Montreal at PGConf.dev, which is the annual

696
01:13:41,280 --> 01:13:42,500
Postgres Development Conference.

697
01:13:42,620 --> 01:13:49,900
and there's just this wonderful, warm kind of feeling that you get from the hallway track,

698
01:13:50,160 --> 01:13:54,360
from meeting people, from breaking bread with them, from spending time in person.

699
01:13:54,940 --> 01:13:55,640
It's pretty wonderful.

700
01:13:56,490 --> 01:14:01,320
But the thing I really like about virtual is even though you don't get that kind of endorphin rush,

701
01:14:02,840 --> 01:14:05,800
there are so many people who cannot travel to an event, right?

702
01:14:06,020 --> 01:14:07,000
They don't have the budget.

703
01:14:07,360 --> 01:14:08,120
They're between jobs.

704
01:14:08,270 --> 01:14:09,220
They have elderly parents.

705
01:14:09,410 --> 01:14:10,320
They have young kids.

706
01:14:11,640 --> 01:14:12,500
They're going through a divorce.

707
01:14:12,600 --> 01:14:21,060
Whatever the reason, and I just really like the fact that speakers like you, even if it's not

708
01:14:21,340 --> 01:14:26,140
maybe as comfortable without an in-person audience, to kind of give you energy while you're

709
01:14:26,140 --> 01:14:32,580
doing your presentation, that speakers like you take the time and make the effort to give a virtual

710
01:14:32,920 --> 01:14:37,680
presentation because then so many more people are going to get to watch it and benefit from it

711
01:14:37,780 --> 01:14:42,500
So that's that's my soapbox on why POSETTE is virtual, and why it should be virtual.

712
01:14:44,220 --> 01:14:45,740
Anyway, I want to thank you.

713
01:14:45,790 --> 01:14:46,200
[PETER] Totally agree.

714
01:14:47,000 --> 01:14:49,780
Totally agree. And sorry to cut you off,

715
01:14:49,780 --> 01:14:57,500
I just wanted to add, you know, there are Postgres community members all over the world,

716
01:14:58,860 --> 01:15:06,160
including countries which are very, very far from Montreal or the Bay Area in California or

717
01:15:07,460 --> 01:15:13,060
other places and it's a very very good thought and a good fit for this community to have a

718
01:15:13,550 --> 01:15:21,000
well-executed online event and as far as I see POSETTE is going to be one of those and

719
01:15:21,260 --> 01:15:24,760
and again i'm really excited to take part.

720
01:15:24,760 --> 01:15:28,280
[CLAIRE] Well thank you, and you'll be

721
01:15:28,400 --> 01:15:34,199
talking more about some of the things I think that we've talked about today, and it's not going

722
01:15:34,020 --> 01:15:37,620
going to be exactly the same. This is a conversation where we jumped all over the place.

723
01:15:38,480 --> 01:15:45,220
I'm assuming your presentation is probably a little more coherent, or has a narrative,

724
01:15:45,470 --> 01:15:52,360
a narrative thread that kind of ties it all together. Do you want to give us a teaser?

725
01:15:54,120 --> 01:16:02,100
[PETER] Absolutely. So my talk is going to be, as you said, From MongoDB to Postgres,

726
01:16:03,100 --> 01:16:11,740
the creation of an open standard for MongoDB is the essence of my talk,

727
01:16:12,400 --> 01:16:17,380
where I will be talking about how SQL came to be as an open standard.

728
01:16:18,160 --> 01:16:22,980
How did it happen that we have this common query language,

729
01:16:23,360 --> 01:16:28,680
which can be used all across several different database products,

730
01:16:29,620 --> 01:16:36,880
and the initial challenges they had, how it came to be, how it was implemented after becoming an

731
01:16:37,000 --> 01:16:44,600
open standard, what challenges did this open standard solve, SQL that is in the 90s, how Postgres

732
01:16:45,900 --> 01:16:55,660
and other products decided to implement SQL and how did it happen that we are where we are now,

733
01:16:55,680 --> 01:17:05,080
where there are hundreds of different derivatives of the relational database concept and the SQL query language.

734
01:17:05,760 --> 01:17:11,020
And then, of course, because I'm very biased towards this problem of MongoDB,

735
01:17:11,540 --> 01:17:20,980
I'm going to explain where MongoDB is in this journey, or is there a journey towards standardization.

736
01:17:21,160 --> 01:17:29,520
And the reason why I'm talking about this, you know, going back to having all these different alternatives to MongoDB.

737
01:17:29,660 --> 01:17:40,380
So these are not based on an open standard and that creates lots of challenges along the way for users, for developers and for the developers of these standards.

738
01:17:41,140 --> 01:17:56,140
And I'm attempting to make the case for the community to come together to work on an open standard for the MongoDB query language or for document databases in general.

739
01:17:56,620 --> 01:18:07,920
So developers will have the ability to develop against a similar open standard as what they use in the relational world.

740
01:18:10,140 --> 01:18:26,240
And that is a much better thing instead of having to track how the current MongoDB alternatives are different compared to each other and trying to bridge those gaps from the application side if someone wants to migrate between them.

741
01:18:26,640 --> 01:18:31,120
So this is what the talk is going to be about.

742
01:18:31,860 --> 01:18:34,200
And another shameless plug,

743
01:18:34,660 --> 01:18:47,240
so we have the opendocdb.org initiative where you can read more about this push towards creating an open standard for document databases.

744
01:18:47,740 --> 01:18:52,700
So most of my talk is going to be about making the case of that.

745
01:18:52,740 --> 01:18:54,880
It's not going to be a FerretDB commercial.

746
01:18:57,260 --> 01:19:04,880
So it's going to be purely describing the problem and what needs to be done to help developers

747
01:19:05,160 --> 01:19:11,420
and help users to get document databases where they belong, which is a solid foundation based

748
01:19:11,580 --> 01:19:12,560
on an open standard.

749
01:19:14,239 --> 01:19:21,000
[CLAIRE] I just dropped the link to OpenDocDB in the [chat], I'll be sure to put it in the show notes for

750
01:19:21,000 --> 01:19:22,980
the podcast episode, and I dropped it in the Discord.

751
01:19:23,520 --> 01:19:25,760
[PETER] Really appreciate it Claire.

752
01:19:25,760 --> 01:19:27,840
[CLAIRE] Well I was wondering if you were going to mention it and

753
01:19:28,000 --> 01:19:32,940
I didn't realize that my open question about your POSETTE talk was going to take us there so

754
01:19:33,580 --> 01:19:40,480
there you go. Killed two birds with one stone. Okay, so is there anything I should have asked you

755
01:19:40,680 --> 01:19:48,320
today that's really interesting about the topic How I got started at FerretDB and why we chose

756
01:19:48,340 --> 01:19:51,340
Postgres? Did I miss anything? Did we miss anything?

757
01:19:52,900 --> 01:20:00,340
[PETER] You know, I don't think so. Your questions were very thorough. I think that I got some questions,

758
01:20:00,700 --> 01:20:08,260
which I was absolutely not prepared for. And I quite enjoyed having to think about, you know,

759
01:20:08,380 --> 01:20:15,360
the surprises and everything else users hit when they first hear about FerretDB or what,

760
01:20:16,260 --> 01:20:17,460
what I need to explain.

761
01:20:18,290 --> 01:20:21,940
And we went all the way from the beginnings

762
01:20:22,400 --> 01:20:24,620
to the potential open standard.

763
01:20:25,110 --> 01:20:28,000
So I believe that that's quite, you know,

764
01:20:28,000 --> 01:20:32,000
a wide discussion around everything we have.

765
01:20:33,700 --> 01:20:36,000
So, yeah, I think...

766
01:20:36,000 --> 01:20:39,040
[CLAIRE] I have two more questions then, of

767
01:20:39,040 --> 01:20:39,440
my own.

768
01:20:40,340 --> 01:20:45,500
The first is, if I were to pass along your perspective

769
01:20:45,520 --> 01:20:50,180
to the team at Microsoft that open sourced DocumentDB earlier this year

770
01:20:50,720 --> 01:20:51,560
about how it's going,

771
01:20:52,800 --> 01:20:53,820
what would you say?

772
01:20:53,900 --> 01:20:55,520
What should I tell them about performance

773
01:20:56,180 --> 01:20:59,780
or about them showing up for the community,

774
01:21:01,500 --> 01:21:02,880
about reliability, anything?

775
01:21:03,320 --> 01:21:04,580
Any feedback for them?

776
01:21:09,560 --> 01:21:14,960
[PETER] I told the team already that as a member of the open source community,

777
01:21:15,020 --> 01:21:19,740
I'm very proud that Microsoft did the right thing with open sourcing what they have.

778
01:21:19,940 --> 01:21:25,320
They gave tremendous value to the community and this sounds like a Microsoft commercial,

779
01:21:25,520 --> 01:21:28,660
but this is really from the bottom of our hearts.

780
01:21:29,800 --> 01:21:36,220
When it comes to FerretDB, we really appreciated that they took the time and effort to go through this

781
01:21:36,780 --> 01:21:40,960
whole approval process and the work to make sure that this can happen.

782
01:21:41,560 --> 01:21:53,920
And I believe that what we need to focus on moving forward and not just Microsoft, but others in the community, inside and outside of the community, is to push for the open standard.

783
01:21:54,680 --> 01:22:04,420
And I've heard Microsoft blogging about it already and, you know, talking to the other hyperscalers out there.

784
01:22:04,430 --> 01:22:07,620
They are definitely interested, but it needs to happen.

785
01:22:07,900 --> 01:22:16,660
We need to push for it, and it needs to be a collaboration, and it needs to happen soon.

786
01:22:16,790 --> 01:22:30,180
So my feedback here is that open sourcing is one thing and it's a big step, but the biggest step would be a strong collaboration on the open standard.

787
01:22:30,920 --> 01:22:39,820
And this might be harder not to crack, but I'm sure that it's in everybody's interest and we are going to get there.

788
01:22:41,760 --> 01:22:43,620
[CLAIRE] Okay,

789
01:22:43,760 --> 01:22:46,360
I'll make sure to, I don't even have to pass that along,

790
01:22:46,420 --> 01:22:50,620
I can just send them a link to that part in the podcast episode.

791
01:22:51,140 --> 01:22:52,000
Okay, final question.

792
01:22:52,760 --> 01:22:52,900
Cheese.

793
01:22:53,820 --> 01:23:02,520
We've had a couple of guests who've had really strange stories that connect their work in Postgres with cheese.

794
01:23:03,540 --> 01:23:05,460
I think I've had four so far.

795
01:23:06,180 --> 01:23:10,500
And so now I've just tried to get to the point where I remember to ask about it.

796
01:23:10,860 --> 01:23:13,280
And it's OK if you do not have a cheese story.

797
01:23:13,520 --> 01:23:14,520
Not everybody does.

798
01:23:16,820 --> 01:23:17,780
[PETER] A cheese story.

799
01:23:18,440 --> 01:23:25,160
Well, actually, I have one related to the creation of FerretDB.

800
01:23:26,740 --> 01:23:33,640
So when we went to the K2 Base Camp, we did not do this all-inclusive thing

801
01:23:33,880 --> 01:23:38,280
where we have a lot of porters to bring stuff for us and all that.

802
01:23:38,280 --> 01:23:41,020
We were bringing our own stuff for the most part.

803
01:23:42,000 --> 01:23:45,180
All the fuel, all the food, all the equipment.

804
01:23:45,420 --> 01:23:46,940
So it was pretty tough.

805
01:23:47,340 --> 01:23:50,600
And that meant that we had a very limited choice in food.

806
01:23:51,420 --> 01:23:54,860
And we were a team of five.

807
01:23:56,520 --> 01:24:02,460
I'm sure a lot of you would be familiar with Oleg Bartunov, who is

808
01:24:02,460 --> 01:24:03,540
a

809
01:24:03,540 --> 01:24:04,380
prominent member.

810
01:24:04,850 --> 01:24:08,160
He was there, a prominent member of the Postgres community.

811
01:24:08,920 --> 01:24:13,960
And he had a strange choice of food.

812
01:24:14,580 --> 01:24:22,760
Basically, all we were supposed to eat was seeds and horse sausage.

813
01:24:24,580 --> 01:24:25,480
And that

814
01:24:25,480 --> 01:24:27,840
was not my choice of food.

815
01:24:28,040 --> 01:24:34,380
I was very much struggling to eat all of those things.

816
01:24:35,620 --> 01:24:43,120
So the only thing that kept me alive was some cheese I brought from Hungary and some sausage I brought from Hungary,

817
01:24:43,320 --> 01:24:54,060
which I shared with Peter Zaitsev, who was also not fond of the availability of edible food.

818
01:24:54,640 --> 01:24:58,660
And I believe that, you know, if I don't have that cheese with myself,

819
01:24:59,500 --> 01:25:01,060
there may not be FerretDB.

820
01:25:01,900 --> 01:25:08,160
We would not be talking today because I would have abandoned the push for the base camp,

821
01:25:09,000 --> 01:25:09,640
very possibly.

822
01:25:10,100 --> 01:25:11,760
I was very unhappy with the food.

823
01:25:12,160 --> 01:25:17,120
So, you know, when you first ask me whether I have a cheese story related to Postgres,

824
01:25:18,560 --> 01:25:19,900
I was not sure.

825
01:25:20,380 --> 01:25:24,420
But thinking about it, this is very much relevant.

826
01:25:25,620 --> 01:25:27,180
[CLAIRE] Do you remember what kind of cheese it was?

827
01:25:28,260 --> 01:25:30,020
The Hungarian cheese that you're talking about?

828
01:25:30,620 --> 01:25:33,480
[PETER] It was Trappist.

829
01:25:35,760 --> 01:25:36,240
[CLAIRE] Trappist?

830
01:25:36,500 --> 01:25:36,620
Okay.

831
01:25:37,400 --> 01:25:38,480
I'll try to look that up.

832
01:25:39,380 --> 01:25:42,520
[PETER] It's very common in Hungary.

833
01:25:42,980 --> 01:25:55,540
It's actually not a very extreme cheese in terms of how it's made or, you know, there are some cheeses.

834
01:25:55,560 --> 01:25:58,880
My father is very fond of these very smelly cheeses.

835
01:25:59,940 --> 01:26:00,640
Sometimes

836
01:26:00,640 --> 01:26:05,840
when I'm in Belgium or the Netherlands, he asks me to get some for him.

837
01:26:07,000 --> 01:26:16,420
And I need to bring four of these Tupperware boxes inside each other.

838
01:26:16,740 --> 01:26:17,260
And it still

839
01:26:17,260 --> 01:26:17,780
smells.

840
01:26:18,540 --> 01:26:20,660
[CLAIRE] Like a nesting doll.

841
01:26:21,380 --> 01:26:21,600
[PETER] Yeah.

842
01:26:21,740 --> 01:26:26,300
And the cheese would be right in the smallest one inside.

843
01:26:26,420 --> 01:26:28,400
But it still smells.

844
01:26:28,600 --> 01:26:33,000
Once I went to Belgium with my car and I brought cheese for him.

845
01:26:33,100 --> 01:26:36,820
And my God, it was an experience going back.

846
01:26:38,880 --> 01:26:43,780
But yeah, I don't think I would be able to eat those for sure.

847
01:26:44,740 --> 01:26:48,720
[CLAIRE] Well, Peter, I want to say thank you very much for joining us today.

848
01:26:49,100 --> 01:26:53,620
It has been delightful to get to know you a little bit, talk to you about your story,

849
01:26:54,560 --> 01:26:58,680
share it with everybody who's going to listen to this episode once we publish it.

850
01:26:59,200 --> 01:27:02,240
And I wish you all the best with FerretDB.

851
01:27:02,660 --> 01:27:04,580
And I love that you're using Postgres.

852
01:27:06,380 --> 01:27:07,620
[PETER] Thank you very much, Claire.

853
01:27:07,860 --> 01:27:10,080
And thank you to those who listened.

854
01:27:10,080 --> 01:27:11,680
It was an honor to be here.

855
01:27:11,920 --> 01:27:19,180
And I also wanted to take the time to thank the community for their support during all these years.

856
01:27:19,580 --> 01:27:27,720
And we really made the right bet when we chose Postgres and we engaged with the community.

857
01:27:28,060 --> 01:27:35,620
You were all awesome, and it's really an honor to be here and work alongside with all of you.

858
01:27:36,780 --> 01:27:42,340
[CLAIRE] Thank you. Now, for those who are listening, if you like today's episode and you want to hear more

859
01:27:42,340 --> 01:27:47,780
of these Talking Postgres episodes, you should subscribe on Apple, or Spotify, or YouTube, or

860
01:27:47,920 --> 01:27:53,000
wherever you get your podcasts. And please tell your friends too. A word of mouth recommendation

861
01:27:53,540 --> 01:27:56,140
is what makes podcasts succeed.

862
01:27:56,840 --> 01:28:00,500
It's what enables them to continue to exist.

863
01:28:01,060 --> 01:28:02,220
So if you leave a review,

864
01:28:02,320 --> 01:28:04,800
that will help even more people discover the podcast.

865
01:28:05,480 --> 01:28:07,020
You can always get to past episodes

866
01:28:07,360 --> 01:28:10,400
and get links to subscribe on the different platforms

867
01:28:10,660 --> 01:28:12,880
by going to TalkingPostgres.com,

868
01:28:13,480 --> 01:28:16,420
and transcripts are included on the episode pages too.

869
01:28:17,120 --> 01:28:18,820
And a big thank you to everybody

870
01:28:18,960 --> 01:28:20,260
who joined the live recording

871
01:28:20,280 --> 01:28:23,040
and participated in the live text chat on Discord.

872
01:28:24,010 --> 01:28:24,340
Thank you.

873
01:28:51,620 --> 01:29:07,180
[Outro Music]