From a79a28f4a161cd0f92340d2ce837b15f46696155 Mon Sep 17 00:00:00 2001 From: Thomas von Dein Date: Tue, 23 Jan 2024 17:59:33 +0100 Subject: [PATCH] add contribution guidelines and non-code-of-conduct --- CODE_OF_CONDUCT.md | 114 +++++++++++++++++++++++++++++++++++++++++++++ CONTRIBUTING.md | 93 ++++++++++++++++++++++++++++++++++++ 2 files changed, 207 insertions(+) create mode 100644 CODE_OF_CONDUCT.md create mode 100644 CONTRIBUTING.md diff --git a/CODE_OF_CONDUCT.md b/CODE_OF_CONDUCT.md new file mode 100644 index 0000000..9f94a1a --- /dev/null +++ b/CODE_OF_CONDUCT.md @@ -0,0 +1,114 @@ +# No Code of Conduct + +*TL;DR:* This project does **NOT** have a so called Code of Conduct, +nor will it ever have one. + +## The Rant + +The reasons are somewhat complicated and I'll try my best to document +them here. + +Ethical codes or rules come along like laws. But how is ethical or +moral behavior defined? And who defines which behavior is ethical and +which is not? Certainly not me. + +Unless you live in a dictatorship (and more than half of the +population on planet earth do as of this writing), laws come into +existence by democratic procedures. Laws cover almost every aspect of +live in a society. Laws allow and forbid behavior and laws sanction +infringements. + +A software project like this one on the other hand is not a society. +There are not enough people involved to form democratic +structures. And there will always be a minority of users who have the +right to commit or reject code. How could any maintainer of a software +project dare to decree rules upon others? Actually, am I, the current +maintainer of this very project authorized to do so? + +I think the anser to this question clearly is NO. + +The issue is being complicated by the fact, that open source +development these days happens on a planetary scale. And this planet +houses hundreds if not thousands of different cultures, philosophies, +ideologies and worldviews. The answer to many ethical questions will +in most cases be vague and nebulous. + +Ones joke will always be another ones insult. + +Then there is the problem of language. I myself am not an english +native, but I publish everyting using the english language. I am able +to communicate with most people in the open source community because +of that. But I am certainly not able to understand everything and +everyone. There might be nuances to a sentence I don't sense, there +might be sarcastic connotations I don't understand or references to +historical figures, events or traditions I don't know and never have +heard of. + +Judging over other peoples online behavior looks like a titanic task +to me. It is just not my job to judge others, I am not legitimized or +authorized to do so and I am not interested in this kind of business. + +Another huge problem with ethical rules is that you need to outline +and enforce sanctions on those who violate the rules. But since I am +not an elected authority how would I be able to do this? I don't +know. And what happens if someone complains about myself? Shall I +remove myself from my own project? Come on! + +Last but not least there's the law. So, let's say someone in india +writes something insulting to some other developer in an issue. Of +course german law does not apply to indian people. Moreover, the +insult might actually not be an insult in india. In the end, nothing +would happen. Under normal circumstances, maintainers would +eventually delete the posting, ban the user or remove push privileges +etc. + +But then, is there a way for the offending user to defend himself? Of +course not, since neither indian or german law alone applies. I cannot +go to a german court and sue the guy and he cannot do the same in +india. Or - we possibly could but the judges in both countries would +just laugh and close the case. + +That being said, I don't have the power nor the tools, nor the +authority to enforce serious sanctions of any meaningful kind against +others. Therefore I cannot outline any rules whatsoever. + +And let's not even start talking about these undemocratic "comitees" +many projects are forming to circumvent this problem. Some projects +even include external entities like a lawyer or some bureaucrat +somewhere just to have the ability to complain against a comitee +member. What a mess! + + + +## So, what are the ethical rules within this project then? + +Well, there are none. + +This project is about code, not society. It doesn't matter where you +come from, how you look, how you think, what you believe, who your +friends are, whay you said or did sometime in the past. I don't even +care if you are a human being. You are an alien so bored that you need +to submit code on github? Fine with me. You're a convicted criminal? I +don't give a shit! + +**The only thing I am interested here is Code and only Code.** + +So if anyhing happens here I don't like or I am obliged by (german!) +law to act on, I will decide on a case to case basis what to do. And +unfortunately, since this is the nature of a github project, you +cannot complain, object or protest. I am very sorry! + +If you will, let's at least outline these: + +- Please - just please - behave towards others as you'd expect others + to behave towards yourself. + +- Don't judge others for any reason. + +- Only judge the code. + +But these are not rules, only a friendly appeal to you as a developer +and user. + + +Thanks a lot! diff --git a/CONTRIBUTING.md b/CONTRIBUTING.md new file mode 100644 index 0000000..b9edc78 --- /dev/null +++ b/CONTRIBUTING.md @@ -0,0 +1,93 @@ +## Project Goals + +The goal of this project is to build a small tool which helps in +maintaining backups of the german ad site kleinanzeigen.de. It should +be small, fast and easy to understand. + +There will be no GUI, no web interface, no public API of some sort, no +builtin interpreter. + +The programming language used for this project will always be +[GOLANG](https://go.dev/) with the exception of the documentation +([Perl POD](https://perldoc.perl.org/perlpod)) and the Makefile. + +# Contributing + +You can contribute to this project in various ways: + +## Open an issue + +If you encounter a problem or don't understand how the program works +or if you think the documentation is unclear, please don't hesitate to +open an issue. + +Please add as much information about the case as possible, such as: + +- Your environment (operating system etc) +- kleingebaeck version (`kleingebaeck --version`) +- Commandline used. Please replace sensitive information with mock data! +- Repeat the command with debugging enabled (`-d` flag) +- Actual program output, Please replace sensitive information with mock data! +- Expected program output. +- Error message - if any. + +Be aware that I am working on this (and some others) project in my +spare time which is scarce. Therefore please don't expect me to +respond to your query within hours or even days. Be patient, but I +WILL respond. + +## Pull Requests + +Code and documentation help is always much appreciated! Please follow +thes guidelines to successfully contribute: + +- Every pull request shall be based on latest `development` + branch. `main` is only used for releases. + +- Execute the unit tests before committing: `make test`. There shall + be no errors. + +- Strive to be backwards compatible so that users who are already + using the program don't have to change their habits - unless it is + really neccessary. + +- Try to add a unit test for your fix, addition or modification. + +- Don't ever change existing unit tests! + +- Add a meaningful and comprehensive rationale about your contribution: + - Why do you think it might be useful for others? + - What did you actually change or add? + - Is there an open issue which this PR fixes and if so, please link + to that issue. + +- [Re-]format your code with `gofmt -s`. + +- Avoid unneccesary dependencies, especially for very small functions. + +- **If** a new dependency is being added, it must be compatible with + our [license agreement](LICENSE). + +- You need to accept that the code or documentation you contribute + will be redistributed under the terms of said license agreement. If + your contribution is considerably large or if you contribute + regularly, then feel free to add your name (and if you want your + email address) to the *AUTHORS* section of the + [manpage](kleingebaeck.pod). + +- Adhere to the above mentioned project goals. + +- If you are unsure if your addition or change will be accepted, + better ask before starting coding. Open an issue about your proposal + and let's discuss it! That way we avoid doing unnessesary work on + both sides. + +Each pull request will be carefully reviewed and if it is a useful +addition it will be accepted. However, please be prepared that +sometimes a PR will be rejected. The reasons may vary and will be +documented. Perhaps the above guidelines are not matched, or the +addition seems to be not so useful from my perspective, maybe there +are too much changes or there might be changes I don't even +understand. + +But whatever happens: your contribution is always welcome!