I am frequently asked why I created Drone and why one might want to choose Drone instead of Jenkins. Below is an archived response to these questions from 2016.
I created Drone because I wanted a Continuous Integration system that empowers its end-users. I’ve worked at a few large companies, and at nearly every large company the end-users have little or no control over the build environment. Every time we needed to install software (node, java, etc) we had to open a ticket. Every time we needed to update software (node, java, etc) we had to open a ticket. Every time we wanted a new plugin we had to open a ticket. Every time we needed to add server capacity we had to open a ticket to re-setup the machine with all the build dependencies and software … you get the point.
I believe Drone solves these problems because the user has direct control over every aspect of the build process, from build environment to plugins, defined directly in a yaml file in your git repository. If the user defines a specific version of Node or Mysql in the yaml file the Docker image is automatically downloaded. If the user defines a specific plugin the in yaml file the Docker image is automatically downloaded. We no longer have to worry about version conflicts between different teams because Docker images are tagged and isolated. We no longer have to worry about setting up new build servers because the required Docker images and plugins are sourced from your yaml and are automatically downloaded on-demand.
In addition, Drone has a very unique plugin model that, in some ways, is more flexible and secure than Jenkins. This is because plugins are simply Docker images that are executed at runtime. Since a plugin is just a Docker image, you can easily write custom plugins in whatever language you want, and automatically distribute your plugin via the Docker registry. Your plugins can even auto-upgrade!
In summary, if you use standard tools and processes and a Docker build environment, Drone will be easier to install and maintain thank Jenkins. This is why my goal is to create a developer-driven, developer-configured Continuous Integration system where you never need to login to a server, or ask a sysadmin for anything, ever.