The Changelog: Software Development, Open Source - GitHub's Electron (Interview)

Episode Date: August 19, 2016

Zeke Sikelianos joined the show to talk about GitHub's Electron project and the future of web folks making cross platform desktop apps. We talked about the web revolution around native vs web app, whe...re Electron is heading, who's using it, and how cool it is to enable folks like Guillermo Rauch to build HyperTerm.

Transcript
Discussion (0)
Starting point is 00:00:00 Welcome back everyone. This is the Change Log and I'm your host Adam Stachowiak. This is episode 216 and today Jared and I are talking about something cool called Electron from GitHub. doing this to talk about all things for web for desktop. It was cool. We talked about cross-platform. We talked about the revolution of the web. We talked about all the cool ways that GitHub is pushing this project forward. It was extracted out of Atom, as you might know. Electron is super cool. If you know HTML, CSS, and JavaScript, you can build a desktop app. We got two sponsors today, TopTile and Rollbar.
Starting point is 00:00:45 Our first sponsor of the show is our friends at TopTile. And this message is for all those team leaders out there looking to easily add new developers and designers to their team, easily scale up when you need to. You got a big push coming. You got a new area of the product
Starting point is 00:01:01 you've got to go into. You've got more need than you thought you could. You've got to go through all this hassle of putting a job out there and hiring people to find the right people. Well, that's a bunch of hard stuff that you don't need to even deal with. Call upon my friends at TopTal. That's T-O-P-T-A-L.com. The cool thing about TopTal is that you can hire the top 3% of freelance software developers and designers. And what that means is they've got a rigorous screening process to identify the best. So when you call upon them to help you place the right kind of people into your team, then you know you're calling upon the best people out there. Once again, go to TopTal.com.
Starting point is 00:01:40 That's T-O-P-T-A-L.com. Or if you'd like a personal introduction email me adam at changelove.com and now on to the show all right we're back we got zeke sikellianos on the show today and jared this is a big show for us because like we've talked aboutron several times on the podcast. And this has been a 1.0 in the making, basically. So what's up with this show? Yeah, well, we're always happy to have people from the GitHub on the show, especially since so much of our open source is hosted there.
Starting point is 00:02:18 And they do so many cool open source projects themselves, not the least of which, maybe the most of which at this point, since everybody's building cool stuff on top of it, is this Electron thing. This Electron thing for sure. So Zeke, you're on the Electron team. What part do you play there? And welcome to the show, by the way. Thank you. It's good to be here.
Starting point is 00:02:37 I joined the team in March. I'm the newest member of the team. We are four people officially. And lately, my role has just been around smoothing out the documentation and in general, making it easier for new users to get up to speed with Electron and get their apps built. One of the ways we like to start off a show, Zeke, and I can only imagine what your story is because you've got a pretty diverse background as per your website, graphic
Starting point is 00:03:05 designer, open source hacker, aspiring home builder. I'm not sure where the last part comes in, but we like to learn a bit about the guests that come on the show to kind of figure out, you know, Hey, you're on the electron team. Now you work at GitHub, you do what you do now, but what got you there? Like what inspired you to become a software developer, become a designer, or even become a home builder? So what's your story? How far do we got to go back to get there? Well, I guess we could go back to my childhood. My father's side of the family is a bunch of artisans and artists and poets and builders and things like that. So I come from a very creative family. So as a youth, I was really interested in art and design.
Starting point is 00:03:46 And I think I actually got my start doing graphic design and learning Adobe Flash, or actually it was Macromedia Flash at the time. And just wanted to create interesting things on my computer and eventually came to realize that writing computer programs was a really powerful way to do that because you could make minute changes to code that would have some really interesting visual change. So I got started as a Flash developer back in 99, 2000, and was going to college, but was really more interested in doing web development than my studies. So eventually I dropped out of college, got a job at a graphic design firm and became the sort of resident web person there. So for a number of years, I was just working for a branding agency, doing lots of design work, but also starting to learn more about how to build web applications.
Starting point is 00:04:46 So the ActionScript thing only got me so far, and eventually I needed to learn a server-side web language to start making interesting web pages that people could interact with, that could save information. So I learned PHP and did that for a number of years and eventually wanted to learn something better or something more powerful or a little bit more of a humane programming language. Ended up getting into Python and eventually Ruby. And my interest in programming just continued to grow. Despite the fact that initially it was just a means to an end. It was something that I was learning so that I could make more interesting
Starting point is 00:05:29 visualizations or facilitate new ways of doing graphic design. Eventually I moved out to California in 2007 and started doing Ruby on Rails development full time and moved to Silicon Valley eventually and started working for Heroku. And that was really when my career started to become really programmer focused or, you know, working primarily on developer experience stuff. So it was strange that I ended up at Heroku because the reason Heroku appealed to me in the first place was that they provided a way for me to deploy web applications without having to know really anything about how servers work
Starting point is 00:06:20 or how to manage load or how to configure a database or all those kinds of things that you have to know all those that ops sort of stuff so i really was kind of the ideal customer for heroku and somehow ended up being so fascinated with the product that i ended up working there as an engineer so i kind of got involved in something that I swore to never have interest in. And it sort of continued to happen from there. So at Heroku, I first worked on the add-ons product, which is basically an app store for developers. It's a place to buy software as a service or platform as a service type of thing.
Starting point is 00:07:08 So if you're building an application and you want to provision a database for it, you go to the add-on site or use the command line interface to effectively purchase a database in the cloud. So my job there was to kind of design and build out this app store. From there, I eventually was getting more and more
Starting point is 00:07:29 interested in Node, having had a background in ActionScript, which was effectively a much more advanced version of JavaScript from the late 90s. I really got interested in Node and saw that it was giving life to JavaScript outside of the browser. And Heroku had a product for deploying Node apps, but it was not maintained and it was not an official product and there was no real team around it.
Starting point is 00:07:59 So people were starting to think of Heroku as not the place where you would want to host a Node app, even though we were technically capable of doing it. So I devoted myself to revamping the build process for Node apps on Heroku. So when you get push Heroku master with your Node app, there's basically a set of bash scripts that run that prepare your app to run on the platform. So it's things like figuring out which version of Node to install, running npm install, cleaning up the app and putting it on the shelf effectively on S3 until the routing layer is ready to pull it off the shelf and serve traffic with it.
Starting point is 00:08:50 So this was like kind of the beginning of the end for me in terms of like my design career. So this was really intriguing to me and really fun, but it was also like just a purely developer oriented project, right? Like there's just literally no aesthetic element to it. Just, um, really trying to improve developer productivity. So despite it's kind of been an identity crisis thing for me, but, um, I've embraced it because it was really rewarding to work on this thing at Heroku and see that I could make a small change to a product that was being used by thousands of developers every hour.
Starting point is 00:09:31 And just knowing that if I made the build process a minute faster on average, that was saving 5,000 developer minutes per hour. And just thinking about all the people who were having an improved development workflow because of this work. So that's that kind of working on something with that kind of reach is addictive. So from there, I NPM was forming as a company. Isaac Schluter, who created the NPM project, had just left Joyent to found NPM and so I got in touch with him and ended up leaving my very comfortable position at Heroku to help start NPM. What's the role at NPM then since your designer heart was a little crushed
Starting point is 00:10:20 did you get to pick it back up a little bit or did you stay on the developer side? I got a little bit of it back. So my job was to work on the website. So the website that you see now at NPM, js.org or NPM, js.com. Most of that is, is my design work. Um, we did work with an outside consultancy for some of the design, but primarily the package page was my main focus. So my goal there was to try to make the NPM package page as, as useful or more useful than a GitHub repository page.
Starting point is 00:10:57 So as a developer, when you're picking out, when you're trying to find a dependency that you need to use in your project there are a number of indicators that you look for like um is this project maintained does it have tests is it well written does it have a bunch of issues has it been abandoned things like that so my goal was to collect as much meaningful metadata about a package to display on the NPM website as possible. So people could just go, get a quick gut check. Does this thing look legitimate? And if so, install it.
Starting point is 00:11:35 So I got part of the way there. I don't think it necessarily quite rivals GitHub's readme pages yet, but incremental progress. Yeah. So just to be clear, so you're talking about like npmjs.com slash package slash blah, whatever that blah is like slash async slash npm, whatever the package is, when you hit that package page, you can see if it's public, you can start it, learn more about it. This is the page you're talking about, right? Yeah, absolutely. So it's some of the most meaningful pieces of metadata there are how recently
Starting point is 00:12:08 was, it's mostly in the sidebar, right? How recently was the package published? How many releases have there been? How many maintainers are there? And then we realized that a lot of the really interesting data was actually coming from GitHub, so we wired up something to
Starting point is 00:12:24 collect issue counts and pull request counts and display those in the sidebar as well. And then also downloads are somewhat useful in registry that even if your package is not being used by any humans at all, just the mirror active publishing, it will cause something like 50 downloads in the last week to be displayed just because all of the mirrors are catching up and downloading the package. So it can be a little bit misleading, but can still be kind of a gauge. I don't know if you guys have seen it, but just recently, Adam, we were pinged about a new project called npms.io, npm search. And we'll have it in Change.log weekly, either this week or next week, depending on when the show goes out. But I think you would like it, Zeke,
Starting point is 00:13:25 because it's trying to do what, for NPM search, what you were kind of doing for the first party package pages, which is to organize the search around quality, maintainability, and a few other metrics, which he actually scores each package. I'm not sure how the algorithm works, but he scores them on like a one to 10 on those three different metrics. And then he integrates that into the search.
Starting point is 00:13:51 So it's basically, it seems like a proof of concept. I think he probably eventually wants NPM to adopt it, you know, as the way they do their search. But it's interesting because he's trying to pull in a lot of that extra, how do I decide the quality of this project? Similar to the kind of stuff you were trying to expose when you were working on the package pages. Yeah, so we actually, when I was at NPM,
Starting point is 00:14:13 we talked about that a lot. And I think one of the conclusions that we came to is that you can't really assign a numeric score to a package because there are so many factors that can be affecting your judgment. So one of the things is like there's a very prolific module author named Substack who was one of the early sort of members of the node. What do you want to call it? The Node Zeitgeist. Community.
Starting point is 00:14:46 Yeah. And he wrote some really sort of fundamental packages. And a lot of them haven't been touched in three or four years, but they do exactly what they need to do and they're done. So you may see a package and think, oh, this hasn't been touched in four years. Probably not safe. But in many cases, those packages are actually stable. Yeah. So I personally think that the best way to help people make decisions about which packages to use is just to display as much information as possible rather than trying to quantify it all
Starting point is 00:15:20 in a single score. But yeah, the NPPMs website is very cool. I really love what they're doing there. And from experience, I know that the NPM team, at least when I was working there, had no spare cycles to work on the Elasticsearch appliance that they currently have. So it was kind of like the thing that nobody wanted to touch. So it would be surprising to me if they put any real effort into search. So I would continue to expect those that these two could very likely be offered positions potentially at NPM. Like, hey, you built this awesome thing, you've got some good thoughts around it, or at least some motivation.
Starting point is 00:16:11 We need help. Come join the team. Maybe it's contract, maybe it's long term, who knows, but there's been several jobs that, you know, like Thomas Watson, I've talked to him from the NPM community as well, and he works at Opbeat now because of his influences and because of his
Starting point is 00:16:28 work on Opbeat in the open source area they're like hey you're really passionate about Node.js on Opbeat come work for us and so he now leads that part of the project for them and I think that's the beauty of open source you can tap into something and strike a chord
Starting point is 00:16:44 and then be offered a job. Yeah, so as far as finding ways to sort of integrate third-party features into the NPM website, there have been a few of those that have happened. If you look on the sidebar on any package page, you'll notice there's a little link that says, try this out in your browser. And so that's actually a third-party site called Tonic Dev.
Starting point is 00:17:09 It has a little sort of online REPL kind of console thing where you can actually sort of play with a module live. Obviously, it only works for browsers that are, or packages that are browserify-friendly, but there are many of those. And then also I think NPM's search tool has an autocomplete feature that is also powered by some third party service. And those came to, yeah, it's called constructor.io. So those came to exist just because there were people in the user space who
Starting point is 00:17:45 were really interested in getting these integrations on their, on the NPM website, just because obviously their visibility in the community is going to go way up. Unfortunately though, just last week or two weeks ago, NPM closed the source on their website. I saw your tweet.
Starting point is 00:18:04 You seemed bummed about it. Yeah, it's really a disappointment to me because the main thing that I was working on at NPM was sort of modularizing the website into some different NPM packages with separate responsibilities. The end goal being that we could solicit a lot more feedback and contribution from the community. But unfortunately, what happened is that NPM had to make some internal revisions to the registry.
Starting point is 00:18:39 So in a nutshell, the way the NPM registry works now internally with private and scoped packages is that there's a Postgres database that they run that's not public that is a follower of the Couch database. And it does a bunch of work to clean up the data in the Couch database and then also to add supplementary metadata about scoped packages. Scoped packages are like at username slash package name. So this is a new way for paid users of NPM to actually, and I think free users of NPM to start to have their own namespace for packages. But for technical reasons, the registry is effectively closed source now. So when that happened, the NPM website was no longer able to be run by anyone
Starting point is 00:19:36 who doesn't work for the company. So you could still clone the website source and NPM install, but if you actually wanted to run a development version of the website um you couldn't because there was no no data store to sort of integrate with or no like mock database to to use so um this was something that was really important to me and unfortunately the the that is not the priority of the company, which understandably, companies have to figure out a way to be profitable. So their focus is really on trying to encourage adoption of their paid plans and their organization product.
Starting point is 00:20:20 That makes sense. I mean, everybody has their own motivations and we'll have to save debating that for a different show because we can go too deep there. But it sounds like your experiences at Heroku, your experiences at NPM, obviously, play into what you're doing now with GitHub and Electron. And from what I understand,
Starting point is 00:20:41 you also have had some designer input onto the contributions page, which, you know, we use quite a bit to as the change organ as developers. We look at that page quite a bit just to kind of compare and contrast what's happening in a repository and who's involved in it and what their contributions are. And obviously representing and clearly defining those people, you know, for doing what they do there. But take us to GitHub. You know, you got, you know, your designer heart crushed to a degree at Heroku, but you were doing great things. You know, revived it again at NPM. And, you know, this story you've told us now. So how, you know, what's the state of things now for you personally, and then take us to what you're doing with electronic GitHub. And we're coming up close on a break, so let's do a short version of that. We'll kind of tee this part up, and then we'll go into a break,
Starting point is 00:21:28 and we'll come back and go deeper. So help us get to GitHub for you. Okay, sure. So in the last year and a half or so of my life, things have changed quite a bit. I ended up leaving NPN. I got married. I conceived our second child with my wife, moved across the country to New Orleans, ended up moving back across the working for a startup in the East Bay, um, called Josephine that is trying to sort of change, um,
Starting point is 00:22:13 the, the market for home cooked food. So they're trying to enable, um, cooks to sell food out of their homes. So I was helping them kind of get their product up to up to snuff for a while but i kind of had a little bit of downtime there and and was really looking for the next place to land where i could really sink my teeth into more node related stuff so of course github was really appealing to me and um i already knew a few members of the uh the electron team having worked with them in various capacities. The NPM website's readme parser is actually powered by a piece of Atom. I had collaborated with Kevin Sawicki, who's one of the founding members of the Electron team. I had my foot in
Starting point is 00:23:03 the door a little bit there. But Electron was just really appealing to me because, you know, it's like being a kid in a candy shop. You get the latest browser and you get Node mixed in. And the combination of those two things is just really, really exciting, especially if you've had to deal with sort of the inadequacy of browser development life for the last 15 or 20 years. Let's go ahead and pause there. Then we'll come back and we'll, we'll dive a little deeper, obviously into the electron
Starting point is 00:23:34 team and where it came from. We got tons of stuff to cover in this show. So let's, let's break. Now, when we come back, we'll dive deeper with Zeke and an electron. We'll be right back hey everyone adams dukovic here editor-in-chief of changelog and i'm talking to a rollbar customer rollbar puts errors in their place rollbar.com slash changelog check them out get 90 days of the bootstrap plan totally for free. I had a conversation with Paul Bigger,
Starting point is 00:24:07 the founder of CircleCI, and he talked deeply about how they use Rollbar and how important that tool is to their developers. Take a listen. One of the key parts about doing continuous delivery, you don't just have to test your software, but you have to constantly keep track of it. You're going to be doing deploys 10 times a day or 20 times a day. And you have to know that each deploy works. And the way to do that is to have really good monitoring. And Rollbar is literally the thing that you need to do that monitoring. You need to make sure that every time you deploy, you're going to get an alert if something goes wrong.
Starting point is 00:24:42 And that's exactly what Rollbar does for CircleCI. So obviously CircleCI is important to your customers. You shouldn't have errors. You shouldn't have bugs. And the purpose of a CI is continuous delivery, obviously, but getting your customers code to production in a fast manner that's tested and all the necessary things a CI provides. Tell me how important Rollbar is to your team and your organization.
Starting point is 00:25:08 We operate at serious scale. And literally the first thing we do when we create a new service is we install Rollbar in it. We need to have that visibility. And without that visibility, it would be impossible to run at the scale we do. And certainly with the number of people that we have. We're a relatively small team operating a major service. And without the visibility that Rollbar gives us into our exceptions, it just wouldn't be possible. Oh, that's awesome.
Starting point is 00:25:36 Thanks, Paul. I appreciate your time. So listeners, we have a special offer for you. Go to rollbar.com slash changelog, sign sign up get the bootstrap plan for free for 90 days that's 300,000 errors tracked totally for free give rollbar trying today head over to rollbar.com slash changelog all right we're back with Zeke Sekelianos. And Zeke, you know, we love Electron.
Starting point is 00:26:10 We love all the cool things that it's come from. It's obviously been extracted out of Atom. There's some history there. But for those who are listening to this show thinking like, okay, I'm catching up. What is Electron? How can I use it? Who's it for? What do you tell people?
Starting point is 00:26:23 Yeah, so the gist, which I'm going to steal from the homepage, is if you can make a website, you can make a desktop app. So Electron is really just the open source core of the Chrome web browser mixed in with the Node.js runtime. And what it enables you to do is write desktop applications with HTML, CSS, and JavaScript and package them into distributions for Windows, Macintosh, and Linux computers.
Starting point is 00:26:57 That's awesome. Now, that story is not a new story, though. There's been some others out there in the past. And one question we have here is what makes it different? What makes it better than maybe some predecessors? And I won't name those, but from your perspective, what is it about Electron that just makes it be so wildly adopted? As you mentioned, the homepage, you've got applications like Slack using it. You've got WordPress.com using it, WebTorrent, which we're going to cover in a future show,
Starting point is 00:27:24 the new latest and greatest Hyperterm, which we covered most recently with Guillermo Rauch. What makes it better or the better thing than what has ever come before it? Do you know that? I would say it probably has mostly to do with timing. I mean, so Electron, though it seems like a new thing, it's actually been worked on daily by this guy, Chang, who is the creator of it, who's on our team at GitHub. He worked on Node WebKit starting four years ago and eventually having learned from development on Node WebKit some of the things that he wanted to,
Starting point is 00:28:00 that he got wrong or that he wanted to redo or do differently. And so we started on Electron. So Electron has been really in development for about four years now under a different, under various names, I guess you could say. But I think really we're just at a point now where with Node having sort of come into existence about five years ago and the ecosystem having enough time to flourish and reach a much broader audience of developers. We're just now at this point where Node is a much more accessible tool that is a more fundamental part of every web developer's toolkit. So I think it's just, uh, it's more a matter of, uh, timing than being the right product. You also have a segment here on the homepage that says the hard parts made easy, uh, as deep as you can take us into those things. You got automatic updates,
Starting point is 00:28:58 native menus and notifications. You got app crash reporting. These are things that typically, if you built a native app on any platform, you'd have to figure these things out on your own pretty much. You've got debugging and profiling and then the super hard one, Windows installer. So help us break down the hard parts made easy. What can you tell us about that? The way that I interpret that statement is that we have a set of APIs that are abstractions around common elements of an operating system. So there's a thing called the tray API. And each operating system has its own notion of what the tray is.
Starting point is 00:29:36 So on macOS, it's the thing in the top right that has little icons on it. And on Windows, it the the equivalent thing in the bottom right corner of the taskbar so what electron does is give you a one api with um that is sort of ironed out across all those different operating systems to behave appropriately for each os so you're not necessarily thinking about the idiosyncrasies of each operating system you're just coming up with a tray interface that can work in all contexts. So I think that for me is the biggest thing in terms of making the hard parts easy. I guess another one would be that traditionally, if you wanted to become a desktop developer, you sort of have to
Starting point is 00:30:24 make a judgment call. You have to decide whether you want to become a desktop developer, you sort of have to make a judgment call. You have to decide whether you want to be a Mac developer or a Windows developer. So if you want to develop Apple products, you have to learn Objective-C or Swift. You have to sort of buy into the ecosystem of using Xcode and all those things. And there's a lot to learn there. And you're basically vendor locking yourself in. So what Electron does is allows you to build those similar kinds of tools,
Starting point is 00:30:55 but using technologies that are open. So HTML, JavaScript, and CSS have been around for a long time. They're not going anywhere. So a broader group of people is familiar with these technologies. So the barrier to entry to desktop development is much lower now. Anytime you have a cross-platform toolkit, like let's take the old one that we can all kind of all collectively roll our eyes at is Java applications on the desktop where they run cross-platform Mac, Linux, OS, or Windows. And they're just so obviously non-native, you know, whether it's they share widgets,
Starting point is 00:31:34 you know, design UI widgets that are cross-platforms that are not native to the operating system or perhaps you have new APIs, for instance, you know, Apple's rumoredly releasing a new MacBook Pro with that really cool OLED function key row. So you can program against the function key row and put your own buttons in there when your application is focused. Just a rumor, but no doubt that's going to be a brand new API.
Starting point is 00:31:58 And because, you know, Electron and those that came before it are cross-platform tools, you don't usually have access to kind of the new shiny. So you can't make it feel as native. And so I guess the question is, it doesn't seem to be slowing it down any. Like we're still all excited about it. So what Adam and I are wondering is like,
Starting point is 00:32:18 does it have affordances for you to work around those things or does it give you access to native apis better than the old cross-platform things or maybe just momentum with the web that it doesn't matter anymore i don't know yeah so there are actually lots of apis that are specific to a certain operating system like um what would be a good example so um there's some something related to your computer sleeping um like when a sleep event occurs or a waking event occurs those events are unique to to mac os so in the electron documentation those things are are denoted with a little symbol for each operating system. So there are some things that are unique to each operating system, but in general, we're
Starting point is 00:33:12 trying to add every feature that we can to Electron that is available on each operating system. So for the example you just gave of the specific keyboard functions, that would be the kind of thing that would be the kind of thing that would be implemented and it would only work on Mac and we would just have to document it as such. But in general, these things are landing in Electron pretty quickly. And we have some brave users who are installing the very newest versions of Mac OS like Sierra and helping us find those bugs ahead of time before it lands.
Starting point is 00:33:46 So you don't have to go and remake the wheel on your own. So like Jared's saying, these particular features that might be only Mac OS or whatever, you still plan to or at least have some ideas that you will want to implement the APIs for Electron where you don't have to kind of take it 80% with
Starting point is 00:34:02 Electron and then the other 20%, well, you just figure out the native stuff on your own. In general, yeah. I think that's a good blanket answer. Let's go back a little bit into the history now that we know what Electron is and what it offers. It's kind of a cool story because, like you said earlier in the show,
Starting point is 00:34:19 it was extracted out of Atom, which is another huge GitHub project and endeavor and a successful project on its own. And yet out from Atom comes Electron, arguably even more successful than Atom itself, just because it's a platform and being used by probably millions of people at this point, whether they know it or not.
Starting point is 00:34:41 Tell us a little bit of what you know about the story of extracting electron out of Atom, the history there, decision-making, and so on. Sure. So I think really the turning point was when companies outside of GitHub started to use the tool, which was then called Atom Shell, for their commercial products.
Starting point is 00:35:03 So I think the tipping point was when Microsoft's Visual Studio Code editor started using Atom Shell. And it seemed a little bit strange to still call it Atom Shell when it was being repurposed and used elsewhere. So I'm not sure where the origin of the Electron name came from, although I think it's a pretty fitting name. I think it came from possibly defunct GitHub CEO. But yeah, essentially, they just renamed it so that it would have a more generic name that was representative of its potential ubiquity, I guess.
Starting point is 00:35:43 One thing that I'm interested in, and perhaps since you're somewhat new to the project, you might not have these insights. So just say no if you don't. But, you know, when when did Adam's shell become a thing and why? So was it always separate or was it always part? Was it part of Adam? And then they said, hey, let's make this its own thing. And then once that got popular, like you said, they renamed it to Electron. But was Adam's shell always separate or was it part of Adam? And then they said, hey, let's make this its own thing. And then once that got popular, like you said, they renamed it to Electron.
Starting point is 00:36:06 But was Adam Shell always separate or was it part of Adam and then got separated? So I'm a little hazy on the details for the for a definitive story on the Electron blog. Chang has actually started to publish a series of posts about the history of Electron. And I think he's done two so far. But one of them outlines the very beginning from when he was first working on Node WebKit. And I think what happened was that the Atom team was working on Atom. And I think they started with Node WebKit and found some issues with it. Like it didn't entirely serve their purposes. So they reached out to Chang,
Starting point is 00:36:47 and I think GitHub for a long time was actually just contracting with Chang. Chang was a contractor for GitHub. And I think that's really where the new Atom Shell slash Electron project got some life breathed into it, was because GitHub needed it for it for adam you know as programmers we're always trying to decide the right time to extract to add a layer of abstraction and it seems like and this is a huge successful case when uh what was adam shell and became electron maybe not obvious at first to them but once it became obvious was a huge move and perhaps the
Starting point is 00:37:28 best move they made with regards to the project because like i said earlier electron uh its adoption at this point is probably far subpoena supersedes that of atoms wouldn't you say yeah i actually don't have any numbers on that but um of course, I mean, it's just a, it's a, a more general purpose tool that's sort of lower in the stack. So of course it's utility is, is more broad. I just feel like too, like with the reference to Guillermo and Hyperterm, you know, that it enables, which exactly what it says, if you can build for the web, you can build a desktop app and on the different platforms. I think it's kind of interesting to look at this perspective of these superpowers, essentially, that came out of Atom.
Starting point is 00:38:10 Jared, as you're kind of sharing the story of where Electron came from, where this was an internal thing at GitHub, whether it was called Atom Shell or not. In the beginning, it was there to help prop up what is Atom on many platforms. And the decision to extract that has given so much power to people like Guillermo who simply want to use the necessary tools in JavaScript to build out a new terminal emulator. And rather than having to think through all the things that have already been thought through, Electron is open source. They use Electron to build and deliver Hyperterm and so many others. He's not the only case of it, but what does it mean to you to have people like Guillermo have that kind of power to be able to build for the web, but then also be able to deliver
Starting point is 00:38:55 desktop apps through Electron? As a designer heart, they got their heart broken a little bit, back to developer, and now back to a mix of designer developer. How do you feel about that? Well, I'm really excited about it. I just feel actually my coworker Jessica Lourdes described us this is the promised land, right? We've waited so long to have, like, a legitimate development life as JavaScript developers. I mean, JavaScript has been really abused as a language. Everybody has described it as ugly and underpowered for so many years, but because of
Starting point is 00:39:31 node, it has really had a chance to flourish outside of the browser and become applicable in so many different environments. And so now that we have this thing that is a combination of the, the hottest web browser and node itself you know the ecosystem is just flourishing so i actually didn't notice i didn't know that you guys did a um an issue on uh or an episode on hyperterm i'm gonna have to listen to that but i think that's really one of the most it's that project is exemplary of the excitement behind electron in general like just within i mean the project is maybe two months old and we've already seen there's a there's a repository called awesome hyperterm that has just contributed to like
Starting point is 00:40:19 like mad it's like it's really unfold when i was talking to guillermo i thought like you did i thought it was out there a little longer and when i talked to guillermo uh for that show he's like we just released this like a week and a half ago i'm like okay so at the time of the show which we released it on the 29th i think it was recorded a week beforehand uh of july so last month there was around 90 repositories on GitHub that had the term Hyperterm in it that was like add-ons or packages
Starting point is 00:40:50 for Hyperterm. And then during the call, by the end of it, there was another 15 more. And so it just shows you how fast that something like that moves. But the cool thing is enabling that kind of development
Starting point is 00:41:02 because without Electron, it would have been so much harder for Gamma to actually deliver that. I'm sure he could probably have done it, but you just reduced all the barriers to entry. Yeah. No, it's really exciting, especially with Hyperterm. Just to see that somebody built a Hyperterm package manager
Starting point is 00:41:19 in that first week that it came out, and it's powered by NPM. So if anyone wants to build a plug-in or a package for hyperterm it's a matter of publishing to npm so there's not any there's not really a bottleneck for contributing to the ecosystem because there's already something in place that works really well so i'm really excited i actually hit it i've been using hyperterm uh exclusively for about two weeks now and it's got a few little bugs but for the most part it works really well for me but i i had a bug with my uh font rendering yesterday and i was able to open the web inspector in my terminal and figure out what was wrong and that was so cool yeah because i just typed a font name wrong, but actually being able to figure out why I was
Starting point is 00:42:07 having a problem using familiar web developer tools, it was really empowering. Because if something like that was happening with terminal.app or iTerm, I'd just be kind of up a creek. But just being in an environment that is basically the Chrome browser and having access to all these tools that I'm already familiar with as a web developer is really empowering. Well, let's talk on that note, because Hyperterm is obviously a great candidate for the power of Electron. Let's talk to the developers out there that should be using Electron. Zeke, are there any dreams or any, is there a list inside of GitHub of like, these are the kind of apps we would love to see built with Electron? Like what out there should be built with Electron?
Starting point is 00:42:52 Well, really anything that should run on the desktop. The nice thing about Electron is that, or one of the nice things I guess, is that you don't have to conceive of an app as a thing with a visual interface. It could actually be an app that's just like a demon that's running in the background. So historically, if you've wanted to make a node app that does that, it's actually kind of a lot of work to try and just get an app that will start when your system starts up or when you log in and will just run in the background and do something useful. You have to edit P list files on a Mac. You basically have to do a bunch of tedious work to get it running and sort
Starting point is 00:43:34 of pray that it works out with electron. You can actually just it has built in APIs for launching itself at startup. So if you wanted to run some kind of daemon, like I have an electron app that's just tracking my location all the time. So I have this running stream of geo information that's just being pumped into a geo JSON file that's just for my own amusement. But I think the interesting thing there is that it's not just about developing new graphic interfaces. It's really just a way to simplify the process of creating apps for the desktop.
Starting point is 00:44:11 So you asked who should be using Electron or what kind of apps should be built with it. I mean, I think that's really only limited by our imagination. So we're getting lots of really interesting apps coming in on the Electron website. So that's an open source website. And people who build apps can submit them with like an icon and a little bit of a description and link to the repository if it's open source and things like that. So we're seeing a lot of things come in. And it's a mixed bag.
Starting point is 00:44:46 It's not like a specific kind of application. I'd say the most notable apps that are built with Electron are probably Atom, Slack. Slack uses Electron for their Windows and Linux clients. And they're in the process of using it for the Mac client as well. And Slack is really ramping up their Electron team. They now have at least three people full-time working on Electron stuff, which is almost rivaling what we have at GitHub.
Starting point is 00:45:19 So that's pretty exciting. Of course, Visual Studio Code, which I mentioned. There's an app called WebTorrent, which is just a web torrenting, an app for downloading torrents, which is really simple and straightforward. And then I've been using one called SimpleNote, which is created by Automatic, the WordPress people. And SimpleNote is just a note-taking app. And of course, note-taking apps are a dime a dozen, but it has really nice integration with a mobile client as well.
Starting point is 00:45:57 So it's just a note-taking app that kind of syncs across all the devices. My personal favorite Electron app ever is called Mojipar, and it's just an app for pulling up a little search tool for finding emoji. And it's nice because if you don't know the name of the emoji that you're looking for, you can type in a keyword and Ansari will be able to find it. So that was created by Mouan, who works on the design team at GitHub. She's produced some really elegant, simple Electron apps. And I usually encourage people to look at her apps as a starting point
Starting point is 00:46:34 because they're usually like a single file that you can read through and pretty clearly understand how it works. She doesn't really do the thing of like dropping in babble and react and every new thing under the sun so nice place to start yeah a good good starting point there yeah it sounds like to me it's it this kind of reminds me of the of the renaissance that's i guess maybe more like the revolution less renaissance that's happening on mobile you know where you have ios that doesn't seem to play well with like web apps right they want a native app and then you got this uh just this renaissance of like renaissance again revolution of wanting to build with native tools that you know and kind of having this operating system
Starting point is 00:47:25 resist you or prevent you from doing it as easily right like adding a web app to your home screen in ios is not as common as it is on android and so forth it seems like this might enable people to essentially do what you've done in the past with something like fluid app where you simply wrap a website in a mac app and allow you to launch it. Yeah. And it kind of is a little bit like that. Do you see or do you think that some applications or some websites that act as applications should really be native applications?
Starting point is 00:47:56 And would Electron add more, like we said earlier, does it add more to it than building it in the native web browser? You know what I mean? It seems like there's a lot more of this potential happening and it's not quite there yet, but some of the mentions you just said there of the example of Emojibar seems like you could probably go to a website, Emojibar.com, and search for those just as well. Why make it in the system tray you know so interestingly uh moji bar has a website counterpart part which is called emoji search.info or something like that i can't remember it offhand but um for me it's about um
Starting point is 00:48:38 productivity so it's a lot easier for me to invoke a keyboard command that opens the emoji bar search with the thing emphasized, and I don't have to make any network requests. So I'm in the middle of working on some, I'm like in Slack trying to type some message or trying to file a PR or an issue on GitHub, and I want to use an emoji. I don't really want to open a new browser tab, type in a web address, focus the input, search, click. So it's really just about being able to move more adeptly or get things done more adeptly, especially with, like, keyboard shortcuts.
Starting point is 00:49:20 So in the case of Mojibar, really, it's just about the convenience convenience and the speed this is making me think i mean on the same note here i mean it's jared i don't know if this is appropriate for the show to dream like this but it's really making me think like that the changelog could potentially have you know something to do with electron and ship a version that essentially just easily adds like a player to someone's local machine and rather than having to go to the website or open up their mobile app just one more way to listen to the changelog is or the many shows we have coming out is a key command just like zk just
Starting point is 00:49:58 said and now you can access your playlist and put the next episode or whatever i mean i just wonder if that's what we should be encouraging people to do. Not so much us, but like that type of behavior using Electron. Yeah. I mean, I think that changelog would be a great candidate for that. So if you have these episode files, which are, I don't know how big one is on average, but you know, a considerable number of megabytes. Yeah.
Starting point is 00:50:23 And if you had a desktop app, you could download that thing, store it in your user's cache, and the file would be readily available at all times. So if anybody wanted to listen on an airplane or in some place where they didn't have web access, they could have a backup of all their changelog episodes. Yeah, I mean, i think anybody who has a
Starting point is 00:50:46 website that is web app-ish you know i'm sitting here using google docs thinking you know this kind of reminds me of the days of fluid and the other tools adam back when we used to wrap you know certain websites that we visit often instead of having them pinned in our browser to a specific tab, like breaking them free from the browser. And I guess my question around that, obviously for changelog, we could build an Electron style changelog thing that ships as an app, but does it give you the, like, does it let, does it empower users or just app developers?
Starting point is 00:51:18 So I love Google Docs. And so could I build with Electron, you know, a desktop version of Google Docs without having to run Google Docs itself? Can I wrap it and provide some integrations with my, yeah? Yeah. So the really easy way to do that would be to use a tool called Native Fire, which is kind of a weird name, but it's essentially like Fluid App, but it's an electron thing and it's a command line tool where you just call native refire you give it a url and you can pass various arguments like the icon you want it to use the name that you want the app to have when it lands in your applications directory and things like that but the really interesting part is you can also pass in a custom script that'll be executed in the window context of that app. So let's say you wanted to make your own little GitHub.com GUI or your Google Docs
Starting point is 00:52:15 GUI as a standalone app, but you wanted to make it so that various aspects of the app behave differently. Like you don't want to see the menu bar at the top of the screen. So you could just write a tiny little JavaScript that is like, you know, document.find this element.remove this element. So you have a lot of flexibility there, and you don't actually have to do a lot of work. So in that case, you don't really need to know anything about Electron. If you know a little bit about how to work with the dom and like um if you want to drop in jquery or whatever um that's all doable so that's like the easiest way to do it but if you want to go if you want more explicit control over wrapping some website, then you could actually create your own Electron
Starting point is 00:53:07 app from scratch and then have it open up that website in a web view. And then you still have access to all kinds of other things. So in that context, you would have access to the user's file system. You'd have access to all the HTML5 APIs like geolocation and things like that. If you wanted to add supplementary
Starting point is 00:53:31 features or behaviors or take things away from existing websites, you have that option. It's kind of like an extension of browser extensions that's going a little bit even farther. I've done I have a couple of them that I run for. Like I have one for inbox Google, like Gmail inbox that that I use just to keep it so I don't have to have a pin tab in my browser.
Starting point is 00:53:59 But I think it's probably a good chance for a break. On the other side, we've got some more questions for you. Like what's the future of Electron? Are there any downsides? When's it a bad idea to use? Those kind of things. So we'll break here and we'll talk email called ChangeLog Weekly. It's our editorialized take on what happened this week in open source and software development. It's not generated by a machine. There's no algorithms involved. It's me. It's Jared. And curating this email, keeping up to date with the latest headlines, links, videos, projects, and repos.
Starting point is 00:54:40 And to get this awesome email in your inbox every single week, head to changelog.com slash weekly and subscribe. All right, we're back with Zeke talking about Electron and we've talked about what it is, why you can use it, why you might want to use it. We even talked about the changelog, maybe building an Electron app. How cool would that be? Super cool. Let's talk. That'd be super cool. Let's talk. That'd be super cool. Let's talk about the downside of like, let's talk about a little bit of places
Starting point is 00:55:09 where maybe Electron doesn't quite fit in or it's not optimal cases where somebody might pick it up and then say, Hmm, this is not the tool for the job that I need solving. So Zeke, I know it's tough because you're, you're an Electron guy, so you got all the good sides, but surely there's some places where it doesn't quite fit. Can you share some insight there? Sure. So the biggest one that stands out to me is that Electron doesn't work for making mobile apps.
Starting point is 00:55:34 So that's one of the questions we get a lot is like, why doesn't it support mobile? When will it support mobile? And the best answer we have for that right now is, you know, it seems inevitable that eventually the world will converge on a JavaScript, HTML, and CSS framework for building apps that can be deployed to, or built for all platforms and all devices.
Starting point is 00:56:03 We're not there yet, so I think the thing to do now is just design your applications in such a way that the moving parts can be shared across platforms. So if you're developing an Electron app, you could develop part of your app as a server that could be used by your mobile app and your desktop app, or you can write small NPM modules that can be shared between your applications. So that's kind of a bummer, but I think it's only a matter of time
Starting point is 00:56:37 before we will get to this beautiful place where JavaScript developers can write native applications. And there are interesting things happening in that space. I mean, of course, React Native is a really exciting project. And you can build apps for those targets. Electron has a little bit of catching up to do in that space, though. Another thing that comes to mind is that, in general, Windows developers are underrepresented. So a lot of the web development world is focused around Unix
Starting point is 00:57:19 and Linux kind of methodologies. And there's an expectation that you can run bash commands on your machine. So a lot of times we will get bug reports from people running on Windows systems. And our team, we all have virtual machines for running various versions of Linux and Windows. But without that sort of intimate knowledge of Windows and how to develop in Windows, it can be hard. So that's definitely an underrepresented part of the developer community now. I would imagine that Microsoft with their Visual Studio Code project would probably be able to help out or at least be a good you know citizen
Starting point is 00:58:05 with regards to getting you guys windows bug reports or help that have you experienced that at all yeah there's a guy named felix reisenberg or reisenberg i'm not sure how to say it but he just uh he was at microsoft for a while and just very recently uh moved over to work at Slack. And he's been really one of the sort of foremost evangelists for Electron in the Windows space. And now that Slack has three or more engineers working on Electron, they're all actually really focused on the Windows stuff and they're all core contributors to Electron as well well so things are definitely getting better and we do have access to people who um work for microsoft or work on microsoft platform but um internally on our team it's definitely a space that we are not totally
Starting point is 00:59:00 comfortable with yet well you have four people on your team there at GitHub, and no doubt y'all are busy working on all sorts of cool new things. So let's talk about what you've been working on lately, new features coming to Electron, changes, and then give us a glimpse into the future for the project. Sure. So Electron gets shipped about, a new version gets shipped roughly once every week. And typically this is just to get us up to running the latest version of Chromium and the latest node. So whatever features are trickling down from Chromium, those automatically end up in Electron.
Starting point is 00:59:37 Usually it's a lot of small details that are, you know, sort of idiosyncratic little pieces of changes on various operating systems. It's mostly stuff around native integration, like the way that trades behave or the way that windows behave when you fullscreen them or take them out of fullscreen mode, or the transparency of windows and things like that. So mostly just lots of little bug fixes
Starting point is 01:00:05 and maintaining the status quo. We've recently improved the process for publishing to the Windows Store and the Mac App Store. So there's a document on the Electron website for how to publish to those stores. There's a little bit of work you have to do, and there's some considerations that have to be made when you want to publish for those platforms. Like if you're publishing to the
Starting point is 01:00:30 Mac App Store, you can't use the auto updater, or you can't use the debugger, the built-in debugging tool, because it makes network requests that aren't allowed by the App Store. So there are some considerations that need to be made, but there is definitely full support for publishing to those two stores. Another thing that just happened is that we reached out to the owner of the Electron package on NPM, and he was willing to hand us the name. So traditionally, if you wanted to start building an Electron app, you would npm install Electron prebuilt, which is just a precompiled version of Electron that is the right one for your operating system.
Starting point is 01:01:13 So we had a lot of users who would just dive right in and type npm install Electron and they'd get the wrong Electron because it was some old project. So we just managed to switch over to that new name and we will continue supporting the old name through 2016. But we've done a lot of work in user land to patch various popular projects so that they will work with either name. But the hope there is that newcomers to the project
Starting point is 01:01:43 will not be dumbfounded when they NPM install the wrong thing. It's nice to hear that the owner of the Electron name was willing to give it over to you without much trouble. Yeah, his response was, I knew it was just a matter of time before you would contact me. You didn't have your lawyers kick down the door. That's so funny. Yeah, we actually did the same thing with the GitHub. So we have the Electron organization on GitHub as well, and there was a user named Electron.
Starting point is 01:02:11 So we reached out to them too, and they were happily willing to turn it over in exchange for a GitHub hoodie. Those GitHub hoodies are quite lucrative. Yeah, the power of swag. They can pave the way for many things. Indeed. Other things coming along, we are working on generating a JSON schema of all of Electron's APIs. So the goal there is to just have a JSON object that describes
Starting point is 01:02:41 all the classes, all the modules, all their methods, arguments, events, the properties of all those events. And it's kind of open-ended what the purpose of that is for. Immediately, the immediate purpose is just to have some kind of specification for our APIs. And so we've kind of gotten more detail-oriented around how we generate our documentation for Electron. But the hope is that this schema could be used to make IDEs that are more Electron-aware. So as you're typing Electron code, it'll auto-suggest the right method names and arguments and things like that.
Starting point is 01:03:20 And also TypeScript is kind of blowing up in this community so we're looking to figure out how to get some TypeScript definitions for Electron that are always going to be up to date. Something else you teased me about during the break which I'd love to have you share with the listeners is that we talked about a changelog desktop app but that's just conjecture. One thing that you said is definitely, at least in the works, is a GitHub desktop app based on Electron.
Starting point is 01:03:47 Can you tell us about that? Yeah, so the GitHub desktop app that the public knows about right now is it's built in, well, it's actually two different code bases. So there's the Windows version and the Mac version, and those were sort of worked on and maintained by two different teams at GitHub.
Starting point is 01:04:08 And recently they decided that we should be dogfooding and actually using Electron internally for more projects. So they've started on a new version of GitHub Desktop, which is not yet public, but I've been watching the activity and it's really astounding how much work they've gotten done. It's just a small team working on this app. So it's really nice because they don't have to, the sort of operating system specific expertise is not really required in the same way anymore. So the team can move a lot more quickly but um yeah stay tuned for um a new version of github desktop at some point i'm not sure when it's expected to
Starting point is 01:04:50 be um opened up but it will also be an open source app so um when it's when it's ready so the hope is that that can be a nap that is exemplary of the kind of things you can do with electron is it the same team working on it or is it a new team? It is the same team. And, uh, so Josh Abernathy who runs the team was just had a recent tweet stream about, uh, or tweet storm about how, how awesome it is to be working in this, um, with this set of tools where they can move so quickly.
Starting point is 01:05:24 And he was sort of lamenting the fact that he spent so many years as a coco developer and that never would have been able to move this quickly wow developing in coco so so is this application is it kind of a a feature looking for feature parity with the current github desktop or is it a rethinking and brand new app it's definitely for starters seeking feature parity with the existing app because they don't GitHub desktop or is it a rethinking and brand new app? It's definitely for starters seeking feature parity with the existing app because they don't want it to be too much of a change from what existing GitHub desktop users are accustomed to. So gotcha. I think the lot, the larger,
Starting point is 01:06:00 the longer term goal is for this tool to be something that allows for deeper integration into the desktop environment for GitHub. So it could also become the sort of blessed way, the canonical way of setting up GitHub on your machine. So for new users who are just unfamiliar with Git, or even if they are familiar with Git, this could be the best way to just set up GitHub on your machine by just running this one installer and knowing that everything is working properly for you. had the pleasure of Electron obviously with it being a starting point but then also to look at other areas of github where Electron can be used and then dog voting is always good because if you continue to build the desktop app natively versus Electron we might say hmm why are they doing that but we're
Starting point is 01:07:00 not gonna do that because that's not the truth yeah let's talk for some closing questions is there anything else you want to share before we cut to that part of the show? Anything else you want to share about Electron, the team, the future, anything left unsaid? Yeah, I have a couple notes here. One thing that's really cool that I didn't cover is that because Electron is based on Chromium, you get all these really nice new features that as a web developer, you're probably not accustomed to using. When you're doing normal web development,
Starting point is 01:07:36 you have to consider all the target browsers and all the sort of inadequacies of those various browsers. And when you're just working on Chromium, it's like you don't have to think about all those things. So Chromium has nearly complete ES6 support. So if you've started to get accustomed to writing the newer style of JavaScript, you can just do that out of the box with Electron.
Starting point is 01:07:59 You don't have to set up Babel in your tool chain. You can just write ES6 and it works. The other thing is like, there are a lot of really interesting new CSS features coming, or actually they're already in existing versions of Chromium and Electron. So one of them is CSS properties,
Starting point is 01:08:19 custom properties. They're like, if you're familiar with variables from Less or Sass or Stylus, it's essentially the same thing. It's, you can declare a property in your CSS style sheets and reuse it in various ways. So super cool. Yeah. So there's like all these little things that are making regular CSS and regular JavaScript good enough.
Starting point is 01:08:44 So you don't, the, you don't have to spend as much time setting up an entire build process for your application. You don't have to bring in Sass or Lesser Stylus and transpile those on the fly. You can just write regular CSS. And in many cases, it's actually good enough. There's also a new thing called the CSS containment property, which lets you limit the scope of the browser's layout and paint work.
Starting point is 01:09:13 So if you're trying to get really high performance graphics in your application, this is a new sort of low level feature that you can manipulate in CSS to get the highest performance and frame rate out of the DOM. So those things are all really exciting, and it's really nice to be able to create applications without having to set up too much boilerplate. It's always good not to have to jump through hoops or do so much ceremony to get the latest, greatest features. Delivering to or building to one particular browser obviously has its advantages, so it's nice to see that Electron allows developers out there to capitalize on that advantage and even save a ton of time
Starting point is 01:10:01 because that's the point, right? The less time we spend redoing work or reworking things that has already been done before, or jumping right to ES6 with the latest features of CSS, the better it is for the ending product that we deliver to end users. So anything else you want to share? Is that it for your list, or can we go on to some of our closing questions?
Starting point is 01:10:24 Yeah, I think that's it. Awesome. So one of the questions we like to ask, especially in this case here, like GitHub is huge. We're honored to have you on the show and to share the story of Electron and your story also with our listeners. And we're huge fans of all the work happening there. But you've got to be asked all the time, like how can people of the open source world, how can developers step in and help the Electron mission?
Starting point is 01:10:49 So is it issues? Is it testing builds? Like where can people step in to really help Electron be exactly what you have all dreamed it should be and help that mission keep moving forward? So one of the things you just said is what we've dreamed it should be and help that mission keep moving forward. So one of the things you just said is what we've dreamed it should be. And we've been kind of trying to work out a roadmap internally for Electron, like what do we want it to be in the future? Where do we want to take it? And one of the things we realized is that as an open source project with a giant community, one of our main goals should be to listen to the community and to let the
Starting point is 01:11:27 community steer the development of the project so we shouldn't be like masterminding the future of this thing and in some sense it should just evolve organically and that's how it's been going so far so most of the work we're doing is doing is just kind of stewarding the community contributions and helping get more and more contributors up to speed. But areas where we're lacking are like I said, we could always use help in the Windows department. So anyone who is a Windows developer working with Electron, we can always use your help on issues. But another one is translations. So we have our documentation, which we maintain in English.
Starting point is 01:12:21 And the English version is the only one that we actually programmatically lint and make sure that it's all accurate. And there's a huge collection of translations in, I think it's 11 languages now, and over 100 people have helped us translate the docs into those languages, but they fall out of date. So anytime we make a change, it's not
Starting point is 01:12:46 guaranteed that anybody's going to jump in and update the English docs to work on those 11 different languages. So multilingual people who are using Electron, we could definitely use your help just jumping in and making sure the docs are up to date. At some point we will be doing a more large-scale effort to potentially hire translators to work on keeping a version, various translations up to date to a degree that we're comfortable displaying them on the website saying that yes this is definitely accurate. But in the meantime, yeah, just community contribution on documentation would be really helpful. So the docs are actually part of the
Starting point is 01:13:30 core Electron repository, right? So you got slash docs, everything lives in there. So if you need to make changes or initiate some changes, that's the easy way to do it there. You've got the blog where you're obviously keeping people up to date. And I think you mentioned some other ways to kind of voice the community's opinion. Is issues the best place for that? Is there a certain tag on your issues that you're leveraging to kind of say, you know,
Starting point is 01:13:57 help need or to help wanted or anything like that where somebody can kind of easily go there and see a quick list to start stepping in and helping out? Yeah, we do definitely use some of those labels. And thanks for outlining where the docs live. Yeah, we definitely keep the repository as the canonical source of all the documentation in the docs folder. And the website, the majority of the content on the website is actually just repurposed
Starting point is 01:14:23 from the repository repository aside from the blog posts but our plan internally is to actually continue to use the repository even more as the source of documentation because it it's in it's in front of people's eyes more and it's easier for us to just agree that we have this one canonical place to keep all the docs. So don't expect that to change anytime soon. But yeah, we definitely make heavy use of issue labels as well, too. So for people jumping in, it's pretty easy to find stuff to work on. I'm seeing the label beginner. So is that and then I also see a lot of beginner labels attached with documentation, too.
Starting point is 01:15:04 And even enhanced. And is that are you familiar I also see a lot of beginner labels attached with documentation too. And even enhanced. And is that, are you familiar with that label by any chance? And is that something that I also see help on it too. So I've only seen one of those I think is under help on it. But those are two labels I think are kind of like easy jump in points. Yeah, definitely. Yeah, there's like one, I don't know. There's more than that.
Starting point is 01:15:24 Anyways, that's a good label to hit up. There's actually two that have help wanted, that's an issue and it's open. So you've got two help wanted places. So we'll link that and the beginner label up in the show notes. That way we can give people a direct link to the issues that could be a good place to start with. In general, I mean, this applies to any open source project. But if you're filing an issue, try to see if the issue already exists somewhere on the repository instead of just opening one from scratch. And another thing is, you know, sometimes we get pull requests from people that don't necessarily fit the bill.
Starting point is 01:15:56 A good practice is to often just open an issue first to talk about what you want to change. So you get a little bit of conversation around it first. That way, nobody wastes their time writing code and opening a PR that may not get merged. A question we love asking is a hero question. So you've got somebody that's been an influencer to you, somebody that shaped who you are over these years. And it could be a programmer, it could be somebody else. But we typically frame it as who's your programming hero.
Starting point is 01:16:27 So who's that person for you? My programming hero is Max Ogden, known as Denormalize on Twitter and Max Ogden on GitHub. And he's one of the early sort of members of the Node community. And he's just a very prolific contributor to open source. He created a sort of methodology called openopensource.org. And it's basically, you know, he was creating so many repositories and eventually there's only so much that one person can do
Starting point is 01:17:02 to maintain these repositories. So he started handing out admin privileges to anyone who was making meaningful and valuable contributions to his project. So the idea behind open open source is if someone's contributing to your project and they're doing a good job of it, let them be a part of it. Give them admin access, make them an owner on the NPM repository as well. And this has a really profound effect on projects in my experience. As soon as you give someone admin access, they feel a sense of ownership over the project and in general, they're not going to mess it up.
Starting point is 01:17:44 They're going to take it seriously. So it can be a really great way to sort of free yourself up from projects that can become burdensome, especially if you're just producing a lot of really quality work and people start to really become dependent on these projects. Max Ogden was a very, very early contributor to a lot of Electron projects. So there's an organization on GitHub called Electron-Userland. And some of the most fundamental pieces of the Electron toolkit are on there.
Starting point is 01:18:20 There's one called Electron Prebuilt, which I mentioned earlier. And that's the thing that when you NPM install Electron, you're getting a precompiled version for your operating system of Electron. So Max Ogden and his partner in crime, Mathintosh Matias Boos, I think is his name. They wrote that. And they also wrote another thing called Electron Packager, Electron Download, a bunch of different parts of the Electron ecosystem. And GitHub, our team, has slowly started to become more involved in maintaining these projects. But we are indebted to Max Ogden for having written them in the first place. So Max is now working on a project called DAT.
Starting point is 01:19:07 And the goal of DAT is to enable scientists to share data with each other. So that's been his main focus for maybe a couple of years now. And he's mostly been focusing on raising money to build up a team for this nonprofit to enable scientists to share data. And in general, his mission is about improving the free exchange of information. And that's really what is the most inspiring thing to me. I'm not sure if you purposefully said Max Ogden or not, because on September 1st, we have a new show called Request for Commit. You may have heard of it, Zeke, but the listeners are definitely getting more familiar with
Starting point is 01:19:52 it. We've got three episodes out. As of Friday, we'll have four when this show actually airs. So we actually had Max on in episode, I believe it's six, which is slated to release in the month of September. So September 1st. And we talked about that and we talked about not that set in slang, but that is the project that you mentioned. And we talked about grant funding, what happens when you pay for open source work. We talked about all sorts of interesting things, his process to get grant funding. So Max has been very successful with getting and receiving grants and actually executing them very well.
Starting point is 01:20:28 And that's one of those things. And talk deeply about that project and about the human side of open source, not so much the technical sides of that by any means, but this grant funding process, leading open source in the right direction. So if you're at all a fan of that, listeners, you know, we love requests for commits. That show is hosted by Nadia Ekbal and Michael Rogers, and you can find it at changelog.com slash RFC. If you have not subscribed yet, please go do it right now. And September 1st is when Max's show comes out and it's going to be awesome. So perfect. Thank you for the perfect layup on
Starting point is 01:21:05 plugging request for commits because that's it couldn't have been any better i really appreciate that um anything else any last closing thoughts before we tell off the show i just feel really lucky to be working on this project and um to be part of something that people are so excited about i feel like it's been a really long time in the making. And we're just now finally in this place where developing applications with open web technologies is a reality for people. Yeah. It seems to be the perfect timing and even more so perfect timing for you
Starting point is 01:21:39 considering the history you shared early in the show and, uh, you know, having that designer background, but also the, the responsibility you've gained over these years on the developer side to deliver such a, a cool thing to impact such a large community,
Starting point is 01:21:54 I think is, has got to be emotionally rewarding as well as, you know, just rewarding in general as, as something you do every day. And that's, that's a cool thing to do. Yeah.
Starting point is 01:22:04 I mean, just to be able to work on something that I really enjoy and get paid for it, that's what more can you ask for? Nothing else. That's it, man. That's where you want to be right there. Yeah.
Starting point is 01:22:16 Well, Zeke, thanks so much for taking the time to share with us your story, the GitHub side of Electron's story and how the community can begin to dream with you. And then also just the invitation of the community saying that this isn't, you know, while it's created by GitHub and maintained by GitHub, it's not a GitHub only steered thing that you invited the community to dream with you and to influence that change, step in where
Starting point is 01:22:41 they can to make Electron what the community needs it to be. So I appreciate you having that direction. And listeners, we thank you, obviously, for listening to the show. We ship two emails every week, one daily, one weekly. And we actually didn't call it daily. We called it nightly. So if you go to changelaw.com slash nightly. And Zeke, you're a fan of this email, right?
Starting point is 01:23:00 You like the white version versus the black version. Not so much the color, but the fact that it's a little bit brighter on your eyes. I'm not sure why, but, uh, you're a fan of nightly. So any, any quick sentiment on nightly for the listeners to, to, uh, chew on for that? Yeah, it's just a good way to keep up on things that are happening on GitHub every day. We love GitHub, of course. So, uh, changewell.com slash nightly for that email, subscribe to that. And, uh, Jared and I, we work tirelessly changelog.com slash nightly for that email. Subscribe to that. And Jared and I, we work tirelessly all week long prepping for weekly, which is what we call ChangeLog Weekly. You go to changelog.com slash weekly.
Starting point is 01:23:35 Subscribe to that. It's our editorialized take on what's happening this week in open source and soft development. Our latest shows are in there. We do a lot of writing, painstakingly writing that email every single week, and love doing it. So please subscribe to that, but that's a, that's it for this show here. So let's call this one done and say goodbye. Bye. Thanks again, Zeke. Thank you next time.

There aren't comments yet for this episode. Click on any sentence in the transcript to leave a comment.