This reddit thread definitely touches on some areas I have been thinking about a lot. I’ve been on the team for over 4 years and I think we have progressed quite a bit in terms of stability. This is great, but what I find frustrating is that we don’t acknowledge there is a huge issue of poor user experience in Foreman and Katello. Our software is difficult to set up an difficult to use, and we make it very easy for users to paint themselves in a corner and shoot themselves in the foot. We’ve seen threads like this before and we’ve gotten feedback like this before, but we don’t make any significant changes, which I find frustrating.
I think the first thing we can do is acknowledge there is a problem: Our application is not user-friendly. We’ve heard it loud and clear and we have to take this feedback on the chin and improve. It pains me that we don’t acknowledge this fact that the rest of the world has agreed on.
The good news is the general sentiment (at least from my interpretation) seems to be “Foreman (and Katello) is a pain to set up, but once it works and you have fought to get it working, it is very helpful”. So people do have good experiences with Foreman and Satellite, but have to fight to get to that point.
I don’t think improvement will be a quick fix, there is not magic bullet or hot new technology we can introduce to fix a bad user experience. It starts from the moment they go to theforeman.org to install foreman.
Some thoughts of areas that we could see the most benefit improving:
- Documentation - this is actually the easiest one. If Foreman and plugins are hard to set up and configure, we could significantly improve this without touching a line of code by improving our documentation. There is not much workflow-based documentation out there that takes you from a blank box to a fully installed Foreman instance with plugins that is set up to achieve certain goals. Users are left to figure this out themselves, and they often go down the wrong routes. If we do want to keep a “configuration over convention” approach, we need to improve our documentation to reflect this and show users the “happy paths” to setting up a functional foreman instance. I know @lzap has an ongoing effort in this area and I think we can continue there and look to other areas to improve documentation.
- Installer - The installer prevents the users with a ton of options. It is great to have so much configuration as users tend to want different things, but most users just want to get up and running when they are getting started. Also, what are our defaults? As DHH puts it “defaults reveal the soul of an application”. Users do not want to make decisions, and yes this even means system administrators. Having more opinionated defaults will get users up and running and leave configuration for after the fact. Just spitballing - with the success of foreman-maintain in upgrades, I can’t help but thing extending it (or creating a new tool) to help with the initial install would greatly improve the user experience. I know there have been similar threads, but again, no action taken.
- UI - @jeremylenz detailed out the issues here and I think it will take effort to improve things. I think wizards could be helpful, but not only this, our goal should be a UI that “forcibly guides” the user to do things in a proven, tested way that we know works, but also is flexible enough to accommodate the various types of users we see.
- Testing - Even if our app stays as complicated, hard to configure software (which it should not IMO) we should at least make sure it works and regressions are not introduced. I’m collaborating with a few other devs to meet and improve our testing of user workflows and adding tests that reflect real-world scenarios, hopefully this improves our overall stability.
- Scope - This is one that isn’t talked about much, but Foreman and Katello try to do a lot as an application. Much like when I walk into a restaurant with a huge menu and question the quality and freshness of every dish, software that tries to do everything can often not do everything well. Maybe we can look at narrowing the scope of our application, as counter-intuitive as it seems, this allows us to have clearly-defined goals to test and document.
This is just a brain dump of my thoughts and I’m sure everyone has ideas as well. I know that we can justify the current choices we have made and defend the current user-experience, but if we don’t listen to very verbose feedback from our users, how can we improve as an application and compete with applications that do similar things? I think we need to let go of some of our assumptions and try new approaches.