I have recently talked to a group of developers that are working on various linux, cloud and jboss projects. They have one thing in common. They all used for a certain time Fedora as the main development platform but switched to another distro or even MacOS after some time. My only question to them was - Why can’t you use Fedora for development? The output is quite a long list of various topics, some of them can be easily fixed, some of them deserve more thinking to figure out how to satisfy such needs.
- Disturbing updates, restart needed too often and updates breaking functionality - at least the first part is already fixed but updates that are actually breaking in the middle of release functionality of certain component do happen. Couple people mentioned that relying on some app, library or a function is crucial for their development. They can’t adjust their work environment after every update - these people actually use CentOS as their basis.
- Bad backward compatibility - API changes too often. Several developers mentioned that their development needs to freeze on certain API for a longer time and Fedora is changing to often and even within one release. I must admit that this was mentioned by all three groups and started a long discussions. Most of them agreed that there’s no easy way for them to monitor all API changes on the system and they would have to be monitoring updates closely. At least for core system components they would love to have some API guarantee and also a transition support for a longer time than one release. One idea was fe to introduce a concept of -latest package, where new stuff could be added to distro but as a new package that can be used for testing, but development can continue on the old one.
- Non intuitive package installer - Here are several issue that people mentioned - packaging tool doesn’t have any priority in the search, doesn’t allow to search only in package names, doesn’t intuitively offer development packages, doesn't offer better groups - fe. groups for developers split by a programming language
- Configuration options changes are not documented - two developers mentioned a situation when configuration change wasn’t well documented and it wasn’t obvious why an old configuration file stopped working or didn’t work properly.
- CTRL+C, CTRL+V inconsistency - this should work everywhere and use the same clipboard. Such a silly think one would say but really drives people nuts :-)
- SELinux crashes some applications for unknown reasons - my favourite topic, why do you turn off SELinux? This actually never happened to me but some people got annoyed by SELinux when it blocked some functionality of an app but didn’t report any warning. Also the discussion was around setroubleshoot and whether it can offer a more easy way how to fiddle with booleans and custom policy files. Again, sounds to me like something that got way better in last two releases.
- Development profiles - an idea that can be easily solved and which I’m in favour of - a granular developer profiles, where a developer would be able to easily install environment for Ruby, Java, PHP, C or other programming language. This would install a default editor, debugger, version control system and basic compiler or -devel packages.
- Very often we were talking about two very different sets of developers - one that profits from various RPM features and one which delivers stuff to different OSes and have specific requirements on the OS. The other group doesn’t use packaged versions of java or ruby and rather installs several non-conflicting Java versions for testing or several rubygems thru rvm.
- Last but not least, multiplatform support. Some developer actively use openbuildservice for their packages to get them ready for various distros. They don’t care about nice and polished spec file, they just one to have the packages available for the distro users.
Overall interesting discussions. If you have some other ideas, feel free to comment. I’m quite sure we’ll try to work some of these within my group at Red Hat and solve them. I'll make sure I'll let everyone know when we start with it.