When we first started coding it, there was a project called browser.html by Paul Rouget at Mozilla, and it really looked to be like – at the time I actually thought that Firefox would die and that browser.html would become the new thing… Because Firefox is coded in this kind of old, HTML-like language called XUL, and browser.html was using HTML5 technologies to deliver this browser. It was created in React at the time, as well. That really looked like the system, and it was based on basically the same engine that Firefox OS was, something called Graphene.

So the very first version of this we created was for Graphene, and we just called it Brave at the time. And we had just found that the APIs were not built out enough yet, and also browser.html eventually stopped getting momentum, and so it died off… This was about six months in, and we realized it’s gonna be probably another six months if we need to build all these APIs that we need… So we started to look at alternatives.

We had this HTML5-based front-end with JavaScript, and I had a background of a lot of C++ as well, so I felt comfortable there, but the other people on our team didn’t have that kind of experience… So we did consider a Chromium front-end at that time, but we decided that we really need to get it shipped; we only had a limited amount of funding, so we needed to get the product out. It was at that point that we found Electron – we knew about it already, but we decided to switch to Electron, and it only took us a month and a half to port it from the Graphene system to Electron, and then get the first dev preview out. So we just wanted to tell the world that we created something, and “Here it is, and we’re working on it.” So that kind of became the release channel over time, because people just started adopting it.

One of the embarrassing moments when we first released that just for people to see what we were creating - it wasn’t meant to be released yet, but Eric Lawrence had found – I think it was him… He found a command line switch has been passed to disable the sandbox and the render processes. That was an embarrassing moment… And the reason that it was doing that was because Node was being loaded into the render process, but then disabled afterwards. So we did a lot of work – we basically completely forked Electron, to remove Node from the render processes completely, enabled the sandbox, did a lot of other security things… We tried to upstream them to Electron, but they didn’t wanna take them, mainly because we were adding extensions and they didn’t wanna have extensions in Electron.