- Why the difficulty with versioning and the desire for a less bulky framework wins out over a highly complex interface every time
Kris: Well the advice of the time was use whatever framework you’d like. And then in those days, it was quite a few right as you had Dojo, jQuery,EXT. And so there was no one said, “use this”.
Kris: Well the big thing was, is that they were we paid them a bunch of money to support us and in enterprises That always gets you a huge put up, right? Even though everything else was free and open source supported, we can always call them up and say, hey, we’re having this issue. Also, it had some really complex tools that were really important to Salesforce, such as the enhanced list view. Which for use cases is one of the kings. And they had an amazing one. And it had things where you can click on it and edit a cell for in line edit, it would get a little red triangle to show you this change. Wish you could save back. And so we thought this has to be the next big thing for us is getting these grids and components driving our UI. And obviously at this point, right, we’re doing page to page which is still how classic it is. And some of the features are going to be more long lived. And so you’ll go to like the Page Layout Editor or Chatter and you kind of do all your work and then you go to a new page, but we already have this ambition where we’re going to try to spend more time on a single page, which is eventually what we came to look like. But the team that was there their mission, right, they have a single page, bunch of components, just swapping out interactivity.
Josh: Kris is describing a fundamental shift in web application design that was gaining strength at the time, page to page applications versus single page applications. Now, single page applications are fairly common these days. But to make them work, you need a framework that understands how to render based on components, which wasn’t nearly as common back then.
Kris: Yeah, some of the like, I think back then it was largely like Dojo had a UI component framework. jQuery wasn’t really even taken off. And there wasn’t a whole lot of component options. There was things that you would buy and and set up in your framework and you have to have a license key for something so powerful.
Josh: So Salesforce is centering around ExtJS is because of good support in a very rich, highly interactive interface. But a key component, you know, no pun intended, of web application design is a quick loading interface. Ext is is offering a lot of power, but at a price.
Josh: Long story short difficulty with versioning of library beats out support, and the desire for a less bulky framework wins out over a highly complex interface, and turns into Lumen, an internal project at Salesforce to have its own framework for building out user interfaces.
Kris: Um, so there was a there was a point where we had the the code like, Meridian was the code word or the working name for a long time, but we knew that we weren’t going to go public with that, especially considering there was already another framework. It’s trademarked and they have that. And so we said, okay, we put a poll out on our internal chatter. We said, what should be the new name? And the poll chose Bloom? And Bloom, so it was okay. And then a guy went through and renamed the entire framework like 1000 files and had a good time. And then when Benioff it’s like, No, that’s not it.
And so, we had to go through the process again, get in higher levels of marketing.
Kris: We hire this other evangelist, Nicole Sullivan, who at this point is writing CSS. And she’s kind of selling these concepts that we need to be writing CSS this way to tag these class names that are utilities. We should have classes that mean something it was a lot more dependent on the mixture of markup, and CSS, but before which is you just describe what you’re doing with CSS and then CSS file, change it. And that’s particularly important for us because we found once we’ve optimized a lot of features, classic or Lightning, Salesforce, most of the performance penalty on these pages ends up being CSS. As people once quoted to me – CSS never gets smaller, it only grows.
Kris: Well, we’re starting to get the benefits from them, and just the framework that we’re developing. And then if we need something particularly important to Salesforce, it’s just security, right? We can’t have you running your component for credit card authorization and having this component there on the page and the same app because then you can just reach over and grab that information. Well, we need that that’s with it without that Salesforce can do its platform, customize it, installed packages and so we we have to support some Lightning Locker to do that. But locker obviously needs to be watching everything that you do. It’s going to inspect all the API’s and make sure that you don’t have access to the properties that have exposed and the DOM elements. And that was obviously very expensive. But if we can encourage the web standards to this is important for the web, that they should move in this direction, that at some point, it’ll just become a browser feature. And we can just put an attribute on the page, remove lightning locker, and we’re done.
Kris: That was, it was, it was one of the best trips I’ve ever had. It was just me cruising through Canada. Playing the four CDs that I had, were on loop with almost no money, right? You don’t want to burn all your money on your road trip. And then about halfway through my engine started making this clicking sound. And I’m like, I don’t know what this is. And my parents freaked me out, like, careful, don’t get stuck, you’re gonna die out there. And so I’m like, all I’m doing is like, okay, I’ll just give them more oil. So I just started there. And eventually it kind of works. The sound stops making such a loud sound. It ended up dying about three days after I got to Seattle. timing chain broke. And I found that’s not nearly as bad. That’s much worse than the timing belt. It’s like, a couple of thousand dollars or something. So I got lucky because otherwise I was stuck.