Improve README and CONTRIBUTING

This commit is contained in:
Alyssa Rock 2022-11-07 15:22:13 -07:00
parent 0f6b9efbea
commit c485d1de7b
5 changed files with 207 additions and 264 deletions

View file

@ -2,34 +2,33 @@
Contributing Contributing
============ ============
So you want to contribute to the Salt project? Excellent! You can help So you want to contribute to the Salt project? Excellent! You can help
in a number of ways: in a number of ways:
- Using Salt and opening well-written bug reports. - Use Salt and open well-written bug reports.
- Joining a `working group <https://github.com/saltstack/community>`__. - Join a `working group <https://github.com/saltstack/community>`__.
- Answering questions on `irc <https://web.libera.chat/#salt>`__, - Answer questions on `irc <https://web.libera.chat/#salt>`__,
the `community Slack <https://join.slack.com/t/saltstackcommunity/shared_invite/zt-3av8jjyf-oBQ2M0vhXOhJpNpRkPWBvg>`__, the `community Slack <https://join.slack.com/t/saltstackcommunity/shared_invite/zt-3av8jjyf-oBQ2M0vhXOhJpNpRkPWBvg>`__,
the `salt-users mailing the `salt-users mailing
list <https://groups.google.com/forum/#!forum/salt-users>`__, list <https://groups.google.com/forum/#!forum/salt-users>`__,
`Server Fault <https://serverfault.com/questions/tagged/saltstack>`__, `Server Fault <https://serverfault.com/questions/tagged/saltstack>`__,
or `r/saltstack on Reddit <https://www.reddit.com/r/saltstack/>`__. or `r/saltstack on Reddit <https://www.reddit.com/r/saltstack/>`__.
- Fixing bugs. - Fix bugs.
- `Enhancing the documentation <https://docs.saltproject.io/en/master/topics/development/conventions/documentation.html#salt-docs>`__. - `Improve the documentation <https://saltstack.gitlab.io/open/docs/docs-hub/topics/contributing.html>`__.
- Providing workarounds, patches, or other code without tests. - Provide workarounds, patches, or other code without tests.
- Telling other people about problems you solved using Salt. - Tell other people about problems you solved using Salt.
If youd like to update docs or fix an issue, youre going to need the If you'd like to update docs or fix an issue, you're going to need the
Salt repo. The best way to contribute is using Salt repo. The best way to contribute is using
`Git <https://git-scm.com/>`__. `Git <https://git-scm.com/>`__.
Environment Setup
-----------------
To hack on Salt or the docs youre going to need to set up your Environment setup
development environment. If you already have a workflow that youre =================
To hack on Salt or the docs you're going to need to set up your
development environment. If you already have a workflow that you're
comfortable with, you can use that, but otherwise this is an opinionated comfortable with, you can use that, but otherwise this is an opinionated
guide for setting up your dev environment. Follow these steps and youll guide for setting up your dev environment. Follow these steps and you'll
end out with a functioning dev environment and be able to submit your end out with a functioning dev environment and be able to submit your
first PR. first PR.
@ -44,16 +43,15 @@ more about Git. One popular resource is the free online book `Learn Git
in a Month of in a Month of
Lunches <https://www.manning.com/books/learn-git-in-a-month-of-lunches>`__. Lunches <https://www.manning.com/books/learn-git-in-a-month-of-lunches>`__.
pyenv, Virtual Environments, and You
----------------------------------------
pyenv, Virtual Environments, and you
------------------------------------
We recommend `pyenv <https://github.com/pyenv/pyenv>`__, since it allows We recommend `pyenv <https://github.com/pyenv/pyenv>`__, since it allows
installing multiple different Python versions, which is important for installing multiple different Python versions, which is important for
testing Salt across all the versions of Python that we support. testing Salt across all the versions of Python that we support.
On Linux On Linux
~~~~~~~~ ^^^^^^^^
Install pyenv: Install pyenv:
:: ::
@ -63,8 +61,7 @@ Install pyenv:
git clone https://github.com/pyenv/pyenv-virtualenv.git $(pyenv root)/plugins/pyenv-virtualenv git clone https://github.com/pyenv/pyenv-virtualenv.git $(pyenv root)/plugins/pyenv-virtualenv
On Mac On Mac
~~~~~~ ^^^^^^
Install pyenv using brew: Install pyenv using brew:
:: ::
@ -93,11 +90,11 @@ version of Python:
pyenv install 3.7.0 pyenv install 3.7.0
If that fails, dont panic! Youre probably just missing some build If that fails, don't panic! You're probably just missing some build
dependencies. Check out `pyenv common build dependencies. Check out `pyenv common build
problems <https://github.com/pyenv/pyenv/wiki/Common-build-problems>`__. problems <https://github.com/pyenv/pyenv/wiki/Common-build-problems>`__.
Now that youve got your version of Python installed, you can create a Now that you've got your version of Python installed, you can create a
new virtual environment with this command: new virtual environment with this command:
:: ::
@ -110,13 +107,13 @@ Then activate it:
pyenv activate salt pyenv activate salt
Sweet! Now youre ready to clone Salt so you can start hacking away! If Sweet! Now you're ready to clone Salt so you can start hacking away! If
you get stuck at any point, check out the resources at the beginning of you get stuck at any point, check out the resources at the beginning of
this guide. IRC and Slack are particularly helpful places to go. this guide. IRC and Slack are particularly helpful places to go.
Get The Source!
~~~~~~~~~~~~~~~
Get the source!
---------------
Salt uses the fork and clone workflow for Git contributions. See `Using Salt uses the fork and clone workflow for Git contributions. See `Using
the Fork-and-Branch Git the Fork-and-Branch Git
Workflow <https://blog.scottlowe.org/2015/01/27/using-fork-branch-git-workflow/>`__ Workflow <https://blog.scottlowe.org/2015/01/27/using-fork-branch-git-workflow/>`__
@ -130,13 +127,13 @@ Clones are so shallow. Well, this one is anyway:
git clone --depth=1 --origin salt https://github.com/saltstack/salt.git git clone --depth=1 --origin salt https://github.com/saltstack/salt.git
This creates a shallow clone of Salt, which should be fast. Most of the This creates a shallow clone of Salt, which should be fast. Most of the
time thats all youll need, and you can start building out other time that's all you'll need, and you can start building out other
commits as you go. If you *really* want all 108,300+ commits you can commits as you go. If you *really* want all 108,300+ commits you can
just run ``git fetch --unshallow``. Then go make a sandwich because its just run ``git fetch --unshallow``. Then go make a sandwich because it's
gonna be a while. gonna be a while.
Youre also going to want to head over to GitHub and create your own You're also going to want to head over to GitHub and create your own
`fork of Salt <https://github.com/saltstack/salt/fork>`__. Once youve `fork of Salt <https://github.com/saltstack/salt/fork>`__. Once you've
got that set up you can add it as a remote: got that set up you can add it as a remote:
:: ::
@ -144,16 +141,16 @@ got that set up you can add it as a remote:
git remote add yourname <YOUR SALT REMOTE> git remote add yourname <YOUR SALT REMOTE>
If you use your name to refer to your fork, and ``salt`` to refer to the If you use your name to refer to your fork, and ``salt`` to refer to the
official Salt repo youll never get ``upstream`` or ``origin`` confused. official Salt repo you'll never get ``upstream`` or ``origin`` confused.
.. note:: .. note::
Each time you start work on a new issue you should fetch the most recent Each time you start work on a new issue you should fetch the most recent
changes from ``salt/upstream``. changes from ``salt/upstream``.
``pre-commit`` and ``nox`` Setup
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
Set up ``pre-commit`` and ``nox``
---------------------------------
Here at Salt we use `pre-commit <https://pre-commit.com/>`__ and Here at Salt we use `pre-commit <https://pre-commit.com/>`__ and
`nox <https://nox.thea.codes/en/stable/>`__ to make it easier for `nox <https://nox.thea.codes/en/stable/>`__ to make it easier for
contributors to get quick feedback, for quality control, and to increase contributors to get quick feedback, for quality control, and to increase
@ -177,14 +174,14 @@ others. You can easily install them in your virtualenv with:
Please ensure you export ``SKIP=pip-tools-compile`` to skip pip-tools-compile. Please ensure you export ``SKIP=pip-tools-compile`` to skip pip-tools-compile.
Now before each commit, it will ensure that your code at least *looks* Now before each commit, it will ensure that your code at least *looks*
right before you open a pull request. And with that step, its time to right before you open a pull request. And with that step, it's time to
start hacking on Salt! start hacking on Salt!
.. _imagemagick-setup: .. _imagemagick-setup:
``imagemagick`` Setup Set up ``imagemagick``
~~~~~~~~~~~~~~~~~~~~~ ---------------------
One last prerequisite is to have ``imagemagick`` installed, as it is required One last prerequisite is to have ``imagemagick`` installed, as it is required
by Sphinx for generating the HTML documentation. by Sphinx for generating the HTML documentation.
@ -199,17 +196,17 @@ by Sphinx for generating the HTML documentation.
sudo apt install imagemagick sudo apt install imagemagick
Salt Issues Salt issues
----------- ===========
Create Your Own Create your own
~~~~~~~~~~~~~~~ ---------------
Perhaps youve come to this guide because you found a problem in Salt, Perhaps you've come to this guide because you found a problem in Salt,
and youve diagnosed the cause. Maybe you need some help figuring out and you've diagnosed the cause. Maybe you need some help figuring out
the problem. In any case, creating quality bug reports is a great way to the problem. In any case, creating quality bug reports is a great way to
contribute to Salt even if you lack the skills, time, or inclination to contribute to Salt even if you lack the skills, time, or inclination to
fix it yourself. If thats the case, head on over to `Salts issue fix it yourself. If that's the case, head on over to `Salt's issue
tracker on tracker on
GitHub <https://github.com/saltstack/salt/issues/new/choose>`__. GitHub <https://github.com/saltstack/salt/issues/new/choose>`__.
@ -228,20 +225,20 @@ In a nutshell:
- **Minimum**: All of the **extra** information has been removed. Will - **Minimum**: All of the **extra** information has been removed. Will
2 or 3 lines of master/minion config still exhibit the behavior? 2 or 3 lines of master/minion config still exhibit the behavior?
- **Complete**: Minimum also means complete. If your example is missing - **Complete**: Minimum also means complete. If your example is missing
information, then its not complete. Salt, Python, and OS versions information, then it's not complete. Salt, Python, and OS versions
are all bits of information that make your example complete. Have you are all bits of information that make your example complete. Have you
provided the commands that you ran? provided the commands that you ran?
- **Verifiable**: Can someone take your report and reproduce it? - **Verifiable**: Can someone take your report and reproduce it?
Slow is smooth, and smooth is fast - it may feel like youre taking a Slow is smooth, and smooth is fast - it may feel like you're taking a
long time to create your issue if youre creating a proper MCVE, but a long time to create your issue if you're creating a proper MCVE, but a
MCVE eliminates back and forth required to reproduce/verify the issue so MCVE eliminates back and forth required to reproduce/verify the issue so
someone can actually create a fix. someone can actually create a fix.
Pick An Issue Pick an issue
~~~~~~~~~~~~~ -------------
If you dont already have an issue in mind, you can search for `help If you don't already have an issue in mind, you can search for `help
wanted <https://github.com/saltstack/salt/issues?q=is%3Aissue+is%3Aopen+label%3A%22help+wanted%22>`__ wanted <https://github.com/saltstack/salt/issues?q=is%3Aissue+is%3Aopen+label%3A%22help+wanted%22>`__
issues. If you also search for `good first issues. If you also search for `good first
issue <https://github.com/saltstack/salt/issues?q=is%3Aissue+is%3Aopen+label%3A%22help+wanted%22+label%3A%22good+first+issue%22>`__ issue <https://github.com/saltstack/salt/issues?q=is%3Aissue+is%3Aopen+label%3A%22help+wanted%22+label%3A%22good+first+issue%22>`__
@ -249,17 +246,17 @@ then you should be able to find some issues that are good for getting
started contributing to Salt. `Documentation started contributing to Salt. `Documentation
issues <https://github.com/saltstack/salt/issues?q=is%3Aissue+is%3Aopen+label%3Adocumentation+>`__ issues <https://github.com/saltstack/salt/issues?q=is%3Aissue+is%3Aopen+label%3Adocumentation+>`__
are also good starter issues. When you find an issue that catches your are also good starter issues. When you find an issue that catches your
eye (or one of your own), its a good idea to comment on the issue and eye (or one of your own), it's a good idea to comment on the issue and
mention that youre working on it. Good communication is key to mention that you're working on it. Good communication is key to
collaboration - so if you dont have time to complete work on the issue, collaboration - so if you don't have time to complete work on the issue,
just leaving some information about when you expect to pick things up just leaving some information about when you expect to pick things up
again is a great idea! again is a great idea!
Hacking Away Hacking away
------------ ============
Salt, Tests, Documentation, and You Salt, tests, documentation, and you
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ -----------------------------------
Before approving code contributions, Salt requires: Before approving code contributions, Salt requires:
@ -269,27 +266,26 @@ Before approving code contributions, Salt requires:
Documentation fixes just require correct documentation. Documentation fixes just require correct documentation.
What If I Dont Write Tests or Docs? What if I don't write tests or docs?
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
If you arent into writing documentation or tests, we still welcome your If you aren't into writing documentation or tests, we still welcome your
contributions! But your PR will be labeled ``Needs Testcase`` and contributions! But your PR will be labeled ``Needs Testcase`` and
``Help Wanted`` until someone can get to write the tests/documentation. ``Help Wanted`` until someone can get to write the tests/documentation.
Of course, if you have a desire but just lack the skill we are more than Of course, if you have a desire but just lack the skill we are more than
happy to collaborate and help out! Theres the `documentation working happy to collaborate and help out! There's the `documentation working
group <https://github.com/saltstack/docs-hub>`__ and the `testing group <https://saltstack.gitlab.io/open/docs/docs-hub/topics/home.html>`__
working and the `testing working group <https://github.com/saltstack/community/tree/master/working_groups/wg-Testing>`__.
group <https://github.com/saltstack/community/tree/master/working_groups/wg-Testing>`__.
We also regularly stream our test clinic `live on We also regularly stream our test clinic `live on
Twitch <https://www.twitch.tv/saltprojectoss>`__ every Tuesday afternoon Twitch <https://www.twitch.tv/saltprojectoss>`__ every Tuesday afternoon
and Thursday morning, Central Time. If youd like specific help with and Thursday morning, Central Time. If you'd like specific help with
tests, bring them to the clinic. If no community members need help, you tests, bring them to the clinic. If no community members need help, you
can also just watch tests written in real time. can also just watch tests written in real time.
.. _docs-building: .. _docs-building:
Documentation Documentation
~~~~~~~~~~~~~ -------------
Salt uses both docstrings, as well as normal reStructuredText files in Salt uses both docstrings, as well as normal reStructuredText files in
the ``salt/doc`` folder for documentation. Sphinx is used to generate the the ``salt/doc`` folder for documentation. Sphinx is used to generate the
@ -314,20 +310,20 @@ this:
cd -; python -m nox -e 'docs-html(compress=False, clean=False)'; cd doc/_build/html; python -m http.server cd -; python -m nox -e 'docs-html(compress=False, clean=False)'; cd doc/_build/html; python -m http.server
And then refresh your browser to get your updated docs. This one should And then refresh your browser to get your updated docs. This one should
be quite a bit faster since Sphinx wont need to rebuild everything. be quite a bit faster since Sphinx won't need to rebuild everything.
If your change is a docs-only change, you can go ahead and commit/push If your change is a docs-only change, you can go ahead and commit/push
your code and open a PR. You can indicate that its a docs-only change by your code and open a PR. You can indicate that it's a docs-only change by
adding ``[Documentation]`` to the title of your PR. Otherwise youll adding ``[Documentation]`` to the title of your PR. Otherwise you'll
want to write some tests and code. want to write some tests and code.
Running Development Salt
~~~~~~~~~~~~~~~~~~~~~~~~
Running development Salt
------------------------
Note: If you run into any issues in this section, check the Note: If you run into any issues in this section, check the
Troubleshooting section. Troubleshooting section.
If youre going to hack on the Salt codebase youre going to want to be If you're going to hack on the Salt codebase you're going to want to be
able to run Salt locally. The first thing you need to do is install Salt able to run Salt locally. The first thing you need to do is install Salt
as an editable pip install: as an editable pip install:
@ -337,7 +333,7 @@ as an editable pip install:
This will let you make changes to Salt without having to re-install it. This will let you make changes to Salt without having to re-install it.
After all of the dependencies and Salt are installed, its time to set After all of the dependencies and Salt are installed, it's time to set
up the config for development. Typically Salt runs as ``root``, but you up the config for development. Typically Salt runs as ``root``, but you
can specify which user to run as. To configure that, just copy the can specify which user to run as. To configure that, just copy the
master and minion configs. We have .gitignore setup to ignore the master and minion configs. We have .gitignore setup to ignore the
@ -397,35 +393,35 @@ from the minion instead:
salt-call -c local/etc/salt test.version salt-call -c local/etc/salt test.version
Note that youre running ``salt-call`` instead of ``salt``, and youre Note that you're running ``salt-call`` instead of ``salt``, and you're
not specifying the minion (``\*``), but if youre running the dev not specifying the minion (``\*``), but if you're running the dev
version then you still will need to pass in the config dir. Now that version then you still will need to pass in the config dir. Now that
youve got Salt running, you can hack away on the Salt codebase! you've got Salt running, you can hack away on the Salt codebase!
If you need to restart Salt for some reason, if youve made changes and If you need to restart Salt for some reason, if you've made changes and
they dont appear to be reflected, this is one option: they don't appear to be reflected, this is one option:
:: ::
kill -INT $(pgrep salt-master) kill -INT $(pgrep salt-master)
kill -INT $(pgrep salt-minion) kill -INT $(pgrep salt-minion)
If youd rather not use ``kill``, you can have a couple of terminals If you'd rather not use ``kill``, you can have a couple of terminals
open with your salt virtualenv activated and omit the ``--daemon`` open with your salt virtualenv activated and omit the ``--daemon``
argument. Salt will run in the foreground, so you can just use ctrl+c to argument. Salt will run in the foreground, so you can just use ctrl+c to
quit. quit.
Test First? Test Last? Test Meaningfully!
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
Test first? Test last? Test meaningfully!
-----------------------------------------
You can write tests first or tests last, as long as your tests are You can write tests first or tests last, as long as your tests are
meaningful and complete! *Typically* the best tests for Salt are going meaningful and complete! *Typically* the best tests for Salt are going
to be unit tests. Testing is `a whole topic on its to be unit tests. Testing is `a whole topic on its
own <https://docs.saltproject.io/en/master/topics/tutorials/writing_tests.html>`__, own <https://docs.saltproject.io/en/master/topics/tutorials/writing_tests.html>`__,
But you may also want to write functional or integration tests. Youll But you may also want to write functional or integration tests. You'll
find those in the ``salt/tests`` directory. find those in the ``salt/tests`` directory.
When youre thinking about tests to write, the most important thing to When you're thinking about tests to write, the most important thing to
keep in mind is, “What, exactly, am I testing?” When a test fails, you keep in mind is, “What, exactly, am I testing?” When a test fails, you
should know: should know:
@ -433,21 +429,21 @@ should know:
- Why did it fail? - Why did it fail?
- As much as possible, what do I need to do to fix this failure? - As much as possible, what do I need to do to fix this failure?
If you cant answer those questions then you might need to refactor your If you can't answer those questions then you might need to refactor your
tests. tests.
When youre running tests locally, you should make sure that if you When you're running tests locally, you should make sure that if you
remove your code changes your tests are failing. If your tests *arent* remove your code changes your tests are failing. If your tests *aren't*
failing when you havent yet made changes, then its possible that failing when you haven't yet made changes, then it's possible that
youre testing the wrong thing. you're testing the wrong thing.
But whether you adhere to TDD/BDD, or you write your code first and your But whether you adhere to TDD/BDD, or you write your code first and your
tests last, ensure that your tests are meaningful. tests last, ensure that your tests are meaningful.
Running Tests
^^^^^^^^^^^^^
As previously mentioned, we use ``nox``, and thats how we run our Running tests
-------------
As previously mentioned, we use ``nox``, and that's how we run our
tests. You should have it installed by this point but if not you can tests. You should have it installed by this point but if not you can
install it with this: install it with this:
@ -461,26 +457,26 @@ Now you can run your tests:
python -m nox -e "pytest-3.7(coverage=False)" -- tests/unit/cli/test_batch.py python -m nox -e "pytest-3.7(coverage=False)" -- tests/unit/cli/test_batch.py
Its a good idea to install It's a good idea to install
`espeak <https://github.com/espeak-ng/espeak-ng>`__ or use ``say`` on `espeak <https://github.com/espeak-ng/espeak-ng>`__ or use ``say`` on
Mac if youre running some long-running tests. You can do something like Mac if you're running some long-running tests. You can do something like
this: this:
:: ::
python -m nox -e "pytest-3.7(coverage=False)" -- tests/unit/cli/test_batch.py; espeak "Tests done, woohoo!" python -m nox -e "pytest-3.7(coverage=False)" -- tests/unit/cli/test_batch.py; espeak "Tests done, woohoo!"
That way you dont have to keep monitoring the actual test run. That way you don't have to keep monitoring the actual test run.
Changelog and Commit!
~~~~~~~~~~~~~~~~~~~~~
Changelog and commit!
---------------------
When you write your commit message you should use imperative style. Do When you write your commit message you should use imperative style. Do
this: this:
Add frobnosticate capability Add frobnosticate capability
Dont do this: Don't do this:
Added frobnosticate capability Added frobnosticate capability
@ -495,44 +491,44 @@ instanch, if you fixed issue 123, you would do:
echo "Made sys.doc inform when no minions return" > changelog/123.fixed echo "Made sys.doc inform when no minions return" > changelog/123.fixed
And thats all that would go into your file. When it comes to your And that's all that would go into your file. When it comes to your
commit message, its usually a good idea to add other information, such as commit message, it's usually a good idea to add other information, such as
- What does a reviewer need to know about the change that you made? - What does a reviewer need to know about the change that you made?
- If someone isnt an expert in this area, what will they need to know? - If someone isn't an expert in this area, what will they need to know?
This will also help you out, because when you go to create the PR it This will also help you out, because when you go to create the PR it
will automatically insert the body of your commit messages. will automatically insert the body of your commit messages.
PR Time!
--------
Once youve done all your dev work and tested locally, you should check Pull request time!
------------------
Once you've done all your dev work and tested locally, you should check
out our `PR out our `PR
guidelines <https://docs.saltproject.io/en/master/topics/development/pull_requests.html>`__. guidelines <https://docs.saltproject.io/en/master/topics/development/pull_requests.html>`__.
After you read that page, its time to `open a new After you read that page, it's time to `open a new
PR <https://github.com/saltstack/salt/compare>`__. Fill out the PR PR <https://github.com/saltstack/salt/compare>`__. Fill out the PR
template - you should have updated or created any necessary docs, and template - you should have updated or created any necessary docs, and
written tests if youre providing a code change. When you submit your written tests if you're providing a code change. When you submit your
PR, we have a suite of tests that will run across different platforms to PR, we have a suite of tests that will run across different platforms to
help ensure that no known bugs were introduced. help ensure that no known bugs were introduced.
Now What?
~~~~~~~~~
Youve made your changes, added documentation, opened your PR, and have Now what?
---------
You've made your changes, added documentation, opened your PR, and have
passing tests… now what? When can you expect your code to be merged? passing tests… now what? When can you expect your code to be merged?
When you open your PR, a reviewer will get automatically assigned. If When you open your PR, a reviewer will get automatically assigned. If
your PR is submitted during the week you should be able to expect some your PR is submitted during the week you should be able to expect some
kind of communication within that business day. If your tests are kind of communication within that business day. If your tests are
passing and were not in a code freeze, ideally your code will be merged passing and we're not in a code freeze, ideally your code will be merged
that day. If you havent heard from your assigned reviewer, ping them on that week or month. If you haven't heard from your assigned reviewer, ping them
GitHub, `irc <https://web.libera.chat/#salt>`__, or Community Slack. on GitHub, `irc <https://web.libera.chat/#salt>`__, or Community Slack.
Its likely that your reviewer will leave some comments that need It's likely that your reviewer will leave some comments that need
addressing - it may be a style change, or you forgot a changelog entry, addressing - it may be a style change, or you forgot a changelog entry,
or need to update the docs. Maybe its something more fundamental - or need to update the docs. Maybe it's something more fundamental -
perhaps you encountered the rare case where your PR has a much larger perhaps you encountered the rare case where your PR has a much larger
scope than initially assumed. scope than initially assumed.
@ -542,22 +538,23 @@ open for a significant period of time it may be worth rebasing your
changes on the most recent changes to Salt. If you need help, the changes on the most recent changes to Salt. If you need help, the
previously linked Git resources will be valuable. previously linked Git resources will be valuable.
But if, for whatever reason, youre not interested in driving your PR to But if, for whatever reason, you're not interested in driving your PR to
completion then just note that in your PR. Something like, “Im not completion then just note that in your PR. Something like, “I'm not
interested in writing docs/tests, I just wanted to provide this fix - interested in writing docs/tests, I just wanted to provide this fix -
someone else will need to complete this PR.” If you do that then well someone else will need to complete this PR.” If you do that then we'll
add a “Help Wanted” label and someone will be able to pick up the PR, add a “Help Wanted” label and someone will be able to pick up the PR,
make the required changes, and it can eventually get merged in. make the required changes, and it can eventually get merged in.
In any case, now that you have a PR open, congrats! Youre a Salt In any case, now that you have a PR open, congrats! You're a Salt
developer! You rock! developer! You rock!
Troubleshooting Troubleshooting
--------------- ===============
zmq.core.error.ZMQError zmq.core.error.ZMQError
~~~~~~~~~~~~~~~~~~~~~~~ -----------------------
Once the minion starts, you may see an error like the following:: Once the minion starts, you may see an error like the following::
:: ::
@ -576,9 +573,9 @@ length of this path. This can be done in a couple different ways:
NOTE: The socket path is limited to 107 characters on Solaris and Linux, NOTE: The socket path is limited to 107 characters on Solaris and Linux,
and 103 characters on BSD-based systems. and 103 characters on BSD-based systems.
No permissions to access …
~~~~~~~~~~~~~~~~~~~~~~~~~~
No permissions to access ...
----------------------------
If you forget to pass your config path to any of the ``salt*`` commands, If you forget to pass your config path to any of the ``salt*`` commands,
you might see you might see
@ -589,9 +586,9 @@ you might see
Just pass ``-c local/etc/salt`` (or whatever you named it) Just pass ``-c local/etc/salt`` (or whatever you named it)
File descriptor limit
~~~~~~~~~~~~~~~~~~~~~
File descriptor limit
---------------------
You might need to raise your file descriptor limit. You can check it You might need to raise your file descriptor limit. You can check it
with: with:
@ -607,12 +604,12 @@ If the value is less than 3072, you should increase it with:
# For c-shell: # For c-shell:
limit descriptors 3072 limit descriptors 3072
Pygit2 or other dependency install fails
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
Pygit2 or other dependency install fails
----------------------------------------
You may see some failure messages when installing requirements. You can You may see some failure messages when installing requirements. You can
directly access your nox environment and possibly install pygit (or directly access your nox environment and possibly install pygit (or
other dependency) that way. When you run nox, youll see a message like other dependency) that way. When you run nox, you'll see a message like
this: this:
:: ::

View file

@ -36,47 +36,87 @@
* `Latest Salt Documentation`_ * `Latest Salt Documentation`_
* `Open an issue`_ (bug report, feature request, etc.) * `Open an issue`_ (bug report, feature request, etc.)
*Salt is the worlds fastest, most intelligent and scalable automation* *Salt is the world's fastest, most intelligent and scalable automation*
*engine.* *engine.*
About Salt About Salt
========== ==========
Built on Python, Salt is an event-driven automation tool and framework to
deploy, configure, and manage complex IT systems. Use Salt to automate common
infrastructure administration tasks and ensure that all the components of your
infrastructure are operating in a consistent desired state.
Built on python, Salt uses simple and human-readable YAML combined with Salt has many possible uses, including configuration management, which involves:
event-driven automation to deploy and configure complex IT systems. In addition
to leveling-up `vRealize Automation SaltStack Config`_, Salt can be found under
the hood of products from Juniper, Cisco, Cloudflare, Nutanix, SUSE, and Tieto,
to name a few.
About SaltStack * Managing operating system deployment and configuration.
=============== * Installing and configuring software applications and services.
* Managing servers, virtual machines, containers, databases, web servers,
network devices, and more.
* Ensuring consistent configuration and preventing configuration drift.
`SaltStack was acquired by VMware in 2020 <https://www.vmware.com/company/acquisitions/saltstack.html>`_. Salt is ideal for configuration management because it is pluggable,
Salt Project remains an open source ecosystem that VMware supports and customizable, and plays well with many existing technologies. Salt enables you
contributes to. to deploy and manage applications that use any tech stack running on nearly any
`operating system <https://docs.saltproject.io/salt/install-guide/en/latest/topics/salt-supported-operating-systems.html>`_,
including different types of network devices such as switches and routers from a
variety of vendors.
Download Salt In addition to configuration management Salt can also:
=============
* Automate and orchestrate routine IT processes, such as common required tasks
for scheduled server downtimes or upgrading operating systems or applications.
* Create self-aware, self-healing systems that can automatically respond to
outages, common administration problems, or other important events.
About our sponsors
==================
Salt powers VMware's `vRealize Automation SaltStack Config`_, and can be found
under the hood of products from Juniper, Cisco, Cloudflare, Nutanix, SUSE, and
Tieto, to name a few.
The original sponsor of our community, SaltStack, was `acquired by VMware in 2020 <https://www.vmware.com/company/acquisitions/saltstack.html>`_.
The Salt Project remains an open source ecosystem that VMware supports and
contributes to. VMware ensures the code integrity and quality of the Salt
modules by acting as the official sponsor and manager of the Salt project. Many
of the core Salt Project contributors are also VMware employees. This team
carefully reviews and enhances the Salt modules to ensure speed, quality, and
security.
Download and install Salt
=========================
Salt is tested and packaged to run on CentOS, Debian, RHEL, Ubuntu, MacOS, Salt is tested and packaged to run on CentOS, Debian, RHEL, Ubuntu, MacOS,
Windows, and more. Download Salt and get started now. Windows, and more. Download Salt and get started now. See
`supported operating systems <https://docs.saltproject.io/salt/install-guide/en/latest/topics/salt-supported-operating-systems.html>`_
for more information.
* `<https://repo.saltproject.io/>`_ To download and install Salt, see:
* `Installation Instructions <https://docs.saltproject.io/en/master/topics/installation/index.html>`_ * `The Salt install guide <https://docs.saltproject.io/salt/install-guide/en/latest/index.html>`_
* `Salt Project repository <https://repo.saltproject.io/>`_
Salt Project Documentation
Technical support
=================
Report bugs or problems using Salt by opening an issue: `<https://github.com/saltstack/salt/issues>`_
To join our community forum where you can exchange ideas, best practices,
discuss technical support questions, and talk to project maintainers, join our
Slack workspace: `Salt Project Community Slack`_
Salt Project documentation
========================== ==========================
Installation instructions, tutorials, in-depth API and module documentation:
Installation instructions, getting started guides, in-depth API * `The Salt install guide <https://docs.saltproject.io/salt/install-guide/en/latest/index.html>`_
documentation, and contributing to Salt. * `The Salt user guide <https://docs.saltproject.io/salt/user-guide/en/latest/>`_
* `Latest Salt documentation`_
* `Salt's contributing guide <https://docs.saltproject.io/en/master/topics/development/contributing.html>`_
* `Getting Started with Salt <https://docs.saltproject.io/en/getstarted/>`_
* `Latest Salt Documentation`_
* `Salts Contributor Guide <https://docs.saltproject.io/en/master/topics/development/contributing.html>`_
Security Advisories Security advisories
=================== ===================
Keep an eye on the Salt Project Keep an eye on the Salt Project
`Security Announcements <https://saltproject.io/security-announcements/>`_ `Security Announcements <https://saltproject.io/security-announcements/>`_
landing page. Salt Project recommends subscribing to the landing page. Salt Project recommends subscribing to the
@ -86,17 +126,26 @@ announcements.
Other channels to receive security announcements include the Other channels to receive security announcements include the
`Salt Community mailing list <https://groups.google.com/forum/#!forum/salt-users>`_ `Salt Community mailing list <https://groups.google.com/forum/#!forum/salt-users>`_
and the and the `Salt Project Community Slack`_.
`Salt Project Community Slack`_.
Responsibly Reporting Security Vulnerabilities
Responsibly reporting security vulnerabilities
++++++++++++++++++++++++++++++++++++++++++++++ ++++++++++++++++++++++++++++++++++++++++++++++
When reporting security vulnerabilities for Salt or other SaltStack projects, When reporting security vulnerabilities for Salt or other SaltStack projects,
refer to the `SECURITY.md`_ file found in this repository. refer to the `SECURITY.md`_ file found in this repository.
Engage the Salt Project and The Community
========================================= Join our community
==================
Salt is built by the Salt Project community, which includes more than 3,000
contributors working in roles just like yours. This well-known and trusted
community works together to improve the underlying technology and extend Salt by
creating a variety of execution and state modules to accomplish the most common
tasks or solve the most important problems that people in your role are likely
to face.
If you want to help extend Salt or solve a problem with Salt, you can join our
community and contribute today.
Please be sure to review our Please be sure to review our
`Code of Conduct <https://github.com/saltstack/salt/blob/master/CODE_OF_CONDUCT.md>`_. `Code of Conduct <https://github.com/saltstack/salt/blob/master/CODE_OF_CONDUCT.md>`_.
@ -115,12 +164,12 @@ to the **Salt Project Community Events Calendar** on the main
`<https://saltproject.io>`_ website. `<https://saltproject.io>`_ website.
If you have additional questions, email us at saltproject@vmware.com or reach out If you have additional questions, email us at saltproject@vmware.com or reach out
directly to the Community Manager, Janae Andrus via Slack. Wed be glad to directly to the Community Manager, Jimmy Chunga via Slack. We'd be glad to
have you join our community! have you join our community!
License License
======= =======
Salt is licensed under the Apache 2.0 license. Please Salt is licensed under the Apache 2.0 license. Please
see the see the
`LICENSE file <https://github.com/saltstack/salt/blob/master/LICENSE>`_ for the `LICENSE file <https://github.com/saltstack/salt/blob/master/LICENSE>`_ for the

View file

@ -10,7 +10,7 @@ Salt Table of Contents
topics/about_salt_project topics/about_salt_project
topics/index topics/index
topics/salt_system_architecture topics/salt_system_architecture
topics/community/index topics/contributing
topics/installation/index topics/installation/index
topics/configuration/index topics/configuration/index
topics/using_salt topics/using_salt

View file

@ -1,106 +0,0 @@
.. _salt-community:
========================
Salt Community Resources
========================
.. rubric:: Join the Salt!
There are many ways to participate in and communicate with the Salt community.
Salt has an active IRC channel and a mailing list.
Mailing List
============
Join the `salt-users mailing list`_. It is the best place to ask questions
about Salt and see whats going on with Salt development! The Salt mailing list
is hosted by Google Groups. It is open to new members.
.. _`salt-users mailing list`: https://groups.google.com/forum/#!forum/salt-users
Additionally, all users of Salt should be subscribed to the Announcements mailing
list which contains important updates about Salt, such as new releases and
security-related announcements. This list is low-traffic.
.. _`salt-announce mailing list`: https://groups.google.com/forum/#!forum/salt-announce
IRC
===
The ``#salt`` IRC channel is hosted on the popular `LiberaChat`_ network. You
can use the `LiberaChat webchat client`_ right from your browser. `Logs of the
IRC channel activity`_ are also available.
.. _LiberaChat: https://libera.chat/
.. _`LiberaChat webchat client`: https://web.libera.chat/#salt
.. _`Logs of the IRC channel activity`: http://ngxbot.nginx.org/logs/%23salt/
If you wish to discuss the development of Salt itself join us in ``#salt-devel``.
Follow on Github
================
The Salt code is developed via Github. Follow Salt for constant updates on what
is happening in Salt development:
|saltrepo|
Long-term planning and strategic decisions are handled via Salt Enhancement Proposals
and can be found on GitHub.
.. _`Salt Enhancement Proposals`: https://github.com/saltstack/salt-enhancement-proposals
Blogs
=====
The Salt Project keeps a `blog`_ with recent news and advancements:
https://saltproject.io/blog/
.. _`blog`: https://saltproject.io/blog/
Example Salt States
===================
The official ``salt-states`` repository is:
https://github.com/saltstack/salt-states
A few examples of salt states from the community:
* https://github.com/blast-hardcheese/blast-salt-states
* https://github.com/kevingranade/kevingranade-salt-state
* https://github.com/uggedal/states
* https://github.com/mattmcclean/salt-openstack/tree/master/salt
* https://github.com/rentalita/ubuntu-setup/
* https://github.com/brutasse/states
* https://github.com/pcrews/salt-data
Follow on ohloh
===============
https://www.ohloh.net/p/salt
Other community links
=====================
- `Salt Project <http://saltproject.io>`_
- `Subreddit <http://www.reddit.com/r/saltstack>`_
- `YouTube <https://www.youtube.com/channel/UCpveTIucFx9ljGelW63-BWg>`_
- `Twitch <https://twitch.tv/saltprojectoss>`_
- `Facebook <https://www.facebook.com/SaltProjectOSS>`_
- `Twitter <https://twitter.com/Salt_Project_OS>`_
- `Wikipedia page <https://en.wikipedia.org/wiki/Salt_(software)>`_
- `Stack Overflow <https://stackoverflow.com/questions/tagged/salt-stack+or+salt-cloud+or+salt-creation>`_
Hack the Source
===============
If you want to get involved with the development of source code or the
documentation efforts, please review the :ref:`contributing documentation
<contributing>`!
.. _`Apache 2.0 license`: http://www.apache.org/licenses/LICENSE-2.0.html

View file

@ -0,0 +1,3 @@
.. _contributing:
.. include:: ../../CONTRIBUTING.rst