Before arriving at Dreamforce this year, I hadn’t heard anything about the new Salesforce development platform called “Lightning.” I wanted to take advantage of the chance to learn more while at Dreamforce, so I shuffled around my schedule and added a couple of Lightning sessions. I also grabbed the “Introducing Salesforce Lightning” ebook, hit the Quick Start session and did the workshop.
Before I get into the details, I’ll get this out of the way. My opinion on Lightning so far: it’s satisfactory. But, I have to say that I am a developer and can see how for someone without developer skills Lightning could be much more than satisfactory. To put this into perspective, Lightning is like Visualforce…but different. There are some neat things that you can do, and being able to grab community components is cool, but it’s not a magic bullet that will solve all of our problems–or at least not yet in the current pilot release. Once it’s been in the wild for a bit I’ll come back around and see what has changed.
To quote the Lightning component developers guide, “Lightning is a UI framework for developing dynamic web apps for mobile and desktop devices.” (This sounds great since Visualforce essentially enables us to modify HTML pages, plus some extra special sauce that lets us pull off a few other essential edits.) So, with Lightning, it sounds like we now have a full framework that will allow us to do more cool stuff. That means being able to create Lightning apps/pages that don’t require us to reload either another page or a new copy of the current page. It also allows for us to link up events for better communication between the individual components. Thanks to all these features, Lighting should set us up for a better MVC experience.
Now that you know what Lightning should do, it’s time to get into my thoughts on how it actually performs. Here’s my take on Salesforce Lightning as it stands now:
The first thing I noticed and liked about Lightning is the default/prebuilt component set. It allows you to start off with the Salesforce.com essentials that we consider standard. Now this sounds cool, but I don’t know many developers who really end up using the prebuilt standard anything in Salesforce. But at least it gives people a place to start and possibly a very quick developer experience if you stick close to the standards.
Next up, performance improvements. According to the literature and documentation, Lightning components are supposed to update individually without needing to send more data across the wire or refresh the entire page. On bandwidth-starved devices (like mobile), this might be a godsend. At the same time, it might be irrelevant if you have a massive bandwidth budget. Regardless, needing to update only the things that change is a nice feature.
Now let’s discuss Lightning events. Ok, I’ll admit, I’m a fan of events in general. It basically tells us, “When this happens, do this.” And being able to use a publisher-subscriber approach to connect events with handlers makes it easier to move data and commands around the application. All in all, I’d say a big win here.
My first impression is that the cross-browser compatibility is one feature of Lightning that could prove to be extremely useful. We’ve likely all ended up hunting specific browser bugs that waste mountains of our time. In theory, this should put an end to those issues, and I’m excited to see how this feature performs in the real world.
ENCAPSULATION OF THE COMPONENTS
I think the best thing about Lightning is the encapsulation of the components. In a normal Visualforce page, you need to edit the whole page, for the most part. And if one thing changes, it might destroy the entire page in a fountain of fire and doom. With Lightning, as long as the external interface of the component stays the same, you can mess with the internals all you want. This has the glorious benefit of letting dev teams of more than one work in the same app, but not the same file. I can be working on my component over here and you can be working on your component over there, and we can totally avoid stepping on each other’s toes. I’m really excited by this.
While I consider Lightning to be a satisfactory tool now, I know it will be continually improved, and I’m looking forward to what it will become. If you have a decent mobile component to your Salesforce.com apps or like the idea of two developers being able to work simultaneously in a single VF page, there is definitely something here for you. However, in my case, Lightning hasn’t yet hit that point of indispensability that things like Enterprise Patterns have. Having said that, I’m very optimistic for the future and can’t wait to see how Lightning changes and improves in upcoming releases.