Console.Waterworks.Core is the .Net Core version of Console.Waterworks. https://www.craigoates.net/Software/project/8
You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

12 KiB

Logo

Contributing to Console.Waterworks.Core

Let me begin by saying thank you for stopping by and checking out Console.Waterworks.Core.

The following is a set of guidelines for contributing to Console.Waterworks.Core. I must stress, though, they are guidelines and nothing more. They are not set in stone. Please feel free to use your own judgement when contributing.

Code of Conduct

The Console.Waterworks.Core Code of Conduct governs every participant of this project. If you decide to take part in developing and cultivating the project, the expectation is you adhere to it.

Please report any unacceptable behaviour to craig@craigoates.net.

The Creator's Expectations for Console.Waterworks.Core

To those who do not know, Console.Waterworks.Core is the creation of Craig Oates (A.K.A. me). I am a person, like you, and I argue it is important you know a bit about me. The reason why this is important is because it will help you gauge if this project is for you. I do not want you to feel frustrated when working on Console.Waterworks.Core due to people problems. I know I cannot foresee every problem and counteract it. But, I can let you know the type of person I am and what I expect from the project. This will help you gauge the likelihood of us having conflicting personalities. And, it will highlight any differences in perspectives sooner -- if all goes as intended.

If it does look like we have a miss-match at the person level, I would like to take a moment and say one thing. It is okay -- we do not all think alike. You will face no hard feelings from me and I have no problem with you forking the code. If you do, I wish you the best of luck. And, do not feel like you cannot contact me and show me your weird and wonderful concoction.

Now back to the project stuff...

From my point-of-view, I am not in a rush to turn Console.Waterworks.Core into a jack-of-trades thing. I would like to keep the scope of it as a simple "plumbing code" Nuget package. That does not mean I am against adding any new features, though. Because of this, I ask you to expect a conservative mind-set.

Before moving on, I would like to reiterate a point from above. You will not receive any ill-will from me if our goals do not align. It is okay to disagree. I am well aware one persons "done" is another person’s starting point.

"I don't want to read this, I want to ask a quick question"

The easiest and faster way to contact me is via email. Which is craig@craigoates.net. I do not recommend filling an issue because of this.

"What Should I Know Before I Get Started?"

Before you jump in, I recommend you read The Complete Guide to Console.Waterworks.Core. Console.Waterworks.Core is not the most expansive or complex piece of code on the planet. But, it does have its own quirks and behaviours. I have tried to make it as modular and as easy to read as possible. But, it still has a reasonable amount of complexity to it. So, please read the guide.

"How Can I Contribute?"

You can contribute to the project in several ways. The obvious two ways are filing issues and sending pull requests. You can, also, contribute by sending me an email. Although, the last one is not as open as the previous two. It is still an effective route to take if you want to discuss something at length. My email address is craig@craigoates.net.

Reporting Bugs

I track bugs using GitHub Issues. If you find one, fill out the template provided and file an issue.

When you file a bug report, do not hold back with the details. The more information I have, the chance of me fixing it increases.

Suggesting Enhancements

You might have read The Creator's Expectations above... If you have, you will know I hold a conservative attitude for adding features. With that said, I am not against adding new features -- stated above as well. If you believe your suggestion has some merit, please feel free to submit it. I am more than happy to discuss your plan. Please, do not feel offended if your suggestion does not get added to the project, though. That is not my intension.

"How do I Submit an Enhancement Suggestion?"

You can submit an enhancement suggestion via GitHub Issues. Before you do, here is a list of things to consider when submitting an enhancement suggestion.

  • Use a clear and descriptive title for the issue to help identify the suggestion.
  • Describe your enhancement in a brief summary. Aim to be as clear as possible.
  • Highlight the area where this enhancement will improve Console.Waterworks.Core.
  • Provide a summary of how you intend to add your suggestion.
  • If you have any step-by-step instructions, include them.
  • Include any code snippets you think will help explain your points better. You can provide either links to an external source or include them as markdown blocks.
  • Include screenshots and animated GIFs. They will help me understand your proposal better. It will, also, help explain where it will fit into Console.Waterworks.Core.
  • You can use Licecap to help you record GIFs. It is available on Windows and MacOS. If you are on Linux, you can use Silentcast or Byzanz. They are, also, GIF recording programs.
  • Explain why this suggestion will be useful for most consumers of Console.Waterworks.Core. I ask you to do this because it is one thing to work on Console.Waterworks.Core and another to use it as a Nuget package.
  • List any other examples of your suggestion in a working context. Also, highlight the benefit it has brought to that codebase.

I have decided not to include a template here because writing proposals can be a messy and tricky affair. They can be the rally call to the great unknown or a meticulous path to paradise. Each approach has its place in this world and I aim to keep it that way. With that said, try to keep your suggestion as clear and concise as possible. I ask this because -- to be frank -- if I do not understand your suggestion how can I agree to include it?

Pull Requests

Before submitting a pull request, I must stress the importance of talking to me first. I do not want you spending hours of your time writing code for Console.Waterworks.Core to then face rejection. Your time is not my time and I would like to avoid wasting either of ours if I can help it. If there is something you would like to add to Console.Waterworks.Core, you can do two things. The first is email me (craig@craigoates.net) and talk about your plans. This is the quickest way for you to find out if your idea is worth pursuing. The second thing you can do is send an enhancement suggestion via GitHub Issues and hold the discussion there. This will result in a slower response but the conversation will be in the open. If you decide to file a suggestion, make sure you have read "Suggesting Enhancements", above.

Now back to the pull requests...

Here is a list of things to consider when submitting a pull request:

  • Fill in the Pull Requests Template
  • Do not include issue numbers in the pull request title.
  • Include screenshots and animated GIFs in your pull request whenever possible.
  • Follow the C# and Code Comments style guides.
  • Describe how you intend to add the code into the project's documentation.

Style Guides

As the title of this section implies, the following pertains to a collection of guides and not rules. With that said, I ask you to adhere to them as best as you can. Doing so, you will make my life easier. It will, also, mean you will have a faster response from me -- less work for me to work through. If you feel like you need to break away from these guides, please do so with care and caution.

Git Commit Messages

  • Limit the first line to 72 charters or less.
  • Reference issues and pull requests after the first line.
  • When changing documentation and nothing else, include "[Doc-update]" in the pull request title.
  • I am not against the inclusion of the odd emoji but go easy on the amount you use.
  • Use past tense (E.G. "Added feature X" not "Add feature X" or "Adding feature X").
  • Aim to keep the message list-like until the end. From there, include any extra information in standard prose.
  • Try to keep everything as clear and concise as possible.

C# (C-Sharp)

Aim to adhere to the standard C# coding conventions. If you are working in Visual Studio, the automatic formatting should suffice.

I have tried to reduce the inclusion of comments to public facing and "messy" code. This is due -- for the most part -- to intelliSense. It provides the user of Console.Waterworks.Core with help when wiring it up to their console program. With that said, what makes sense to me does not mean it does for you. So, if you feel like something needs further explanation, please add a comment. I would prefer it is comments aimed to explain the "why" and not the "how" or "what". But, this preference is a starting point and not an absolute. If you add a comment, please use XML-Comments for public code and standard comments for private code. I am not fussed if you use one multi-line comment or several inline ones.

Even more Notes

If you would like to contribute to the project, thank you. Before you do, though, please make sure no one has already provided what you are offering. I am yet to come across someone with a liking for processing repeated issues, points or mistakes. And, I doubt I ever will, so please check. I appreciate all efforts by those checking to see if what they are saying is something new.

Do not feel put-off if I am slow to respond. I will read what you have to say but I am not at my desk all the time. On top of that, I encourage you to refrain from instant replies if you can help it. This allows me to consider what you have said without feeling pressured. I do not want to waste your time by retracting a hasty and ill-thought-through response.

And with that...

Do not feel like you need to reply back as fast as possible. If you feel the need to ponder something, do so. I am under the impression a good answer is better than a quick one. If you still feel bad for not replying as fast as possible, I have a piece of advice: Let me know you have received the communication (email, issue comment Etc.) and state you are thinking about it -- job's a goodun.

Last but not least...

I will not tolerate anyone acting like an "arsehole". I put Console.Waterworks.Core on GitHub to help others. It is a nice thing to do. I owe you nothing and you owe me nothing. The same applies to everyone participating here. There is no need for any heated behaviour. So, with that said, welcome to Console.Waterworks.Core and thanks again for contributing.