Start work on the official walkthrough
Keep salt-minion around under upstart even if it dies (uses respawn).

Allow respawn to be effective after a SIGTERM
update document
Check MySQL password on mysql.user_present state

Check the user MySQL password when the state mysql.user_present is
executed. If a different password is found but the user exists, a
user_chpass command will be raised.
In minion config file we can set option 'mysql.default_file' to allow MySQLdb (read_default_file native option) to read file with defaults to use it's data for auth.
But if we do not set option read_default_group for MySQLdb no defaults are really used. So we need explicitly set read_default_group to use defaults file.
In example if we use defaults file
/root/.my.cnf:

 [mysql]
 password=foobarpassword

and in /etc/salt/minion exists:

  mysql.default_file: '/root/.my.cnf'

there will be error if we do not supply password:

foo salt # salt 'testhost' mysql.user_exists user=foobar
testhost:
    Traceback (most recent call last):
      File "/usr/lib64/python2.7/site-packages/salt/minion.py", line 411, in _thread_return
        ret['return'] = func(*args, **kwargs)
      File "/usr/lib64/python2.7/site-packages/salt/modules/mysql.py", line 438, in user_exists
        dbc = _connect()
      File "/usr/lib64/python2.7/site-packages/salt/modules/mysql.py", line 115, in _connect
        dbc = MySQLdb.connect(**connargs)
      File "/usr/lib64/python2.7/site-packages/MySQLdb/__init__.py", line 81, in Connect
        return Connection(*args, **kwargs)
      File "/usr/lib64/python2.7/site-packages/MySQLdb/connections.py", line 187, in __init__
        super(Connection, self).__init__(*args, **kwargs2)
    OperationalError: (1045, "Access denied for user 'root'@'localhost' (using password: NO)")

If /etc/salt/minion contains:
  mysql.default_file: '/root/.my.cnf'
  mysql.default_group: 'mysql'

all will be OK:

foo salt # salt 'testhost' mysql.user_exists user=foobar
testhost:
    False
Pre-Depend on salt-common to fix #3710
Make sure makedirs: True accounts for case where a trailing slash exists
update the package per issue #3710 and issue #3821
modules.pip editable to handle use case with local module w/o egg.
Merge pull request #3824 from archtaku/docs

Add notes on true/false, yes/no, on/off
Merge pull request #3826 from hvnsweeting/develop

update document
Merge pull request #3827 from ealekseev/develop

Fix connections using read_default_file in modules/mysql
Merge pull request #3829 from tony/file.directory-makedirs-fix

Make sure makedirs: True accounts for case where a trailing slash exists
Merge pull request #3830 from tony/pip-editable-local

modules.pip editable to handle use case with local module w/o egg.
Add notes to walkthrough
Merge pull request #3831 from igalarzab/ticket-3703

Check MySQL password on mysql.user_present state
Ignore IntelliJ PyCharm files.
Merge pull request #3833 from holmboe/ignore-pycharm

Ignore IntelliJ PyCharm files.
Add some good functions to walkthrough
Fix Windows Installer download location