I had the privilege of speaking at TrailheaDX this year about how we use Salesforce DX here at CRM Science. As much as I love to speak about DX, the main reason why I attend these conferences are to learn more about what the platform currently provides, and what we can look forward to in the future from it. This year’s TDX did not disappoint in announcements. Here are the three key takeaways I learned about Salesforce from this year’s conference:
1. Solving the “Happy Soup” Issue
The Salesforce DX keynote began with a very frank message from Salesforce to developers - we know you are having problems adapting to DX, and we want to help you with it.
The issue they are referring to has been called the “Happy Soup” problem within the development community. Salesforce DX is a package-based system, so it requires the developer to break apart their existing code base into individual projects. These projects then return back into the sandbox and production org as unlocked packages.
However, developers have gone many years without such modularization in their sandboxes, and so all their content is mixed together in a “happy soup” on their orgs. The issue that developers are facing now is that they are having a very hard time breaking apart that soup into their DX projects.
Salesforce is responding to this issue by developing the Dependency API - targeted for pilot in Summer ’18. The API will allow developers to query for any metadata component and find all other components that are being referenced within it. The API will also allow developers to query any components and find all other components that reference it.
It will still be up to developer to analyze the results of these queries to figure out the best way of breaking apart their happy soup. But as Andrew Fawcett demonstrated during the keynote, the data can be easily imported into a graphical chart to give you a visual representation of your soup.
Salesforce is also going to improve on its own documentation to clearly state what components are available for use in DX scratch orgs, Metadata API, and unlocked packaging. This status report will be consolidated into one single table, and the documentation will be updated in real time and more and more components are added to each channel.
2. Adding More Power to the CLI
The keynote continued with the announcement of two major upgrades to the DX CLI. The first was the introduction of the Salesforce DX Core Library. This library allows developers to create their own extensions to the CLI using Node.JS. They will have access to Salesforce authentication, project information, and the ability to output back to the CLI in the same format used by any other command. Developers can also publish their custom plugins to NPM and share them with the rest of the development community.
The backbone of the Salesforce CLI is also being released opened sourced as the Open CLI Framework and can be found at https://oclif.io.
The second area of CLI enhancement comes in the form of debugging. Developers can now use the force:apex:log:tail command to stream all debug information directly to their terminal window while using their scratch org in a web browser. This means that developers no longer has to open and search through each log in the Salesforce UI or developer console. The logs can be color coded as they appear on your terminal window and you can use additional commands like GREP to filter out only the lines that you wish to view.
These streaming logs will serve as the driving force behind the Apex Replay Debugger - a new extension for VS Code coming in pilot for this summer. Developers will be able to use the debug engine in VS Code to replay the events of the log, set up breakpoints, and walk through the code step-by-step. These type of tools have long been needed within the Salesforce community for some time. While there have been attempts in the past to bring them to the developer console, this demo felt a lot more robust and easier to use. We will be very interested to see how it works in the real world.
3. End-to-End Demos
The most impressive display from Salesforce for developers was not in the keynote but actually on the showroom floor. Two massively interactive demonstrations showcased some end-to-end functionality using multiple aspects of the Salesforce platform.
The future of customer service was the focus of the IoT Smart City - a huge Lego display that included various playsets and a replicate Salesforce Tower. We were shown various ways to use an iPad while interacting with the city. Customers can point the camera to a Star Wars ship to pull up pricing information for it on an online shop. Support people can use Augmented Reality to see where a particular piece is needed to be placed on a crane display. And shoppers can use beacon technology to place their phone near a display and find accessories for those kits.
At the Robotics Ridge, automation is on display as users selected a type of ball from a lightning component displayed on an iPad. A robotic arm finds the ball on a table, identifies it using the Einstein Vision API, and moves it onto a conveyor belt. The belt takes the ball to the humanoid robot, who then picks it up, inspects, snaps a photo, and drops it into a bucket. That photo then appears in a separate lightning component on the iPad. The whole process was programmed using platform events, process builder, and the IoT cloud.
When you look at all the different functionality that Salesforce provides through all of its developments and acquisitions throughout the years, you begin to lose sight of how they can all work together in one comprehensive situation. These two demos really drive home all the power that the platform can provide, and it did so in a fun and tangible way.