Introduction

Technology companies developing cutting-edge software solutions are increasingly focusing on the Developer Experience (DevEx) to improve productivity and reduce time to market. Focusing on improving the developer experience has numerous advantages:

  • Reduced cognitive load for developers

  • Reduced software development costs

  • Increased software delivery speed

  • Increased software quality

  • Reduced burnout → happier developers → reduced attrition and higher retention rate

Developer Experience is the user experience that developers are subject to when developing applications using a platform, along with a host of supporting tools, utilities, and workflows.

The developer experience is a major component of, and usually related to the following terms:

Internal Developer Platform (IDP)

The set of tools and processes that software developers use to create business capabilities, and deploy them in production.

Platform Engineering

A diverse group of technology professionals - developers, system administrators, and site reliability engineers (SRE) that build, run, and maintain an internal developer platform.

Developer Experience Challenges

The following are some of the challenges developers face in their day-to-day tasks:

  • Developer Productivity

    • Lengthy onboarding of new developers before they become productive

    • Complexity in getting started, a lot of tooling, SDKs, IDE setup, and configuration needs to be done

    • Challenges in reproducing production environment in development/QA

    • For modern cloud-native applications, production is on Kubernetes/OpenShift, while development happens on laptops and workstations

    • Devs have programming knowledge, but little experience with containers and Kubernetes/OpenShift in production

    • It is complex and difficult to switch between different projects having different stacks and different versions of programming language runtime environments

  • Legacy Hardware and security challenges

    • Laptops are hard to secure, and easy to lose, putting sensitive source code at risk

    • More and more requirements and regulatory pressure to develop in secure and controlled environments

    • Virtual Desktop Interface (VDI) solutions are slow and painful for developers, making them less agile and effective

    • Laptop and workstation hardware cannot handle the demanding processing capacity to develop and test large, complex applications - upper bounds on multiple CPU cores, CPU speed, and memory sizes

Cloud Development Environments (CDEs): What and Why?

With the increasing capabilities provided by the cloud and modern Javascript front-end user interfaces to host applications of all types, it makes sense to explore the concept of a portable, cloud-based developer environment that can be accessed by a diverse group of developers spread over multiple geographies, with just a modern browser.

Enter the concept of a Cloud Development Environment.

According to Gartner:

Cloud development environments (CDEs) provide software developers with remote, ready-to-use access to a cloud-hosted development environment with minimal effort for setup and configuration. They comprise elements of a traditional IDE, such as code editing, debugging, code review, and code collaboration. They also provide consistent, secure developer access to preconfigured development workspaces. This frees them from setting up their own local environments, eliminating the need to install and maintain dependencies, software development kits, security patches, and plug-ins. Their seamless integration with Git-based repositories and continuous integration/continuous delivery (CI/CD) tools enhances developer productivity and developer experience. CDEs provide a scalable way to support a distributed workforce and hybrid work environments.
— Gartner
"What are Cloud Development Environments (CDEs)?"

The advantages of a CDE are as follows:

  • Near-instant provisioning of developer environments, on-demand for a new developer

  • Ability to reproduce cloud-native production environments in development (to speedy releases, and reduce the cliché of “but, it works on my machine!…​”)

  • Bring the day-to-day tasks that a developer does on his local machine (writing code, testing, debugging, and more), to a web-based IDE to improve the same developer experience.

  • Seamless switching between different projects with different stacks and different versions of programming language runtimes

  • Centralized security and access to source code backed by enterprise security standards (OAuth/OIDC, TLS)

  • Fine-grained resource control and multi-tenancy.

Red Hat OpenShift Dev Spaces

Red Hat OpenShift Dev Spaces is a cloud development environment (CDE) service for the OpenShift Container Platform. It provides a container-based integrated development environment (IDE) with a consistent, secure, and zero-configuration approach. The experience is as smooth, fast, and familiar as an integrated development environment (IDE) on your laptop.

Red Hat OpenShift Dev Spaces is built on top of the open source Eclipse Che project. Using Dev Spaces on OpenShift, source code never leaves IT-secured servers, but developers still have their development “sandbox.”

Watch this short 10-minute video for a brief introduction to Dev Spaces:

Red Hat OpenShift Dev Spaces Overview

The following are the notable features of the product:

  • VS Code and JetBrains IDEs in the browser - OpenShift Dev Spaces includes Microsoft Visual Studio Code - Open Source and JetBrains IntelliJ IDEA. You can choose which IDE to run in your cloud development environments. You need a machine capable of running a modern web browser to code, build, test, deploy, and debug on OpenShift. Administrators and developers can customize their Dev Spaces instance to support multiple programming language environments. Each developer gets his own dedicated Workspace to work with source code.

  • Developer workspaces defined as code - Customize your workspaces using a YAML file (called a Devfile). The development environments are defined as code, which makes them consistent and eliminates "works on my machine" issues. You can customize the following:

    • Resource allocation (CPU, Memory, and Storage)

    • Pre-defined commands to build, test, debug, and run code

    • Containers with development tools

    • Containers or Kubernetes manifest for services required for testing

    • Workspace start and stop events let you further customize your environment on entry and exit

    • Source code repositories (Git) integration. You can push and pull code to and from Git repositories from within the workspace.

  • Enterprise integration - The cloud development environments run inside the organization network, and the source code access is secured using the same tools used across the rest of the organization. Workspaces can be automatically configured with enterprise proxy and trusted TLS certificate bundles. Access to the workspaces is secured using OpenShift OAuth and allows LDAP or Active Directory (AD). Administrators can easily manage and monitor workspaces as any other Kubernetes resource.

  • Kubernetes/OpenShift development made easy - Build and test cloud-native applications on OpenShift without having to configure access credentials manually. Development environments run on OpenShift, and are pre-configured with developer credentials.

  • Ready-to-use Templates based on Red Hat technologies - Leverage the bundled well-tested, certified container images for popular stacks (programming language environments) as the base for your enterprise-grade applications. Use images as is, or customize them further to adapt to your needs. You can maintain custom images and Devfiles in your own Devfile registry.

  • Efficient image builds with fuse-overlays storage driver - enable faster builds and more optimized storage usage for podman build and buildah tools within your Red Hat OpenShift Dev Spaces workspace.

Differences between Eclipse Che and Red Hat OpenShift Dev Spaces

Although Red Hat OpenShift Dev Spaces is based on the upstream, open source Eclipse Che project, there are several key differences:

  • Red Hat provides subscriptions, QA, and packaging to ensure enterprise-level support for Red Hat OpenShift Dev Spaces. See Red Hat OpenShift Dev Spaces life-cycle and support policy for details

  • Dev Spaces is supported only on Red Hat OpenShift

  • Dev Spaces is based on Red Hat Enterprise Linux (RHEL) and is regularly updated to include the latest security fixes

  • Dev Spaces provides several useful Devfiles by default, for working with languages and technologies such as Quarkus, Spring Boot, Javascript/Node.js, Ruby, Python, DotNet, Go, C/C++, PHP, and more

  • Dev Spaces uses OpenShift OAuth for user login and management by default

Demonstration: Walkthrough of Red Hat OpenShift Dev Spaces features

Watch this short 20-minute video showing a brief walkthrough of the most important features of Dev Spaces. You can play with the product for free by launching your own instance by going to https://developers.redhat.com/products/openshift-dev-spaces/overview.

Walkthrough of Red Hat OpenShift Dev Spaces features