Most of the articles, presentations or courses which promote DevOps approach are focused on the cloud and Web projects. Most of the DevOps successful stories are coming from the Internet industry. While there are many good reasons why this philosophy is so widely accepted by the Web community, desktop software developers may greatly benefit from the same principles.

Continuous deployment

The biggest difference between the traditional desktop software development and Web/cloud software development processes is the way software is delivered to the customers. While it looks like the need to have an installer as well as the user’s involvement in the installation process conflicts with the Ops component of DevOps, it also provides a hint how desktop software should evolve to stay actual.

Instead of using heavy monolithic installers, modern desktop applications may use some modular approaches allowing partial update of the software when such updates are available. Also, user’s involvement may be limited to just an acknowledgment or restarting of the application. Modern browsers, Visual Studio and some other applications provide a good example of this approach.

Technology-wise implementation of continuous deployment for desktop application is a no-brainer. Frameworks and tools such as Windows Store, Squirrel or Dropcraft make it easy to implement.

Continuous Integration

Part of the continuous deployment is the continuous integration. Web applications have no exclusivity there – source control, build and artifact management systems are widely adopted by all type of projects. In reality, most of the desktop-related companies which claim practicing of DevOps, do just continuous integration. They are organizing DevOps teams, hiring DevOps specialists and ask them to maintain source control and build servers - where is Dev here? Sounds more like a job description for an admin…

Title renaming is easy but does not solve the goal – ultimate responsibility of the developer for the developed feature, from the moment of developing it, to building and deploying to the customers. DevOps are still outsiders for the development team, somebody who are easy to blame for the failed builds or request to do unwanted maintenance work.

To follow DevOps approach, there is no need to organize new teams or increase budget for new roles – training, mentoring and shared responsibility for the CI pipeline will do the work as well.

Performance and usability monitoring

Monitoring of the user activities is a controversial topic for the desktop applications, while it is a normal practice in Web. Despite the uncontrolled nature of execution environment, hardware variety and difficulties with receiving customer feedback, performance monitoring solutions are not common in desktop software.

Use of telemetry information is one of the DevOps practices underutilized in desktop applications. Level of acceptance for sharing telemetry information varies from user to user and from industry to industry, so applications may provide different solutions for gathering and transferring telemetry data, acceptable for the end users. Unlike Web applications, where collection of telemetry is usually fully automated and hidden from the user, it is a good idea to let user of desktop application to control when and what is shared. An easy way to opt-out, ability to review the data before transferring, public data usage policy – all such approaches may increase acceptance of the monitoring by the users.

Is there a place for DevOps in desktop software development?

Yes! DevOps is as relevant for desktop applications as it is for Web and cloud solutions. Properly tuned continuous integration pipeline will lead to a stable, deployable build, which can be easily pushed to the customers and monitored for the user experience and performance, to guide product improvements.

blog comments powered by Disqus