<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom" xmlns:dc="http://purl.org/dc/elements/1.1/">
  <channel>
    <title>DEV Community: Roman Kalkowski</title>
    <description>The latest articles on DEV Community by Roman Kalkowski (@spicyroman).</description>
    <link>https://dev.to/spicyroman</link>
    <image>
      <url>https://media2.dev.to/dynamic/image/width=90,height=90,fit=cover,gravity=auto,format=auto/https:%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Fuser%2Fprofile_image%2F888601%2F9d36b18f-0e4b-47a1-92d7-6f3cce5aa287.PNG</url>
      <title>DEV Community: Roman Kalkowski</title>
      <link>https://dev.to/spicyroman</link>
    </image>
    <atom:link rel="self" type="application/rss+xml" href="https://dev.to/feed/spicyroman"/>
    <language>en</language>
    <item>
      <title>Why Unleash loves private instances</title>
      <dc:creator>Roman Kalkowski</dc:creator>
      <pubDate>Fri, 14 Apr 2023 08:40:37 +0000</pubDate>
      <link>https://dev.to/unleash/why-unleash-loves-private-instances-ib3</link>
      <guid>https://dev.to/unleash/why-unleash-loves-private-instances-ib3</guid>
      <description>&lt;h3&gt;
  
  
  TL;DR
&lt;/h3&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;a href="https://www.getunleash.io/"&gt;Unleash&lt;/a&gt; started as a self-hosted, open-source side project. &lt;/li&gt;
&lt;li&gt;Single tenant private instances made sense as a natural extension of open source.&lt;/li&gt;
&lt;li&gt;From that decision came a lot of what makes Unleash unique in the feature management space.&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;
  
  
  Unleash: From side hobby to hosted solutions
&lt;/h2&gt;

&lt;p&gt;“We didn’t intend to commercialize at first. I really didn’t want to set up a multi-tenant solution if I didn’t have to. Plus the fact that we were open source was already a huge part of our identity.”&lt;/p&gt;

&lt;p&gt;This is Ivar Østhus, CTO of Unleash and one of its cofounders. He built Unleash as a side hobby. He didn’t anticipate that Unleash would grow into the company it is today.&lt;/p&gt;

&lt;p&gt;“Our first paid customer requested that we host them,” Ivar shares. “I looked at it as a one-time thing. It made a lot of sense to just set them up in a private instance.”&lt;/p&gt;

&lt;p&gt;It wasn’t a one-time thing. Or a three-time thing, for that matter. Unleash kept growing its cloud offering, and each new customer was given a single tenant private instance.  &lt;/p&gt;

&lt;p&gt;“Eventually we had a lot of customers that we managed manually, and it was at that point we had to decide whether to move on to a multi-tenant solution that could support all customers in a single application,” Ivar says   &lt;/p&gt;

&lt;p&gt;By then, Unleash was already seeing huge benefits with offering a single-tenant hosted solution.&lt;/p&gt;

&lt;h2&gt;
  
  
  Private instances mean security, flexibility, and…well, privacy
&lt;/h2&gt;

&lt;p&gt;“The main benefit of private instances is obviously security, but it’s also about flexibility and privacy.” says Ivar. “If you tell us to host your instance in the US, we can. We’ll host it in our US cluster and it won’t be in Europe.”&lt;/p&gt;

&lt;p&gt;In other words, private instances allowed Unleash to offer true data residency. Ivar knew that a multi-tenant hosted solution would be more limiting. &lt;/p&gt;

&lt;p&gt;“With multi-tenant, you don’t know where the data goes. You don’t know where it’s housed,” Ivar says.&lt;/p&gt;

&lt;p&gt;Privacy is in fact a huge benefit. Unleash’s approach to building private instances plays a huge part in it. &lt;/p&gt;

&lt;p&gt;“We didn’t build single tenancy into the software itself, but in the infra layer instead,” says Ivar. ”It basically means we can run separate instances of Unleash with unique configurations per customer.”&lt;/p&gt;

&lt;p&gt;Unleash customers also benefit from how we use Kubernetes to run applications in Docker containers: We use a separate namespace for each customer. This means a single customer can never access another customer’s data. &lt;/p&gt;

&lt;p&gt;“Every customer has their own database,”says Ivar. “It’s not technically possible to access the secrets of another customer.”&lt;/p&gt;

&lt;p&gt;Kubernetes brings with it a number of security features.   &lt;/p&gt;

&lt;p&gt;“The industry trusts Kubernetes,” Ivar says. “We do too. It’s the de facto standard of how you run applications today. With Kubernetes, it’s pretty much impossible to break out of a container.”&lt;/p&gt;

&lt;p&gt;Unleash also discovered a unique scalability that comes with private instances.  &lt;/p&gt;

&lt;p&gt;“If a customer uses beyond their committed resources, we can add resource limits or increase capacity at the customer level,” says Ivar. “We don’t have to apply it to the whole platform.”&lt;/p&gt;

&lt;p&gt;What this means is that, as a customer hosted by Unleash, you can trust that another customer’s usage won’t affect your own.  &lt;/p&gt;

&lt;p&gt;“We’re able to measure the performance–and in general, the SLI– per customer,” Ivar shares. “We have objectives per customer, not across customers. So we can figure out pretty quickly why a single customer might have a lower quality experience.”&lt;/p&gt;

&lt;h2&gt;
  
  
  Shifting from outdated technology to a future way of hosting
&lt;/h2&gt;

&lt;p&gt;“If we had started Unleash just a few years earlier, we would not have been able to scale private instances like we have,” says Ivar.&lt;/p&gt;

&lt;p&gt;This is because platforms like Kubernetes empowers Unleash to efficiently sandbox customers. And as managed Kubernetes matures, this sandboxing becomes easier and easier to run.&lt;/p&gt;

&lt;p&gt;“This significantly brought down the cost of choosing single tenant private instances over multi-tenant solutions,” says Ivar. “It changed the calculus, especially when you bring in all the benefits of single tenancy.”  &lt;/p&gt;

&lt;p&gt;In this way, single tenant private instances have shifted from an outdated way of doing things, to the future.   &lt;/p&gt;

&lt;p&gt;“Ten years ago it would have been nonsensical to choose single tenant,” says Ivar. “It would have been seen as a step backwards.”&lt;/p&gt;

&lt;p&gt;A focus on private instances is not for everybody, particularly for B2C companies.   &lt;/p&gt;

&lt;p&gt;“While we can do more today, there is obviously a cap on how many customers we can do this with,” Ivar says. “We’re nowhere near that limit, and newer technologies could make this even more scalable over time. But for a B2C company with millions of tenants, private instances probably wouldn’t make sense just yet.”&lt;/p&gt;

&lt;h2&gt;
  
  
  Private instances will likely be unique to Unleash for a while
&lt;/h2&gt;

&lt;p&gt;“In theory, if we wanted to shift to multi-tenancy at some point, I don’t imagine we’d encounter many hurdles,” says Ivar.  “You can’t say the same going in the other direction.”&lt;/p&gt;

&lt;p&gt;This is because Unleash scales per customer. Moving to a multi-tenant solution would only consist of a simple migration.  &lt;/p&gt;

&lt;p&gt;Multi-tenant solutions don’t have it so easy. “They would basically need to re-architect everything,” says Ivar. “This is especially true with a shift to microservices. They don’t easily migrate and require special, individualized attention.”&lt;/p&gt;

&lt;p&gt;There are obviously unique reasons why the switch from multi- to single tenant solutions would be complex, but the main gist is that multi-tenant solutions are just not built for the switch.&lt;/p&gt;

&lt;p&gt;In the end, for Ivar, it’s all about simplicity. &lt;/p&gt;

&lt;p&gt;“I really love what you can unlock by thinking in simple terms,” says Ivar. “For the customer, it’s just an app. It’s not rocket science.&lt;/p&gt;

&lt;p&gt;Simplicity is something that tends to resonate with developers, who habitually work with very complex systems. As a developer, Ivar is familiar with this mindset.  &lt;/p&gt;

&lt;p&gt;“We’re very good at making stuff complex, and making microservices on huge platforms where everything needs to be perfect,” says Ivar. “And we can be proud of complex systems that nobody understands.”  &lt;/p&gt;

&lt;p&gt;Private instances are a way to solve that inclination. “This is especially true with how Unleash has moved tenancy to the infra layer,” says Ivar. &lt;/p&gt;

&lt;p&gt;In other words, by using an infra layer for our private instances, aspects of Unleash like security, performance, privacy, and hosting flexibility remain baked in the Unleash infrastructure.   &lt;/p&gt;

&lt;p&gt;“This means we don’t have to reconsider those needs for every change we make to Unleash’s core application,” says Ivar.   &lt;/p&gt;

&lt;p&gt;As a result, the Unleash experience not only is a lot less complex, but can easily adjust to whatever a user needs.&lt;/p&gt;

&lt;p&gt;“What we’ve managed to do is make something simple, scalable,” Ivar says.&lt;/p&gt;

</description>
      <category>opensource</category>
      <category>programming</category>
      <category>cloud</category>
      <category>showdev</category>
    </item>
    <item>
      <title>Community-built: How Unleash’s open-source community coded its Flutter SDK, from the ground up</title>
      <dc:creator>Roman Kalkowski</dc:creator>
      <pubDate>Fri, 27 Jan 2023 12:40:38 +0000</pubDate>
      <link>https://dev.to/unleash/community-built-how-unleashs-open-source-community-coded-its-flutter-sdk-from-the-ground-up-3l27</link>
      <guid>https://dev.to/unleash/community-built-how-unleashs-open-source-community-coded-its-flutter-sdk-from-the-ground-up-3l27</guid>
      <description>&lt;h3&gt;
  
  
  Arif Hidayat couldn’t find the front-end SDK he needed to develop mobile apps with Flutter. So he built it himself.
&lt;/h3&gt;

&lt;p&gt;Arif is a software engineer at &lt;a href="https://www.bukalapak.com/" rel="noopener noreferrer"&gt;Bukalapak&lt;/a&gt;, an Indonesia-based e-commerce company. Its app is available in multiple app stores. The company recently transitioned to Flutter to develop its apps in tandem, and was looking into compatible feature flag solutions.&lt;/p&gt;

&lt;p&gt;“We wanted to check for open source projects that we could use for feature flags,” says Arif. “At the same time we had just migrated to Flutter. We checked if Unleash had an official SDK for us to use.”&lt;/p&gt;

&lt;p&gt;Arif’s search had limited success.  “There was a server-side Dart SDK that we could use, where we could see all our flags and manipulate them. This is great for our backend, but there wasn’t anything that we could use for our frontend side, on mobile. So we created it ourselves.”&lt;/p&gt;

&lt;h2&gt;
  
  
  A new library from scratch
&lt;/h2&gt;

&lt;p&gt;Diving into building the app was a learning experience for Arif. “I built the code from scratch. It was a great experience for me, as it was the first time I created a library,” says Arif.&lt;/p&gt;

&lt;p&gt;His approach was methodical. “We started out looking at the minimum requirements to implement our own SDK, including what would be needed using Unleash’s proxy with the different app stores. I checked with my engineering manager on where we would need more support, and what that would be. That list became the basis for our approach to coding the SDK,” says Arif.  &lt;/p&gt;

&lt;p&gt;The process has given Arif a new set of skills. “I think building libraries will be a lot easier for me in the future. I totally want to try again,” Arif laughs.&lt;/p&gt;

&lt;p&gt;Throughout, Arif was in touch with the Unleash team. “I reached out to (Community Manager) Pranshu, then (Unleash CTO) Ivar, and we had a discussion about what I had built so far,” shares Arif. “We went over what needed to be implemented to go forward with the SDK. Eventually we passed the SDK to the Unleash team for its final polish.” &lt;/p&gt;

&lt;h2&gt;
  
  
  Testing out the SDK in the Unleash community
&lt;/h2&gt;

&lt;p&gt;“I searched in GitHub  and found that there was a package in development by a writing team. When the first version was published, I immediately jumped on to try it. It worked.”  &lt;/p&gt;

&lt;p&gt;This is Davide Campagnola, a full-stack developer at &lt;a href="https://www.tutored.me/en/" rel="noopener noreferrer"&gt;Tutored&lt;/a&gt;. His company’s main product is an app which helps students and graduates apply for job offers. The traditional way of developing  mobile apps was slowing Davide and his team down.  &lt;/p&gt;

&lt;p&gt;“Every feature was tied to when the app was published. If it didn’t work, it didn’t work,” Davide shares. “We found it difficult to analyze the results of feature changes. It was a problem.”  &lt;/p&gt;

&lt;p&gt;The team wanted a better understanding of its users. “If people stopped applying, it was difficult to see why. Even if we did know why and wanted to switch off a feature, it could take days to get approval from the app stores. This was painful.” &lt;/p&gt;

&lt;p&gt;Because Tutored’s app is available in both iOS and Google Play, the company uses Flutter to build its mobile app.&lt;/p&gt;

&lt;p&gt;“We had seen earlier that feature flags were a good way to test new features,” Davide shares. “So we contacted Unleash about a Flutter SDK, and were one of the first users to try out the new SDK when it was published. This was two months ago.”&lt;/p&gt;

&lt;p&gt;Davide was really happy with the results. “With the Flutter SDK, I can test new features. We can publish an app as soon as possible, even on Fridays!” Davide laughs.  &lt;/p&gt;

&lt;p&gt;With the ability to use Flutter with Unleash, Davide and his team can experience the full benefits of feature management, including experimentation.  &lt;/p&gt;

&lt;p&gt;“Once published, we can check if a feature is working, which is really cool,” says Davide. “We can also experiment because all our flags are sent to an analytics service. We’re now able to know what changes once a flag is active, and if our audience applies to more job postings as a result.” &lt;/p&gt;

&lt;p&gt;Through pairing Unleash with Flutter, Davide’s company found a new way of developing software. “This is an approach that we never did before,” says Davide.&lt;/p&gt;

&lt;h2&gt;
  
  
  Building on a strong base
&lt;/h2&gt;

&lt;p&gt;The Flutter SDK is new, and Davide has ideas on how it could be even better.   &lt;/p&gt;

&lt;p&gt;“What we’d like from the Flutter SDK is a more reactive approach,” says Davide. “Right now you have a new widget that is built every time a flag changes. We know it’s possible to make it more synchronous because that’s how the JavaScript SDK functions. So there definitely are improvements, but we’re really happy with the Flutter SDK as it is today.” &lt;/p&gt;

&lt;p&gt;Arif agrees, and is eager to contribute to the future of Unleash’s Flutter SDK. He has ideas on where he’d like to start.  &lt;/p&gt;

&lt;p&gt;“The SDK is never done,” says Arif. “ We’re still improving it. One thing we’d like to do, for example, is create a widget so we don’t need to create a grid for another region to use the SDK. Or a builder that would synchronously update a flag. We also have some plans for implementing more analysis functions.” &lt;/p&gt;

&lt;p&gt;Now that the Flutter SDK is available, Davide’s team has seen tremendous results. “I don’t know if I can estimate how much time we’re saving, but it’s really a lot,’ Davide says. “Releasing in a more controlled way with rollouts and kill switches is a huge change. It transforms your entire development approach.” ** **&lt;/p&gt;

&lt;p&gt;“For us, the Flutter SDK has saved us a lot of time because we can do partial releases of features,” says Arif. “We have a real store and we’re an eCommerce company. And it’s really helpful to test out a release with say, 100 people, before releasing it to everyone else. I could easily say this saves at least one or two months of work.”&lt;/p&gt;

</description>
      <category>community</category>
      <category>flutter</category>
      <category>opensource</category>
    </item>
    <item>
      <title>How To Implement Trunk-Based Development? A Practical Guide</title>
      <dc:creator>Roman Kalkowski</dc:creator>
      <pubDate>Thu, 05 Jan 2023 08:00:51 +0000</pubDate>
      <link>https://dev.to/spicyroman/how-to-implement-trunk-based-development-a-practical-guide-7lm</link>
      <guid>https://dev.to/spicyroman/how-to-implement-trunk-based-development-a-practical-guide-7lm</guid>
      <description>&lt;p&gt;&lt;strong&gt;Trunk-Based Development is one of the most effective approaches in software development and can be a first step towards making the switch to feature management. Read this article to learn what it is and how it differs from how most engineering teams work.&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--jl9Sn6xE--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://cdn.getunleash.io/uploads/2023/01/Trunk-Based-Development_Feature-Image.png" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--jl9Sn6xE--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://cdn.getunleash.io/uploads/2023/01/Trunk-Based-Development_Feature-Image.png" alt="What is Trunk-Based Development" width="880" height="543"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h2&gt;
  
  
  &lt;strong&gt;Table of contents:&lt;/strong&gt;
&lt;/h2&gt;

&lt;ul&gt;
&lt;li&gt;Why the standard approach to the software development process doesn’t work&lt;/li&gt;
&lt;li&gt;Does software development have to be long and expensive?&lt;/li&gt;
&lt;li&gt;Key benefits of using trunk-based development&lt;/li&gt;
&lt;li&gt;Implementing Trunk-Based Development – best practices&lt;/li&gt;
&lt;li&gt;Make code development even more efficient&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;
  
  
  &lt;strong&gt;Why the standard approach to the software development process doesn’t work&lt;/strong&gt;
&lt;/h2&gt;

&lt;p&gt;Before we explain Trunk-Based Development, let’s look at the standard approach typical for most development teams.&lt;/p&gt;

&lt;p&gt;So, each developer creates a new branch for each recent change or feature. Then, when their component is completed and tested, it is merged with another branch of a lower environment (for example, dev or QA).&lt;/p&gt;

&lt;p&gt;So, most of the time, the developer works on a small part belonging to a larger whole, and changes in the branch do not affect other developers on the team. Only after time is his code merged upwards and then into the repository’s main branch to deploy a new, bigger production release. This approach is called branch-based development or branching strategy.&lt;/p&gt;

&lt;p&gt;Unfortunately, this way is usually inefficient, time-consuming, and expensive. It takes a long time to make each change, which can leave customers or users unsatisfied. What’s more, any bug in an application can cause significant downtime, and undoing the changes made is a complicated, risky and costly process.&lt;/p&gt;

&lt;h2&gt;
  
  
  &lt;strong&gt;Does software development have to be long and expensive?&lt;/strong&gt;
&lt;/h2&gt;

&lt;p&gt;As you can see, the abovementioned process can be inefficient and slow down the entire software development process. Fortunately, another approach allows you to develop software faster, more efficiently, and cheaper. And now, of course, we’re talking about Trunk-Based Development.&lt;/p&gt;

&lt;h3&gt;
  
  
  &lt;strong&gt;What is Trunk-Based Development?&lt;/strong&gt;
&lt;/h3&gt;

&lt;p&gt;In short, Trunk Based Development (TBD) is a software development process that involves a development team working in small batches and ​​merging their work into one main trunk.&lt;/p&gt;

&lt;p&gt;The name comes from the concept of a growing tree, where the thickest and longest element is the trunk (master), from which thinner and shorter branches develop. The method involves delivering small changes and fixes that, when completed, go straight back to the master. It means that releases come directly from the master branch. In this practice, the IT team tries not to create branches or maintain them for a maximum of one day. At the end of each day, work from all team members is merged into the main branch, which is merged upward.&lt;/p&gt;

&lt;p&gt;With this method, developers don’t waste time and energy on tiresome code merges or broken builds, and the code can be continuously improved. And what about the code quality? Well, adding automated tests and test code coverage metrics to the Continuous Integration process ensures that incoming changes have high-quality assurance.&lt;/p&gt;

&lt;h2&gt;
  
  
  &lt;strong&gt;Key benefits of using trunk-based development&lt;/strong&gt;
&lt;/h2&gt;

&lt;p&gt;Trunk-Based Development is a prevalent method that has many followers around the world. What is its phenomenon? Here are the most important benefits of this practice:&lt;/p&gt;

&lt;h3&gt;
  
  
  &lt;strong&gt;Adding changes quickly and efficiently&lt;/strong&gt;
&lt;/h3&gt;

&lt;p&gt;The trunk-based branching strategy continuously merges changes into the main branch. There are no long-lived feature branches to maintain and resolve conflicts. By implementing small changes, development teams avoid the risk of unexpected bugs or integration issues. Software developers can focus on creating code rather than making merges and fixing bugs.&lt;/p&gt;

&lt;h3&gt;
  
  
  &lt;strong&gt;Easily deploying new software versions&lt;/strong&gt;
&lt;/h3&gt;

&lt;p&gt;Trunk-Based Development is a method that works well not only for implementing small changes. When the IT team works on new software versions, they are also developed from the trunk, and different versions on environments can be deployed at will. Importantly, you don’t have to switch changes between branches to deploy new code to production.&lt;/p&gt;

&lt;h3&gt;
  
  
  &lt;strong&gt;Smaller and easier Code Review&lt;/strong&gt;
&lt;/h3&gt;

&lt;p&gt;Small changes are more accessible for code review. When you follow this practice, only a few or a dozen files are changed in the code. As a result, the development team can focus more on the code, identify bugs faster, and easily improve code readability.&lt;/p&gt;

&lt;h3&gt;
  
  
  &lt;strong&gt;One codebase for testing&lt;/strong&gt;
&lt;/h3&gt;

&lt;p&gt;When working in a Trunk-Based Development model, developers typically work on one software codebase, which is tested and deployed to production. New ones can be turned on or off using so-called Feature Toggles or Feature Flags, still based on a single code base. With this approach, the team can minimize the number of test environments and focus on only one or a few of the most stable ones.&lt;/p&gt;

&lt;h3&gt;
  
  
  &lt;strong&gt;Ability to introduce a CI/CD process&lt;/strong&gt;
&lt;/h3&gt;

&lt;p&gt;In a trunk development model, you can easily introduce a fast software release cycle through a Continuous Integration (CI) and Continuous Deployment (CD) process.&lt;/p&gt;

&lt;p&gt;After the changes are sent to the main branch, automated and quality tests will follow, and the application can be deployed to the test environment. In the next step, the development team can decide to deploy the changes or automatically send them to production. If you want to opt for the second option, you must remember to provide an easy and fast process for rolling back changes.&lt;/p&gt;

&lt;h3&gt;
  
  
  &lt;strong&gt;Increase speed and frequency of delivery&lt;/strong&gt;
&lt;/h3&gt;

&lt;p&gt;With a strategy based on small continuous deployments, the clients or users do not have to wait long for the changes they need. The development team can regularly deploy new updates without creating large, complicated ones. &lt;/p&gt;

&lt;p&gt;What’s more, if you’re not sure if users will well receive the changes, you can make them available to selected customers for early feedback. If the changes don’t work out, you can quickly withdraw them.&lt;/p&gt;

&lt;h2&gt;
  
  
  &lt;strong&gt;Implementing Trunk-Based Development – best practices&lt;/strong&gt;
&lt;/h2&gt;

&lt;p&gt;What can you do to ensure your trunk development implementation achieves the best results? Here are some proven practices that will bring you the most important benefits.&lt;/p&gt;

&lt;h3&gt;
  
  
  &lt;strong&gt;Implement automation&lt;/strong&gt;
&lt;/h3&gt;

&lt;p&gt;First of all, you should implement automation wherever it is possible and effective. It can involve software development, testing, and deployment. This approach will allow your team to perform fast and efficient iterations, minimizing the risk of damage to the main branch.&lt;/p&gt;

&lt;h3&gt;
  
  
  &lt;strong&gt;Use pair programming or mob programming&lt;/strong&gt;
&lt;/h3&gt;

&lt;p&gt;In Trunk-Based Development, code review should be done immediately. Moreover, automated testing will not always ensure good quality code, so it is worth using techniques such as pair programming or mob programming to improve team communication and allow real-time code review. The benefits of these solutions are great, as they not only affect the quality of the code, but also help integrate the team and enable the valuable exchange of knowledge. The last one is especially important if you have juniors on your team.&lt;/p&gt;

&lt;h3&gt;
  
  
  &lt;strong&gt;Try a feature flags management tool&lt;/strong&gt;
&lt;/h3&gt;

&lt;p&gt;Feature management is a technique for managing the feature development and testing process. It allows you to gradually release changes or new features to selected user segments before the entire software is deployed. The practice applies a technique called feature flags that enables IT teams to wrap new changes or features in an inactive code path and activate them at any moment.&lt;/p&gt;

&lt;p&gt;To make this process as easy as possible, it’s worth using off-the-shelf&lt;a href="https://www.getunleash.io/feature-flag-management-tools"&gt;feature management software&lt;/a&gt; such as Unleash. This tool allows you to experiment with features and &lt;a href="https://www.getunleash.io/blog/a-b-n-experiments-in-3-simple-steps"&gt;A/B tests&lt;/a&gt; to determine which version best meets users’ expectations. Moreover, the platform also enables continuous deployment of microservices, so developers can combine testing with feature deployment.&lt;/p&gt;

&lt;p&gt;All features are deployed without affecting the stability of the software, and your team can easily roll back any feature without affecting the rest of the software and without risking damage to the code in production.&lt;/p&gt;

&lt;h2&gt;
  
  
  &lt;strong&gt;Make code development even more efficient&lt;/strong&gt;
&lt;/h2&gt;

&lt;p&gt;Trunk-Based Development (TBD) is a well-known and efficient method used by technology giants such as Facebook, Google, and Netflix. According to the&lt;a href="https://services.google.com/fh/files/misc/state-of-devops-2021.pdf"&gt;Accelerate State of DevOps 2021&lt;/a&gt; report published by Google: &lt;em&gt;high-performing organizations are more likely to have implemented trunk-based Development.&lt;/em&gt;&lt;/p&gt;

&lt;p&gt;However, for this method to bring the best benefits to your company, you must ensure that you follow best practices.&lt;/p&gt;

&lt;p&gt;If you want to make code development and change management even more efficient – try Unleash. Our simple and intuitive platform lets you choose which users have which features. You can use multi-variant toggle flags across multiple environments, applications, and services.&lt;/p&gt;

&lt;p&gt;To use feature toggles, all you have to do is toggle them on (on) or off (off) with the toggle switch. What’s more, you can enable the feature for specific groups of users, such as users with specific IP addresses, hostnames, and others.&lt;/p&gt;

&lt;p&gt;Don’t wait and check out our feature management tool today.&lt;/p&gt;

</description>
      <category>howto</category>
      <category>softwaredevelopment</category>
      <category>trunkbaseddevelopmen</category>
    </item>
    <item>
      <title>Top 10 DevOps Trends for 2023</title>
      <dc:creator>Roman Kalkowski</dc:creator>
      <pubDate>Tue, 03 Jan 2023 09:00:00 +0000</pubDate>
      <link>https://dev.to/unleash/top-10-devops-trends-for-2023-m3k</link>
      <guid>https://dev.to/unleash/top-10-devops-trends-for-2023-m3k</guid>
      <description>&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fvioohvaje00ltbl25swl.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fvioohvaje00ltbl25swl.png" alt="2023 DevOps trends to look out for" width="714" height="442"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;DevOps is a set of practices that emphasizes collaboration and communication between teams involved in the software development process. By using tools like automation, continuous integration, and monitoring, DevOps aims to improve the speed and efficiency of software development by bringing together people, processes, and technology.&lt;/p&gt;

&lt;p&gt;In recent years, organizations using DevOps principles and practices are seeing improvements in the overall efficiency and effectiveness of their organization. &lt;/p&gt;

&lt;p&gt;If you’re looking to make cool things happen in your organization—and we think you are—here are ten 2023 DevOps trends you should pay attention to.&lt;/p&gt;

&lt;h2&gt;
  
  
  1: Scaling up smartly
&lt;/h2&gt;

&lt;p&gt;Need safety and speed? This trend focuses on ensuring that scaling up applications and infrastructure does not come at the expense of security or stability.&lt;/p&gt;

&lt;p&gt;Scaling up smartly allows for businesses to increase their overall load capacity without having to sacrifice their system’s performance or stability. It helps organizations reduce costs associated with application development, maintenance, and deployment while also maintaining a high level of security standards throughout the entire process. &lt;/p&gt;

&lt;h2&gt;
  
  
  2: Bringing speed to heavily regulated industries
&lt;/h2&gt;

&lt;p&gt;Bringing speed to heavily regulated industries is a key trend for 2023. With traditional models struggling to keep up with the increasing workloads, businesses are trying to find new ways to optimize their processes while still adhering to strict regulations. By introducing automated systems and better tracking mechanisms, companies will be able to accelerate their progress while staying compliant.&lt;/p&gt;

&lt;h2&gt;
  
  
  3: Taking clouds private
&lt;/h2&gt;

&lt;p&gt;As the world of DevOps continues to evolve, private clouds have emerged as an important trend that businesses should prepare for. Once known as single-tenant clouds, private clouds are the key for companies looking to modernize without sacrificing security. &lt;/p&gt;

&lt;p&gt;Companies can use private clouds to take advantage of traditional cloud features such as automated scalability, massive storage capabilities, real-time analytics, and data processing–all without having to manage their own hardware or infrastructure. &lt;/p&gt;

&lt;h2&gt;
  
  
  4: Transforming DevOps with Artificial intelligence (AI)
&lt;/h2&gt;

&lt;p&gt;The fourth trend to look out for in 2023 is the integration of Artificial Intelligence (AI) into DevOps. From automation to predictive maintenance, AI is transforming the way businesses operate today. &lt;/p&gt;

&lt;p&gt;AI allows developers and operations teams to concentrate their efforts on more strategic initiatives with greater precision and agility. There’s also tremendous potential for streamlining processes within an organization while enabling faster development cycles and better product releases. &lt;/p&gt;

&lt;h2&gt;
  
  
  5: CI/CD as a time saver
&lt;/h2&gt;

&lt;p&gt;The fifth trend to look out for in 2023 is known as Continuous Integration, Continuous Delivery, and Continuous Deployment (CI/CD). This process involves automatically building a product after every code change and then testing those changes to ensure that the entire system is working correctly. &lt;/p&gt;

&lt;p&gt;It also ensures that all the components of the product are properly tested before they are released into production. CI/CD tools can drastically reduce the time it takes for a product to be built and deployed, allowing companies to move faster when launching new features or fixing existing problems.&lt;/p&gt;

&lt;h2&gt;
  
  
  6: From monolith to microservices
&lt;/h2&gt;

&lt;p&gt;As we look ahead to 2023, microservices are set to be a key development in how companies create their technology infrastructure. A microservice architecture breaks up complex applications into smaller, independent components that can be developed and deployed independently from one another.&lt;/p&gt;

&lt;p&gt;In comparison with traditional monolithic architectures, microservices offer increased agility and faster time-to-market for new features or products.&lt;/p&gt;

&lt;h2&gt;
  
  
  7: The GitOps influence
&lt;/h2&gt;

&lt;p&gt;GitOps is a DevOps practice that has been gaining popularity into 2023. It combines version control with infrastructure as code and automation to enable rapid and secure deployment of applications. With this method, teams can speed up the production environment by deploying applications quickly and reliably using git-based workflow pipelines. This allows them to track changes, collaborate more effectively, and ensure compliance with organizational policies.&lt;/p&gt;

&lt;p&gt;By investing in this technology, businesses can benefit from improved collaboration between development and operations teams, faster deployments, simplified rollbacks for errors, and greater transparency about software changes across the organization. The adoption of GitOps is likely to become one of the most significant DevOps trends over the next several years due to its effectiveness in managing complex environments.&lt;/p&gt;

&lt;h2&gt;
  
  
  8: Front to back security with DevSecOps
&lt;/h2&gt;

&lt;p&gt;DevSecOps is an approach to software development that integrates security into the development process from the very beginning. It aims to shift security left, meaning that security considerations are taken into account from the earliest stages of the development process, rather than being an afterthought.&lt;/p&gt;

&lt;p&gt;Overall, DevSecOps aims to improve the security and reliability of software by integrating security into the development process and making it an integral part of the culture and practices of the development and operations teams. As DevSecOps becomes more widely adopted, its impact on DevOps practices for 2023 will be significant.&lt;/p&gt;

&lt;h2&gt;
  
  
  9: The speed and agility of low code application
&lt;/h2&gt;

&lt;p&gt;Low code application has emerged as one of the most sought-after DevOps trends for 2023. This technology enables developers to create applications quickly and efficiently without having to write complex code. It also helps traditional software development teams transition from monolithic architectures to microservices. This allows them to manage services independently while unifying them with common infrastructure and management tools. Low code application technology reduces development time, increases agility, and provides an intuitive development experience.&lt;/p&gt;

&lt;h2&gt;
  
  
  10: Improving response time with observability
&lt;/h2&gt;

&lt;p&gt;&lt;a href="https://www.getunleash.io/blog/unleash-statsig-analytics-insights-for-feature-toggle" rel="noopener noreferrer"&gt;Observability&lt;/a&gt; has become an increasingly important DevOps practice, and is set to remain a key trend in the coming years. It is a critical aspect of the development and operation of software systems, as it enables development and operations teams to identify and resolve issues quickly and effectively.&lt;/p&gt;

&lt;p&gt;Observability in DevOps involves the use of monitoring, logging, and tracing tools and practices to understand the behavior and performance of a system. This includes tracking metrics such as response times, error rates, and resource utilization, as well as collecting logs and traces of system activity.&lt;/p&gt;

&lt;p&gt;By using observability tools and practices, teams can identify issues and anomalies in a system and take corrective action to prevent problems from occurring or worsening. This can help to improve the reliability and performance of a system, as well as the overall quality of the software.&lt;/p&gt;

&lt;h2&gt;
  
  
  Conclusion
&lt;/h2&gt;

&lt;p&gt;As DevOps trends of 2023 take shape, it’s important to understand the new capabilities available and how they can be leveraged to your advantage. By understanding how these trends may affect your long-term strategy, you can focus your efforts, empower your DevOps team, and advance your organization in this ever-evolving landscape.&lt;/p&gt;

</description>
      <category>industryinsights</category>
      <category>devops</category>
    </item>
    <item>
      <title>Unleash x Statsig: Analytics and Insights for Every Feature Toggle</title>
      <dc:creator>Roman Kalkowski</dc:creator>
      <pubDate>Wed, 14 Dec 2022 15:56:39 +0000</pubDate>
      <link>https://dev.to/unleash/unleash-x-statsig-analytics-and-insights-for-every-feature-toggle-2kk6</link>
      <guid>https://dev.to/unleash/unleash-x-statsig-analytics-and-insights-for-every-feature-toggle-2kk6</guid>
      <description>&lt;h4&gt;
  
  
  Unleash and Statsig come together to provide a birds eye view to every feature toggle. Use the &lt;a href="https://github.com/statsig-io/unleash-connector-js#readme" rel="noopener noreferrer"&gt;connector&lt;/a&gt; and unlock deep Analytics and Insights with Statsig.
&lt;/h4&gt;

&lt;h3&gt;
  
  
  &lt;strong&gt;What is Statsig?&lt;/strong&gt;
&lt;/h3&gt;

&lt;p&gt;&lt;a href="https://statsig.com" rel="noopener noreferrer"&gt;Statsig&lt;/a&gt; is a modern product observability platform built on experimentation and feature management. Statsig goes beyond measuring events and clicks, and empowers teams to easily see which feature releases drive core business metrics.&lt;/p&gt;

&lt;h3&gt;
  
  
  &lt;strong&gt;What is Unleash?&lt;/strong&gt;
&lt;/h3&gt;

&lt;p&gt;&lt;a href="https://www.getunleash.io" rel="noopener noreferrer"&gt;Unleash&lt;/a&gt; is an open-source feature management solution that gives teams &lt;em&gt;full control&lt;/em&gt; of how and when they enable new functionality for end users. Unleash lets teams ship code to production in &lt;em&gt;smaller&lt;/em&gt; releases &lt;em&gt;whenever&lt;/em&gt; they want—increasing developer efficiency and overall speed.&lt;/p&gt;

&lt;p&gt;We’re flexible, which means developers like you are able to quickly  examine, use, and modify our code to suit your needs. We see this play out when our users around the world download and install Unleash in a huge variety of infrastructure environments everyday. We love aspects of our open source like extensibility, and how our users are not bound or dependent on the limitations of our code. A large part of how we get there is data.&lt;/p&gt;

&lt;p&gt;When you use Unleash to gradually roll out a feature to your users–or in a canary, or to a smaller group of users in a strategy–it often means you want to collect data through a feature flag. While you report and experiment on the data, you need an element of observability throughout the experiment.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fs08pfsd5frvbl8sgn4e5.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fs08pfsd5frvbl8sgn4e5.png" alt="Screenshot that shows Unleash Rollout at 90 percent" width="800" height="485"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;An example of Unleash Rollout, showing 90% Rollout success&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fkc5r0e3d5lblyywllatf.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fkc5r0e3d5lblyywllatf.png" alt="Statsig Rollout that shows the analytics for the feature toggle in Unleash, rolled out to ninety percent users" width="800" height="728"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Analytics for users under the rollout on Statsig.&lt;/p&gt;

&lt;p&gt;With Statsig, every time you add a feature toggle in Unleash, you can power it up with data analytics. &lt;/p&gt;

&lt;p&gt;To try out Statsig, just sign up for a Statsig account at&lt;a href="http://www.statsig.com/signup" rel="noopener noreferrer"&gt;http://www.statsig.com/signup&lt;/a&gt;. It’s free to sign up and comes with 5 million free events each month.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F3wm5799rpkuigda608m9.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F3wm5799rpkuigda608m9.png" alt="Analytics on Statsig" width="800" height="450"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;How Analytics work on Statsig&lt;/p&gt;

&lt;p&gt;It is easy to setup Statsig and pretty easy to use:&lt;/p&gt;

&lt;p&gt;After logging in, turn on “&lt;a href="https://docs.getunleash.io/advanced/impression-data#enabling-impression-data" rel="noopener noreferrer"&gt;impression data&lt;/a&gt;” and log the impression event to Statsig using the&lt;a href="https://www.npmjs.com/package/statsig-unleash-connector" rel="noopener noreferrer"&gt;statsig-unleash-connector&lt;/a&gt;. You can now use the connector to log any analytics events like “sign_up” and “purchase” to your Statsig project, and you will be able to see metric lifts on these events across all of your features with impression data. Make sure to read up more about how to use the connector &lt;a href="https://github.com/statsig-io/unleash-connector-js#readme" rel="noopener noreferrer"&gt;here&lt;/a&gt;.&lt;/p&gt;

&lt;p&gt;Here’s an example of how the setup looks like to get analytics for a 50% gradual rollout feature toggle in Unleash and Statsig:&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F9dtajc0ytgl4t77p8eut.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F9dtajc0ytgl4t77p8eut.png" alt="Test toggle on Unleash with fifty percent rollout" width="800" height="413"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Test toggle on Unleash with fifty percent rollout&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F6sc8yibbt5ax1gy5ey0f.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F6sc8yibbt5ax1gy5ey0f.png" alt="Unleash Test toggle working in sync with Statsig to share insights into the product." width="800" height="569"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Unleash Test toggle working in sync with Statsig to share insights into the product.&lt;/p&gt;

&lt;p&gt;Want to see Statsig in action in connection with Unleash? &lt;a href="https://www.youtube.com/watch?v=Yyly48C6mco" rel="noopener noreferrer"&gt;Join us at the Dev Hangout&lt;/a&gt; with Statsig Engineer and Product Manager. Get an overview of the connector and learn how to get the most out of the Statsig-Unleash integration.&lt;/p&gt;

</description>
      <category>opensource</category>
      <category>analytics</category>
      <category>devops</category>
    </item>
    <item>
      <title>Unleash brings powerful Constraints feature to OSS users</title>
      <dc:creator>Roman Kalkowski</dc:creator>
      <pubDate>Tue, 04 Oct 2022 13:41:36 +0000</pubDate>
      <link>https://dev.to/unleash/unleash-brings-powerful-constraints-feature-to-oss-users-1k95</link>
      <guid>https://dev.to/unleash/unleash-brings-powerful-constraints-feature-to-oss-users-1k95</guid>
      <description>&lt;p&gt;&lt;strong&gt;&lt;a href="https://www.getunleash.io/?utm_source=dev.to&amp;amp;utm_medium=referral+&amp;amp;utm_campaign=constraints_04102022"&gt;Unleash&lt;/a&gt; is the largest open-source feature flagging solution on Github, that gives developers greater control over how to deploy new features. There are 12 official client and server SDKs and 10+ community SDKs available for greater flexibility and control over data and feature management deployment.&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;One of Unleash’s most requested Enterprise features is now available to all users.&lt;/p&gt;

&lt;p&gt;You spoke, we listened: Available now, all open-source users of Unleash who upgrade to version 4.16 will get access to &lt;a href="https://docs.getunleash.io/advanced/strategy_constraints" rel="noopener noreferrer"&gt;strategy constraints&lt;/a&gt; and &lt;a href="https://docs.getunleash.io/user_guide/unleash_context#custom-context-fields" rel="noopener noreferrer"&gt;custom context fields&lt;/a&gt;.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Add strategy constraints to your Unleash today&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;&lt;a href="https://github.com/Unleash/unleash" rel="noopener noreferrer"&gt;&lt;img src="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fqc7pvawg0avu71ikiiq0.png" alt="Image description"&gt;&lt;/a&gt; &lt;a href="https://docs.getunleash.io/deploy/migration_guide" rel="noopener noreferrer"&gt;&lt;img src="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fx5pxyf1utllp1x3lps14.png" alt="Image description"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h2&gt;
  
  
  &lt;strong&gt;What are Strategy Constraints?&lt;/strong&gt;
&lt;/h2&gt;

&lt;p&gt;Strategy constraints give you granular control over who gets to see a specific feature by adding preconditions to one of your activation strategies. You can add preconditions for any Unleash context field. As of version 4.16, Unleash supports &lt;a href="https://docs.getunleash.io/advanced/strategy_constraints" rel="noopener noreferrer"&gt;15 different constraint operators&lt;/a&gt;, fine-tuned for a number of use cases.&lt;/p&gt;

&lt;p&gt;&lt;iframe width="710" height="399" src="https://www.youtube.com/embed/kqtqMFhLRBE"&gt;
&lt;/iframe&gt;
&lt;/p&gt;

&lt;p&gt;Here’s an example: A gradual rollout strategy could target 50% of a user base. But what if you want to only target users with a company email? For that, you’ll need strategy constraints. &lt;/p&gt;

&lt;p&gt;Quickly schedule feature releases and feature availability windows. Target feature rollout to users based on variables like region or email address domain. Generate user demand with time-limited feature releases. There are a ton of ways to use strategy constraints, and this is only scratching the surface. &lt;/p&gt;

&lt;p&gt;Any strategy on any feature can have as many strategy constraints as you want. Note that when a strategy is evaluated, all strategy constraints must be met for the strategy to pass.&lt;/p&gt;

&lt;p&gt;You’ll find that, in most cases, strategy constraints replace the need for &lt;a href="https://docs.getunleash.io/advanced/custom_activation_strategy" rel="noopener noreferrer"&gt;custom activation strategies&lt;/a&gt;. This means that you no longer need to define custom strategies, then implement them across your SDKs. &lt;/p&gt;

&lt;h2&gt;
  
  
  &lt;strong&gt;How do I use strategy constraints?&lt;/strong&gt;
&lt;/h2&gt;

&lt;p&gt;Note: Before creating strategy constraints, you’ll need to set up a &lt;a href="https://docs.getunleash.io/user_guide/create_feature_toggle" rel="noopener noreferrer"&gt;feature toggle&lt;/a&gt; in Unleash, then give it an &lt;a href="https://docs.getunleash.io/user_guide/activation_strategy" rel="noopener noreferrer"&gt;activation strategy&lt;/a&gt;. &lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Open the constraints menu&lt;/strong&gt;&lt;br&gt;
Find and select the &lt;strong&gt;edit strategy&lt;/strong&gt; button on the strategy you are working with.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fe2f8d8oiy7uez78xde9k.jpg" class="article-body-image-wrapper"&gt;&lt;img src="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fe2f8d8oiy7uez78xde9k.jpg" alt=""&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Click the "add constraint" button to open the constraints menu.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F0g8et8yl5swi5gggkvdy.jpg" class="article-body-image-wrapper"&gt;&lt;img src="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F0g8et8yl5swi5gggkvdy.jpg" alt=""&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Add and configure the constraint&lt;/strong&gt;&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;From the &lt;strong&gt;"Context Field"&lt;/strong&gt; dropdown,  select the context field you would like to constrain the strategy on. Choose a constraint operator.&lt;/li&gt;
&lt;li&gt;Define the values to use for this constraint. The operator you select determines whether you can define one or multiple values and what format they can have.&lt;/li&gt;
&lt;li&gt;Save the constraint, then save the strategy.&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;&lt;a href="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fi7j6iml1b7jmlp55mjg3.jpg" class="article-body-image-wrapper"&gt;&lt;img src="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fi7j6iml1b7jmlp55mjg3.jpg" alt="Add and configure the constraint"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;If you want to update an existing constraint, find the constraint in the &lt;strong&gt;edit strategy&lt;/strong&gt; screen and use the constraint’s &lt;strong&gt;edit&lt;/strong&gt; button.&lt;/p&gt;

&lt;p&gt;Because strategy constraints use Unleash context fields, make sure you pass the relevant context to your &lt;a href="https://docs.getunleash.io/sdks" rel="noopener noreferrer"&gt;client SDK&lt;/a&gt;. Read more in the SDK section of our the SDK section of the &lt;a href="https://docs.getunleash.io/advanced/strategy_constraints#sdks" rel="noopener noreferrer"&gt;strategy constraints documentation&lt;/a&gt;. &lt;/p&gt;

&lt;h2&gt;
  
  
  &lt;strong&gt;Strategy constraints are available today to all version 4.16 open source users&lt;/strong&gt;
&lt;/h2&gt;

&lt;p&gt;While strategy constraints are now free to all users, you won’t have access to the feature unless you upgrade to version 4.16. For users with versions 4.0 and above, you can grab the latest version from the Docker hub. Users of earlier versions should reference our &lt;a href="https://docs.getunleash.io/deploy/migration_guide" rel="noopener noreferrer"&gt;migration guide&lt;/a&gt; before upgrading.  &lt;/p&gt;

&lt;p&gt;Feel free to play around first! Try out our &lt;a href="https://app.unleash-hosted.com/demo" rel="noopener noreferrer"&gt;demo instance&lt;/a&gt; to get a quick taste of what strategy constraints can do. &lt;/p&gt;

&lt;p&gt;In the mood to dig around? Visit &lt;a href="https://github.com/Unleash/unleash" rel="noopener noreferrer"&gt;Unleash on GitHub&lt;/a&gt; to check out the strategy constraints source code.&lt;/p&gt;

&lt;h2&gt;
  
  
  &lt;strong&gt;Want to try out strategy constraints?&lt;/strong&gt;
&lt;/h2&gt;

&lt;p&gt;&lt;a href="https://github.com/Unleash/unleash" rel="noopener noreferrer"&gt;&lt;img src="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fqc7pvawg0avu71ikiiq0.png" alt="Image description"&gt;&lt;/a&gt;&lt;/p&gt;

</description>
      <category>opensource</category>
      <category>github</category>
      <category>devops</category>
      <category>tooling</category>
    </item>
    <item>
      <title>Unleash 4.14: User groups and the playground</title>
      <dc:creator>Roman Kalkowski</dc:creator>
      <pubDate>Fri, 05 Aug 2022 11:36:00 +0000</pubDate>
      <link>https://dev.to/unleash/unleash-414-user-groups-and-the-playground-p9e</link>
      <guid>https://dev.to/unleash/unleash-414-user-groups-and-the-playground-p9e</guid>
      <description>&lt;p&gt;Unleash 4.13 introduced the long-awaited &lt;a href="https://docs.getunleash.io/reference/segments"&gt;segmentation feature&lt;/a&gt;, letting you split your users into any number of groups. Unleash 4.14 introduces another feature we’ve heard a lot about, plus a brand, spanking new feature we’re really excited about! And as always, you’ll also find the usual small fixes and improvements everywhere. So let’s get to it!&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;👩‍👩‍👧‍👦 User groups&lt;/strong&gt;&lt;br&gt;
If you have a ton of users in &lt;a href="https://www.getunleash.io/"&gt;Unleash&lt;/a&gt; and it feels like organizing them is becoming a chore, we have a great solution for you – Groups! And it’s out in 4.14 for enterprise users.&lt;/p&gt;

&lt;p&gt;A group is a collection of users that lets you manage the Unleash access rights of all the group members in a single shot.&lt;br&gt;
&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--2iZh96o6--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/nxjj2ewttqgib3mzmvo7.png" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--2iZh96o6--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/nxjj2ewttqgib3mzmvo7.png" alt="Image description" width="880" height="503"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Managing access rights with groups is exactly the same as managing access rights with users, except you can now add the entire group to a project instead of having to add each user one by one.&lt;/p&gt;

&lt;p&gt;Once you’ve added access for your groups to the projects that you want, each time you add a new user to that group, permissions will automatically sync and those users will have new permissions to do what they need to do right away!&lt;/p&gt;

&lt;p&gt;But sometimes it’s easier to show rather than tell, so check out this video demo for a real use case for groups:&lt;/p&gt;

&lt;p&gt;&lt;iframe width="710" height="399" src="https://www.youtube.com/embed/no4Jt8-4Yss"&gt;
&lt;/iframe&gt;
&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;🧸 The playground&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--wv7MORcB--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/1hr57ds1it3ikzn00afj.png" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--wv7MORcB--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/1hr57ds1it3ikzn00afj.png" alt="Image description" width="880" height="503"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Ever wanted a way to test your feature toggle configuration and then found out you’d have to wire up a client SDK? That feels like a lot of work, right? Yeah, we think so too. So we’re very excited to announce the Unleash playground, available in the admin UI from version 4.14 onwards! &lt;/p&gt;

&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--hKktyFYh--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/xzkfihuy06qw48xaic4e.png" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--hKktyFYh--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/xzkfihuy06qw48xaic4e.png" alt="Image description" width="880" height="503"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;The playground lets you test an Unleash context against a set of feature toggles and shows you which toggles would be enabled with that context. You also get to see which variant you’d get if the feature toggle has variants. In essence, you can now test new feature toggle configurations directly from the admin UI instead of wiring up an external application or making an API call. How neat!&lt;/p&gt;

&lt;p&gt;This first version only shows you how the toggles resolve, but not necessarily why they resolve the way they do. But stay tuned! There’s more updates coming this way pretty soon!&lt;/p&gt;

&lt;p&gt;🍬 &lt;strong&gt;Other treats&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;As always, there’s a lot cooking here at the Unleash HQ, so there’s too many small improvements to mention, but our new OpenAPI specs are worth a brief mention:&lt;/p&gt;

&lt;p&gt;We’ve also been working a lot on our OpenAPI documentation for the past few months, and as of 4.14, we’ve covered all the endpoints in the open-source version of Unleash. There’s still a few pro and enterprise endpoints underway, but they’re coming! And this is just a first iteration: there are some exciting improvements coming! If you want to enable the OpenAPI endpoint and the Swagger interface for yourself, have a look at the &lt;a href="https://docs.getunleash.io/how-to/how-to-enable-openapi"&gt;how to enable OpenAPI and Swagger&lt;/a&gt; guide we wrote.&lt;/p&gt;

&lt;p&gt;Well, then: until next time!&lt;/p&gt;

</description>
      <category>opensource</category>
      <category>programming</category>
      <category>tooling</category>
      <category>devops</category>
    </item>
    <item>
      <title>SOC 2 Type II compliance achieved by Unleash</title>
      <dc:creator>Roman Kalkowski</dc:creator>
      <pubDate>Wed, 13 Jul 2022 08:58:22 +0000</pubDate>
      <link>https://dev.to/unleash/soc-2-type-ii-compliance-achieved-by-unleash-5ch8</link>
      <guid>https://dev.to/unleash/soc-2-type-ii-compliance-achieved-by-unleash-5ch8</guid>
      <description>&lt;p&gt;We proudly announce that our company &lt;a href="https://www.getunleash.io/"&gt;Bricks Software AS&lt;/a&gt; achieved SOC 2 Type II compliance in accordance with American Institute of Certified Public Accountants (AICPA) standards for SOC for Service Organizations also known as SSAE 18.&lt;/p&gt;

&lt;p&gt;Achieving this standard with an unqualified opinion serves as third-party industry validation that our company provides enterprise-level security for customer’s data secured in the Unleash platform.&lt;/p&gt;

&lt;p&gt;Here is Bricks Software AS’s security &amp;amp; compliance principles guide how we deliver our products and services, enabling people to simply and securely access the digital world.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Secure Personnel&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;Bricks Software AS takes the security of its data and that of its clients and customers seriously and ensures that only vetted personnel are given access to their resources.&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;All Bricks Software AS contractors and employees undergo background checks prior to being engaged or employed by us in accordance with local laws and industry best practices.&lt;/li&gt;
&lt;li&gt;Confidentiality or other types of Non-Disclosure Agreements (NDAs) are signed by all employees, contractors, and others who have a need to access sensitive or internal information.&lt;/li&gt;
&lt;li&gt;We embed the culture of security into our business by conducting employee security training &amp;amp; testing using current and emerging techniques and attack vectors.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;strong&gt;Secure Development&lt;/strong&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;All development projects at Bricks Software AS, including on-premises software products, support services, and our own Digital Identity Cloud offerings follow secure development lifecycle principles.&lt;/li&gt;
&lt;li&gt;All development of new products, tools, and services, and major changes to existing ones, undergo a design review to ensure security requirements are incorporated into proposed development.&lt;/li&gt;
&lt;li&gt;All team members that are regularly involved in any system development undergo annual secure development training in coding or scripting languages that they work with as well as any other relevant training.&lt;/li&gt;
&lt;li&gt;Software development is conducted in line with &lt;a href="https://owasp.org/www-project-top-ten/"&gt;OWASP Top 10&lt;/a&gt; recommendations for web application security.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;strong&gt;Secure Testing&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;Bricks Software AS deploys third-party penetration testing and vulnerability scanning of all production and Internet-facing systems on a regular basis.&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;All new systems and services are scanned prior to being deployed to production.&lt;/li&gt;
&lt;li&gt;We perform penetration testing both by internal security engineers and external penetration testing companies on new systems and products or major changes to existing systems, services, and products to ensure a comprehensive and real-world view of our products &amp;amp; environment from multiple perspectives.&lt;/li&gt;
&lt;li&gt;We perform static and dynamic software application security testing of all code, including open source libraries, as part of our software development process.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;strong&gt;Cloud Security&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;Bricks Software AS Cloud provides maximum security with complete customer isolation in a modern, multi-tenant cloud architecture.&lt;br&gt;
Bricks Software AS Cloud leverages the native physical and network security features of the cloud service, and relies on the providers to maintain the infrastructure, services, and physical access policies and procedures.&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;All customer cloud environments and data are isolated using Bricks Software AS’s patented isolation approach. Each customer environment is stored within a dedicated trust zone to prevent any accidental or malicious co-mingling.&lt;/li&gt;
&lt;li&gt;All data is also encrypted at rest and in transmission to prevent any unauthorized access and prevent data breaches. Our entire platform is also continuously monitored by dedicated, highly trained Bricks Software AS experts.&lt;/li&gt;
&lt;li&gt;We separate each customer’s data and our own, utilizing unique encryption keys to ensure data is protected and isolated.&lt;/li&gt;
&lt;li&gt;Client’s data protection complies with SOC 2 standards to encrypt data in transit and at rest, ensuring customer and company data and sensitive information is protected at all times.&lt;/li&gt;
&lt;li&gt;We implement role-based access controls and the principles of least privileged access, and&lt;/li&gt;
&lt;li&gt;review revoke access as needed.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;strong&gt;Compliance&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;Bricks Software AS is committed to providing secure products and services to safely and easily manage billions of digital identities across the globe. Our external certifications provide independent assurance of Bricks Software AS’s dedication to protecting our customers by&lt;br&gt;
regularly assessing and validating the protections and effective security practices Bricks Software AS has in place.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;SOC 2 Type 2&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;Bricks Software AS successfully completed the AICPA Service Organization Control (SOC) 2 Type II audit. The audit confirms that Bricks Software AS’s information security practices, policies, procedures, and operations meet the SOC 2 standards for security.&lt;/p&gt;

&lt;p&gt;Bricks Software AS was audited by &lt;a href="https://www.prescientassurance.com/"&gt;Prescient Assurance&lt;/a&gt;, a leader in security and compliance certifications for B2B, SAAS companies worldwide. Prescient Assurance is a registered public accounting in the US and Canada and provide risk management and assurance services which includes but not limited to SOC 2, PCI, ISO, NIST, GDPR, CCPA, HIPAA, CSA STAR etc.&lt;/p&gt;

&lt;p&gt;An unqualified opinion on a SOC 2 Type II audit report demonstrates to the Bricks Software AS’s current and future customers that they manage their data with the highest standard of security and compliance.&lt;/p&gt;

&lt;p&gt;Customers and prospects can &lt;a href="//contact@getunleash.io"&gt;request access to the audit report here&lt;/a&gt;.&lt;/p&gt;

</description>
      <category>security</category>
      <category>startup</category>
      <category>news</category>
    </item>
    <item>
      <title>How we use analytics as a privacy focused OSS company</title>
      <dc:creator>Roman Kalkowski</dc:creator>
      <pubDate>Fri, 08 Jul 2022 09:01:59 +0000</pubDate>
      <link>https://dev.to/unleash/how-we-use-analytics-as-a-privacy-focused-oss-company-4kcl</link>
      <guid>https://dev.to/unleash/how-we-use-analytics-as-a-privacy-focused-oss-company-4kcl</guid>
      <description>&lt;p&gt;&lt;strong&gt;TLDR:&lt;/strong&gt; Privacy is really important for us at &lt;a href="https://getunleash.io"&gt;Unleash&lt;/a&gt;. Here you will find the full story on how we ended up with an analytics solution that does not collect personal data and has very short retention. Whenever we evaluate a new feature at Unleash, we always start with one question. How does this fit with our values? This question is powerful. It can quickly qualify or disqualify a feature from consideration, putting some amount of work in an explore further bucket and some amount of work in a forget about it bucket.&lt;/p&gt;

&lt;p&gt;When it comes to analytics, this has been a very difficult question. On one hand, as a team who cares deeply about their product, we feel the need to become more data-driven in our approach. For example, where to prioritize our efforts, how to figure out what features are being used the most in our product, which screen should we revamp next, and should we even care about mobile for a developer-centric product? As a small team, getting some breadcrumbs on where to focus next, or perhaps more importantly — which questions we should ask — can be very valuable.&lt;/p&gt;

&lt;p&gt;On the other hand, we pride ourselves on being a very privacy-focused company. Our product core is &lt;a href="https://www.getunleash.io/open-source"&gt;open source,&lt;/a&gt; which means that you can copy, use and even enhance our code with your own modifications to get the version of Unleash that works best for your use case. This also means that you can self-host unleash and take full control of your data. However, if you don’t want to manage your own instance and instead opt for our SaaS platform — you can rest assured that unleash is architected in such a way that your domain data never leaves your application. We never see any of your data, because all feature toggle evaluation happens locally in the SDKs.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--pg6Az5mw--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/bj0r1fjfb7v3x6wde15y.png" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--pg6Az5mw--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/bj0r1fjfb7v3x6wde15y.png" alt="Image description" width="880" height="617"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;I’m not going to lie. Reconciling our needs with our values has been a challenging effort. We live in n a world where privacy is becoming more and more important, as evidenced by a significant amount of &lt;a href="https://haveibeenpwned.com/"&gt;major breaches,&lt;/a&gt; and misuse of data in terms of swaying &lt;a href="https://en.wikipedia.org/wiki/Cambridge_Analytica"&gt;voter opinion in democratic elections&lt;/a&gt;.&lt;/p&gt;

&lt;p&gt;It’s becoming increasingly obvious that data needs to be protected. For companies, data can represent critical business functions, information about customer relationships, or proprietary information. For the regular consumer, data is deeply personal. It’s about who you are, what your habits are, who in your life is important and what you care about. If we allow bad actors access to this information the consequences for both companies and consumers can be significant. As a SaaS vendor, it’s our responsibility to take these concerns into account when making decisions. It’s unacceptable to compromise on our own values to gain an advantage, which is why this is a decision we have not made lightly.&lt;/p&gt;

&lt;p&gt;With this in mind, are there any analytics alternatives that can satisfy these strict requirements? Considering that &lt;a href="https://isgoogleanalyticsillegal.com/"&gt;France, Austria and Netherlands banning google analytics for GDPR violations&lt;/a&gt; it’s obvious that traditional analytics providers should deliver higher privacy standards.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;How can we make sure that we don’t collect personal data, while still gaining some actionable information about the usage of our SaaS platform?&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;After evaluating multiple vendors, we eventually landed on &lt;a href="https://plausible.io/"&gt;Plausible&lt;/a&gt;. Here are some of the reasons why we chose this vendor:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;The product is open source, allowing us to self-host Plausible.&lt;/li&gt;
&lt;li&gt;No personal data is collected - Plausible does not track and store any PII&lt;/li&gt;
&lt;li&gt;No tracking across devices&lt;/li&gt;
&lt;li&gt;Data is aggregate only&lt;/li&gt;
&lt;li&gt;Data is only scoped to a single day&lt;/li&gt;
&lt;li&gt;Minimized data collection&lt;/li&gt;
&lt;li&gt;Minimal footprint (&amp;lt;1kb)&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;These reasons and the ease of use of this product have made an otherwise hard decision a lot easier. The fact that options like Plausible are growing reflects the shift in the industry towards a privacy-first approach, and we believe that we will continue to see increased attention to this area in the future. We are proud to be a part of preserving the privacy of companies and individuals on the internet, and celebrating tools like Plausible which enable actionable insights for companies like ours without compromising our core values.&lt;/p&gt;

&lt;p&gt;If you have any questions regarding our integration with Plausible, or what kind of data we collect in our SaaS platform, feel free to reach out to us on slack or social media to keep this discussion going! #privacyfirst&lt;/p&gt;

</description>
      <category>privacy</category>
      <category>analytics</category>
      <category>programming</category>
      <category>opensource</category>
    </item>
    <item>
      <title>Your documentation is a product too</title>
      <dc:creator>Roman Kalkowski</dc:creator>
      <pubDate>Thu, 07 Jul 2022 15:09:00 +0000</pubDate>
      <link>https://dev.to/unleash/your-documentation-is-a-product-too-3c12</link>
      <guid>https://dev.to/unleash/your-documentation-is-a-product-too-3c12</guid>
      <description>&lt;p&gt;It's a strange thing, &lt;a href="https://docs.getunleash.io/"&gt;product documentation&lt;/a&gt;. Everyone agrees that it's important, and yet it's often seen as a chore that no one wants to do. In smaller teams – and especially in startups, where getting the product ready and on par with competitors is the prime directive – people often focus on new features. For a developer product, though, where users need to be able to integrate your product into their own code bases, documentation is crucial.&lt;/p&gt;

&lt;p&gt;When I joined &lt;a href="https://www.getunleash.io/"&gt;Unleash&lt;/a&gt;, we were getting a lot of feedback saying our docs were lacking: That users couldn't find what they were looking for, that features and configuration options weren't documented, and that the docs were misleading or even plain wrong.&lt;/p&gt;

&lt;p&gt;Now, six months later, most of that feedback is gone. This post outlines what I consider to be some of the most important steps we took to address the documentation issue. But while we have made some good strides toward improving the docs, we're not done yet. There's still lots of work to do and we keep working on it every day. But with sustained internal effort and the help of our users and outside contributors, we're steadily improving.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Treating the documentation as a product&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;As an &lt;a href="https://www.getunleash.io/open-source"&gt;open-source&lt;/a&gt; company we’re all about transparency and sharing what we know. Part of that is also about learning from others in areas where we can improve. Thankfully, we’ve got a few connections that can help us in those areas.&lt;/p&gt;

&lt;p&gt;Right about when I started, I had a meeting with &lt;a href="https://twitter.com/DevRelDan"&gt;Dan McKinney &lt;/a&gt; over at &lt;a href="https://help.cloudsmith.io/"&gt;Cloudsmith&lt;/a&gt; (who have received a lot of praise for their documentation). A very nice meeting in many regards, the most important thing I took away from it was Cloudsmith's attitude towards documentation: treat your docs as a product.&lt;/p&gt;

&lt;p&gt;Treating the docs as a product means that you need to prioritize and work on the documentation just as you would any other part of the product: The docs can't just be a byproduct of some other product. They need actual love.&lt;/p&gt;

&lt;p&gt;It also means that if you get a user asking a question because they haven't found what they're looking for in the docs, then you have a bug. Yup, documentation bugs. They're a thing now. And as with software bugs: if someone discovers a bug, you create a ticket to fix it. That way you can prioritize the issue, log duplicates, and treat it as any other bug.&lt;/p&gt;

&lt;p&gt;If this comes off as strange, ask yourself this one question: who knows what the documentation is missing better than the users, better than the people who can't find what they're looking for? And by taking user input in this way, they actually prioritize it for you! If you work on things people ask about, then you know that you're working on things people are using.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Adopting Diátaxis&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;As with so many other things, there's no right or wrong way to organize your documentation. But certain ideas do have more merit than others. After looking around a bit, I stumbled upon &lt;a href="https://diataxis.fr/contact/"&gt;Daniele Procida&lt;/a&gt;'s &lt;a href="https://diataxis.fr/"&gt;Diátaxis framework&lt;/a&gt;.&lt;/p&gt;

&lt;p&gt;Diátaxis provides you with 4 distinct kinds (or modes) of documentation and gives you guidelines on how to tell them apart and how to write for them.&lt;/p&gt;

&lt;p&gt;We used this framework to restructure our documentation from vague categories such as "user guide" and "advanced" into more clearly labeled "reference guides", "tutorials", "how-tos", and "topic discussions".&lt;/p&gt;

&lt;p&gt;In addition to just organization, the Diátaxis framework also provides you with clear guidelines for how to write for each of the documentation kinds. In particular, it expressly tells you what &lt;strong&gt;not&lt;/strong&gt; to write. This has helped us tremendously in avoiding duplication between related topics, which means updates get a lot easier to manage.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;What's next?&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;We can't just stand still. We gotta keep moving and improving. If you want your product to be the best, you better make sure the documentation is up to the task! In addition to keeping everything up to date and documenting new features as they arrive, we also have lots of plans and ideas that we'd like to see come to fruition:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;&lt;p&gt;Now that we've (almost) got full OpenAPI support for our APIs, I'd love to see that become integrated into the documentation. I don't know if you've tried, but writing API reference documentation out by hand? Now that is a chore.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Some of the best developer docs out there provide you with ready-to-copy code samples complete with variables that are correct for your use case. As we don't require any sort of authentication for the docs, we can't just grab your details from anywhere, but we can let you enter them yourself and update code samples accordingly.&lt;/p&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;If you've got any ideas or other input, we would of course &lt;strong&gt;love&lt;/strong&gt; to hear it! Please don't hesitate to &lt;a href="http://slack.unleash.run"&gt;reach out to us&lt;/a&gt;.&lt;/p&gt;

</description>
      <category>productivity</category>
      <category>writing</category>
      <category>programming</category>
      <category>tutorial</category>
    </item>
  </channel>
</rss>
