Industry: Software Development

JetBrains products used: PyCharm

Organization Size: 500+

Country: International

OpenStack

OpenStack is one of the most widely deployed open source cloud software in the world. It is developed by the community, for the community with more than 200 projects being actively contributed to in the ecosystem spread over 187 countries. OpenStack was voted the ‘PyCharm Project of the Decade’.

“PyCharm has tons of advantages when compared to text editors in terms of supported functionality. With respect to Python development, PyCharm definitely stands out with features like remote debugging, code quality checks, and integrations with third-party software like Docker and Kubernetes.”

— Swapnil Kulkarni, Active Technology Contributor, OpenStack

Could you tell us a little bit about yourself and your journey to becoming an OpenStack contributor?

I have over 12 years of software development experience. I have been working with the containers team in the OpenStack community for more than 4 years, and have worked on multiple use cases to utilize the container ecosystem in OpenStack such as the entire containerized deployment of OpenStack with the project Kolla. I also work as a core reviewer with the OpenStack requirements team.

Could you please describe OpenStack for those who don’t know you yet?

OpenStack started as an open source cloud operating system with initial contributions from NASA and Rackspace. It provided a much-needed alternative platform for enterprises looking for an open source private cloud. It started with only a Compute (Nova) and Object Storage (Swift) component and has since then acquired more than 250+ active technology partners with active developers contributing to different features to make it a viable private cloud deployment player.

Where does OpenStack operate?

OpenStack operates in more than 187 countries and has a developer community as well as an operator base on every continent. There is a diverse user base from small development clusters with single digit nodes to large scale clusters with thousands of nodes such as one of the largest CERN labs.

Tell us how OpenStack is organized as an open-source project?

The different projects, initiatives, and events in the OpenStack ecosystem are governed by the OpenStack Foundation. The source code is mirrored on Github from source code managed on OpenDev repository, and everything is reviewed with Gerrit. The technical decisions related to the projects and community are done by the Technical Committee, which is formed by a community-wide open election process from all active contributors.

There are over 200 projects that are being actively contributed to in the ecosystem. The projects can be categorized into multiple streams such as Compute, Storage, Networking, QA, Deployment, Security, AI/ML, etc. With thousands of incoming reviews every week the community relies on the infrastructure contributed by companies like Vexhost to perform the continuous integration and delivery jobs.

OpenStack team

How are the OpenStack teams organized?

Each OpenStack project has its own core team. The size is dependent on the number of contributors and incoming project reviews. It could range from a small core team of around 5, to a team of 50 or more for larger project groups. Each project group is part of a broader stream with community-wide goals. Apart from the development teams, there are special interest groups like the Operators group, who collaborate and focus on requirements and issues with OpenStack deployments. We have a user-committee for getting feedback from OpenStack users and a Technical Committee that works as a catalyst between the users, developers, operators, and the Foundation board members.

What are the main languages and technologies generally used at OpenStack?

More than 95% of the entire OpenStack codebase is in Python. For any requirements related to web development, we use the Django framework.

What’s so special about Python and why did you choose it as the main language?

First of all, Python is great for rapid development. It is much faster to develop a new feature with Python than from any of the other languages around… Ok, it’s not the only one, but the point is: deliverability. OpenStack has a very fast paced development model and it often needs to work with subsystems which require a language that has rich technical features and robust libraries. The language is required to be object-oriented and dynamically typed. Python satisfies those needs 100%. It’s also clean and easy to read and comprehend, that’s why we absolutely love it.

What kind of Python development are you and your team doing?

There are multiple streams of Python development in OpenStack teams. We have the APIs for each module, the scheduling algorithms, the components to give native calls to different hardware components, such as hypervisors, and storage subsystems. Python is also used for different requirements in the web dashboard development with the Django framework.

What do you think are the main development challenges for OpenStack developers?

Working with a huge project like OpenStack requires integration points at multiple internal projects as well as external supporting components. It requires single as well as cross-project debugging, integration with Git/Gerrit, managing requirements, real-time debugging, using integrations like Vagrant, Docker, Ansible, and Kubernetes. These are just some of the major challenges. A tool like PyCharm which has integration points or plugins available for such requirements definitely helps developers overcome a lot of them.

200 core developers at OpenStack use PyCharm. How does it help them be more productive?

PyCharm has tons of advantages when compared to text editors in terms of supported functionality. With respect to Python development, PyCharm definitely stands out with features like remote debugging, code quality checks, and integrations with third-party software like Docker and Kubernetes. The features most prominently used with PyCharm within my team are the remote debugging and Docker integration.

PyCharm works very well for most users. It provides support for project-wide code style conformance and version control. Many developers also find the quick-fixes quite useful and save a lot of time when fixing small bugs and doing code reformatting. Additionally, the debugging support makes it easier for development teams to verify the feature development. You can also use the Gerrit plugins to manage your code reviews from the IDE itself.

What about yourself, which PyCharm features increase your own productivity the most?

I am a contributor to multiple containerization projects within OpenStack, to start with, having an IDE with support for Docker integration really makes it a lot easier for me. It also helps me do some additional tests with containers for projects which are not containerized yet.

Have you ever encouraged friends or colleagues to use PyCharm? What are the top three features you mention when recommending PyCharm?

Yes. I always encourage my friends or colleagues to use not only PyCharm but the whole suite of JetBrains products as per their requirements. As I mentioned earlier, whether you are a newbie or a seasoned developer the features like intelligent code editors, smart code navigation, support for integrations with support tools like Git, Docker, and so on will help. Developers have a reliable tool that gives them the support they need to do their activities and they can concentrate on their development.

Contacts

Swapnil Kulkarni, Active Technology Contributor, OpenStack

twitter.com/coolsvap
www.openstack.org

Similar Customer Stories

RoadBotics

Matt Lucas, Head of Product, RoadBotics

We switched to WebStorm in part because a lot of the premium features come prepackaged, which let us get started quickly while reducing our dependence on additional third parties. Besides, having all of our software licenses in one place made it easier to manage access to our development tools.

Instil

Garth Gilmour, Head of Learning, Instil

When the social distancing restrictions were introduced in March 2020, we needed a tool that would let us collaborate online with students as part of virtual deliveries, and Space was the obvious choice.

Autodesk

Ben Asher, iOS Developer, Autodesk

With Kotlin Multiplatform an engineer can build out a new feature and test it on one platform, and then other platforms can just hook up the data models and business logic to the UI on their platform and reuse most of the groundwork. Now that we’re working in a shared codebase, we collaborate more across platforms.

More customer stories