Today developers are very "Code focus"!
But as you know, to run an application, code is not enough. We also need network to communicate with the app, a database to store/manage the data, frameworks to run the code, a server to host everything, etc...
But developers don't want to manage the infrastructure/platform part.
That's why Cloud Foundry is a "Application PaaS" (Platform As A Service) to create an abstraction layer.
Push your code and that's it! Cloud Foundry will detect your code, build the container with everything needed inside, and execute the final container with network and security requirements ($> cf push myApp)
"I'm a developer, I code, nothing else"
Regarding the PaaS editors, the game seems to be between OpenShift (Red Hat) and different Cloud Foundry distributions (HPE, SUSE, IBM, PIVOTAL, ...).
The Cloud Foundry Platform enables applications to be deployed on a pool of resources, and offers a variety of services, including messaging, database, authentication, API or monitoring.
Get more info on https://www.cloudfoundry.org/platform/
Cloud Foundry offers many choices to developers.
For example, they can use Java ™, Spring, Ruby, Node.js to rely on MySQL, MongoDB, PostgreSQL, Redis, RabbitMQ, and custom languages/services/frameworks.
The platform can be hosted on private or public cloud environments (Azure, AWS, ...), using OpenStack, Azure, AWS, or any other infrastructure.
To enjoy the PaaS benefits, your application has to be Cloud Native (more info with 12factor.net).
PaaS or CaaS ?
Depending if you want to be code focus or container focus, the right mix is not so easy to find. Basically, an Application Platform (like Cloud Foundry) offers a black box, ready to use, with managed services. A CaaS Platform (like Kubernetes) is expecting a Container, already built with all the dependancies.
Keep in touch, we will talk soon about this huge question.