Hello,
I went through the long thread "FSFE-defined coding standards". Did not read all the mails in this thread as at the end it deviated from original topic.
I developed software for different domains and I do not think it is a good idea to promote one-fits-all approach for coding standards. E.g., coding guidelines for safety-critical applications (which do actually exists as industry standards) are different from coding standards for financial applications.
Therefore I do not think that FSFE shall develop any coding guidelines for open-source apps. Coding guidelines to follow are dictated by domain, not by the fact that the specific software is open-source.
However, it is very important to promote quality in software. And open sourcing actually contributes to a software quality in a number of ways. To mention couple:
* Education. Juniour developers use open source software to study how the code shall be developed in a professional way. They also learn how to cooperate with other developers in the mailing lists, bug trackers, git repositories etc. * Independent reviews. Open source software is constantly under review from the community. More eyes you have, easier it is to find a new bug (yes, including security vulnerability).
I think that FSFE can focus on promoting open source as a way to improve software quality. What practically can be done?
Couple of ideas:
- FSFE quality award to the open source software projects (based on the objective metrics - lint, coverity, relative defects amount etc) - Educational track. Promote open source as a way to create quality software. Online courses, hackatons with quality as one of the focuses etc.
But FSFE coding guidelines sound like a wrong goal for me.
Hi Vitaly,
Am Mittwoch 17 Februar 2021 09:25:29 schrieb Vitaly Repin:
I think that FSFE can focus on promoting open source as a way to improve software quality.
this is one of the aspects FSFE promotes for the reasons you have outlined.
If we come up with other practical guidelines, even for code, why not? I considered the GNU coding standards as maintained by FSFE's US based sister organisation useful https://www.gnu.org/prep/standards/html_node/index.html and a capture of conventions that are still helpful today.
(Of course, they had a focus, to build the GNU system consistently. Still they are useful beyond this.)
AS FSFE lives a lot from volunteer work, if a group of volunteers would make the case for practical guides for creating good Free Software, I guess that FSFE would most likely support it.
But back to "promoting software quality":
What practically can be done?
Couple of ideas:
- FSFE quality award to the open source software projects (based on the
objective metrics - lint, coverity, relative defects amount etc)
The includes the challenge to get meatures for quality first. In the definitions I ran across lint and code coverage are not a good measure. Again our sister has some nice awards: https://www.fsf.org/awards
- Educational track. Promote open source as a way to create quality
software. Online courses, hackatons with quality as one of the focuses etc.
Open to be used as educational example of real code is a quality that we could promote more and get more into education. This is a huge task because there are many established educational organisations. Anyway a path we should pursue.
Best Regards, Bernhard
Hello,
Den ons 17 feb. 2021 kl 16:21 skrev Bernhard E. Reiter bernhard@fsfe.org:
If we come up with other practical guidelines, even for code, why not? I considered the GNU coding standards as maintained by FSFE's US based
sister
organisation useful
https://www.gnu.org/prep/standards/html_node/index.html
and a capture of conventions that are still helpful today.
(Of course, they had a focus, to build the GNU system consistently. Still
they
are useful beyond this.)
Yep. Did not had them in mind actually. Yes, they are specific for the GNU project but due to the nature of this project they are quite "wide". E.g., they do not go to the language level deeply. E.g., they do not prohibit C++ developers from using exceptions as some of the coding guidelines for the safety-critical apps written in C++.
Why not to promote them instead of inventing the wheel with FSFE standards? (And without having any "GNU"-like project being run by FSFE?).
Again our sister has some nice awards: https://www.fsf.org/awards
Yep. Why not to have European awards also?
- Educational track. Promote open source as a way to create quality
software. Online courses, hackatons with quality as one of the focuses
etc.
Open to be used as educational example of real code is a quality that we
could
promote more and get more into education. This is a huge task because
there
are many established educational organisations. Anyway a path we should pursue.
Yep. I think that we can contribute by cooperation with established educational organisations and by organizing event with focus on free software in general and software quality dimension in particular.
-- WBR & WBW, Vitaly
Hello,
Am Donnerstag, 18. Februar 2021, 09:26:26 CET schrieb Vitaly Repin: [GNU coding standards]
Why not to promote them instead of inventing the wheel with FSFE standards?
As just I did, the GNU coding standards are still a good read for Free Software initiatives developing in C and C++. And even for other languages to see the conventions as inspiration.
This discussion is just about a suggestion and it makes sense to discuss if other coding guidelines could be useful. Of course if we were to promote coding standards, I'd say we would only try to supplement those which are well done already, like the GNU coding standards.
(And without having any "GNU"-like project being run by FSFE?).
In my opinion - in a strict sense - the GNU project is successfully concluded, as the original project goals have been reaching in major points. And then it can be replaced with specific technological initiatives. FSFE had some smaller technical initiatives in the past (like the technical part on the freepdfreader and free your android campaigns) and we'd probably start and follow technical initiatives in the future.
Again our sister has some nice awards: https://www.fsf.org/awards
Yep. Why not to have European awards also?
The FSF awards are global, they even were presented in Europe a few times. We had a document freedom award for many years, to go in the direction of open standards. Again, we should see what fits Europe and where is something missing in the world of Free Software (and of course, do we have the volunteers and the interests to keep this alive for many years, not just once.)
Yep. I think that we can contribute by cooperation with established educational organisations and by organizing event with focus on free software in general and software quality dimension in particular.
There has been some cooperation in the past (I'll have to look it up), this is why I know that it is not easy and a wide field. For most people, the quality aspect of software development is not what they are interested in initially. And in general higher quality means defining it, measuring it and funding it and overal in IT this is often not happening. It feels like in this field we are trying to get the basics right. My idea is more along the lines to teach and enlight people about the specific quality aspects that a nice Free Software and community development can contribute to IT.
Best Regards, Bernhard
On 2021-02-18 09:55, Bernhard E. Reiter wrote:
There has been some cooperation in the past (I'll have to look it up), this is why I know that it is not easy and a wide field. For most people, the quality aspect of software development is not what they are interested in initially. And in general higher quality means defining it, measuring it and funding it and overal in IT this is often not happening. It feels like in this field we are trying to get the basics right. My idea is more along the lines to teach and enlight people about the specific quality aspects that a nice Free Software and community development can contribute to IT.
I think, also responding to points made by Vitaly and Paul, that software quality guidelines are mainly the responsibility of the projects. As for software quality in Free Software:
The ultimate goal of the free sofware movement is that /all/ software should be free software and respect the users' freedoms. A sensible sub-goal is that producing free software should be the industry standard whenever new software is commissioned.
Thus, if an organization needs some software and finds it does exist, it would a) hire developers or b) commission another company to make the software, with everyone taking for granted that of course it will be free software.
Then, as in all other kinds of engineering, the contractors would be expected to adhere to recognized industry-wide quality standards, which nowadays means coding guidelines, linting, code reviews, automatic testing and many other things.
A lot of existing free software does not adhere to such standards mainly because it's old-ish and not made as you would do a similar project today. But that is not specifically because it's free software - the same is true of a lot of proprietary software as well. It's more because it was built on practices that were normal at the time but considered legacy today.
So a lot of the work to improve quality in free software is /political/ - and is that of changing people's attitudes to make free software the automatic default in /all/ software procument. This is going to be a process, because in many areas the software needed to support daily workflows and infrastructure doesn't exist as free software yet. So decision makers need to be convinced to start that process.
And then, the issue of quality in free software will become /the same/ as the larger issue of quality in software in general.
Best Carsten