diff --git a/CODE_OF_CONDUCT.md b/CODE_OF_CONDUCT.md new file mode 100644 index 0000000..377466d --- /dev/null +++ b/CODE_OF_CONDUCT.md @@ -0,0 +1,111 @@ +# No Code of Conduct + +This project does **NOT** have a so called Code of Conduct, nor will +it ever get one. + +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 of 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 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 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. + +Juding 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. + +Another huge problem with ethical rules is that you need to outline +and enforce sanctions on thos 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. I am a german citizen and am +living in relatively freedom. Unlike many other people living in +democracies these days, I myself fought for this very freedom on the +streets of Leipzig in 1989. I saw the tanks, the Stasi officers, I +felt the fear. But the laws under I live today and which I have to +adhere to, are only limited to the small speck on earth I am living on. + +So, let's say someone in india says something insulting to some other +developer in an issue. Of course german law does not apply to indian +people. More, the insult might actually not be an insult in india. In +the end, nothing would happen. Under normal circumstances, maintainers +would 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 on both countries would +just laugh and close the case. + +And let's not even start talking about there undemocratic "comitees" +many projects are forming to circumvent this problem. + +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. + +## So, which 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. + +**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 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..7d215b5 --- /dev/null +++ b/CONTRIBUTING.md @@ -0,0 +1,94 @@ +## Project Goals + +The goal of this project is to build a small tool which helps in day +to day work with tabular output of various commandline programs. It +should be small, fast and easy to understand. The idea is to replace +multiline shell pipes using awk, sed and grep with just one +binary. + +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) +- tablizer version (`tablizer --version`) +- Input data. Please replace sensitive information with mock data! +- Actual program output. +- Expected program output. +- Error message - if any. + +Be aware that I am working on this (and some other) 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 addition. + +- 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](tablizer.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!