What is dogfooding?
It sounds weird when you hear this term first time! Let's explain what "Dog Fooding" is.
Wikipedia explains it with these words;
Eating your own dog food or "dogfooding" is the practice of using one's own products or services — wikipedia.org
This means working with, as a real user, the applications you're building, or at least working closely with people who do use them. Dogfooding is not only for the software business, but it's for all kinds of sectors. A software product is not like a t-shirt, painting or carpet. Its behaviors change where it runs. That's why this becomes an important way of testing the software product for software developers. You will eliminate many potential problems if you can run your application on the production environment before your customers see it.
Imagine a car manufacturer who doesn't use their cars! Would you buy that company's cars?
So for us, it's not just important - it's mandatory!
Step into the customer's shoes
Application development is getting harder nowadays. We, developers, try to find ways to eliminate problems at first hand, like writing unit tests or automated UI tests. But do you think these are enough for a perfect release? We believe it is not enough to control everything for a business like ours programmatically. If you don't eat your own dog food before publishing it, you are setting yourself up for some potential problems. As some problems occur on the production environment, it becomes hard to detect and reproduce them.
To overcome these issues, we give importance to dogfooding and believe it's not just important; it's mandatory!
We listen to our customers
As we've been developing a web application framework and application templates, this topic is very important to us. Volosoft develops ASP.NET Boilerplate framework, ASP.NET Zero, the commercial product to start a new line of business web applications and the new generation of these products; ABP Framework and ABP Commercial. At Volosoft, we listen to our customer's feedback from social media, Discord channels, Capterra reviews, support tickets and emails. But these are the feedbacks that come when the curtain of the stage is opened. It means our customers and open-source users see the issues and problems when it's published. While this is acceptable with our release candidate versions, we do better and use our framework and application templates on our live websites.
Do, first and foremost, by using your product
We use our development versions on aspnetzero.com , aspnetboilerplate.com and all abp.io subdomains like commercial.abp.io, community.abp.io, blog.abp.io. By using it, we can see the product from our customers' perspective. It helps us to see the issues and live behaviors before our users and consumers. When I wrote this article, we published the 6.0
version, and we have not released the 7.0
version, even the RC version. But we are already using v7.0
on our live websites. For example, we replaced Identity Server 4
with OpenIddict
library, as we declared at #11989. This is an important change for our customers and open-source users. Therefore, we first made this change on abp.io websites and tested for one month. This helped us a lot because we faced several problems with this change. On the other hand, our customers have not faced these issues because we already resolved them before the final release.
We are now working on moving our websites to the Azure platform. In this process, we will replace Microsoft SQL Server with PostgreSQL. This will show us how hard to switch a database provider with its data. And it will be very good feedback to cover ABP-related potential issues. We will also write an article about this process.
Last words
At Volosoft, we value our products' stability. Therefore before any enhancement, bug fix or feature, we test it on our live applications. Thus, the situations we do not want are either not experienced or are experienced at a minimum. We use our products to create our internal tools, including our customer-facing websites. Everyone in the company uses the ABP Framework to create the apps they need, including all sorts of our projects.
Happy coding 😊