diff --git a/.gitignore b/.gitignore
new file mode 100644
index 00000000..179b4868
--- /dev/null
+++ b/.gitignore
@@ -0,0 +1,3 @@
+output/
+__pycache__/
+*.pyc
diff --git a/.pre-commit-config.yaml b/.pre-commit-config.yaml
new file mode 100644
index 00000000..87dcde07
--- /dev/null
+++ b/.pre-commit-config.yaml
@@ -0,0 +1,9 @@
+# See https://pre-commit.com for more information
+# See https://pre-commit.com/hooks.html for more hooks
+repos:
+ - repo: https://github.com/pre-commit/pre-commit-hooks
+ rev: v4.2.0
+ hooks:
+ - id: end-of-file-fixer
+ - id: mixed-line-ending
+ args: [--fix=lf]
diff --git a/CNAME b/CNAME
deleted file mode 100644
index aafb3256..00000000
--- a/CNAME
+++ /dev/null
@@ -1 +0,0 @@
-kiwitcms.org
\ No newline at end of file
diff --git a/Makefile b/Makefile
new file mode 100644
index 00000000..fa8a6ad2
--- /dev/null
+++ b/Makefile
@@ -0,0 +1,124 @@
+PY?=python3
+PELICAN?=pelican
+PELICANOPTS=
+
+BASEDIR=$(CURDIR)
+INPUTDIR=$(BASEDIR)/content
+OUTPUTDIR=$(BASEDIR)/output
+CONFFILE=$(BASEDIR)/pelicanconf.py
+PUBLISHCONF=$(BASEDIR)/publishconf.py
+
+FTP_HOST=localhost
+FTP_USER=anonymous
+FTP_TARGET_DIR=/
+
+SSH_HOST=localhost
+SSH_PORT=22
+SSH_USER=root
+SSH_TARGET_DIR=/var/www
+
+S3_BUCKET=my_s3_bucket
+
+CLOUDFILES_USERNAME=my_rackspace_username
+CLOUDFILES_API_KEY=my_rackspace_api_key
+CLOUDFILES_CONTAINER=my_cloudfiles_container
+
+DROPBOX_DIR=~/Dropbox/Public/
+
+GITHUB_PAGES_BRANCH=master
+
+DEBUG ?= 0
+ifeq ($(DEBUG), 1)
+ PELICANOPTS += -D
+endif
+
+RELATIVE ?= 0
+ifeq ($(RELATIVE), 1)
+ PELICANOPTS += --relative-urls
+endif
+
+help:
+ @echo 'Makefile for a pelican Web site '
+ @echo ' '
+ @echo 'Usage: '
+ @echo ' make html (re)generate the web site '
+ @echo ' make clean remove the generated files '
+ @echo ' make regenerate regenerate files upon modification '
+ @echo ' make publish generate using production settings '
+ @echo ' make serve [PORT=8000] serve site at http://localhost:8000'
+ @echo ' make serve-global [SERVER=0.0.0.0] serve (as root) to $(SERVER):80 '
+ @echo ' make devserver [PORT=8000] start/restart develop_server.sh '
+ @echo ' make stopserver stop local server '
+ @echo ' make ssh_upload upload the web site via SSH '
+ @echo ' make rsync_upload upload the web site via rsync+ssh '
+ @echo ' make dropbox_upload upload the web site via Dropbox '
+ @echo ' make ftp_upload upload the web site via FTP '
+ @echo ' make s3_upload upload the web site via S3 '
+ @echo ' make cf_upload upload the web site via Cloud Files'
+ @echo ' make github upload the web site via gh-pages '
+ @echo ' '
+ @echo 'Set the DEBUG variable to 1 to enable debugging, e.g. make DEBUG=1 html '
+ @echo 'Set the RELATIVE variable to 1 to enable relative urls '
+ @echo ' '
+
+html:
+ $(PELICAN) $(INPUTDIR) -o $(OUTPUTDIR) -s $(CONFFILE) $(PELICANOPTS)
+
+clean:
+ [ ! -d $(OUTPUTDIR) ] || rm -rf $(OUTPUTDIR)
+
+regenerate:
+ $(PELICAN) -r $(INPUTDIR) -o $(OUTPUTDIR) -s $(CONFFILE) $(PELICANOPTS)
+
+serve:
+ifdef PORT
+ cd $(OUTPUTDIR) && $(PY) -m pelican.server $(PORT)
+else
+ cd $(OUTPUTDIR) && $(PY) -m pelican.server
+endif
+
+serve-global:
+ifdef SERVER
+ cd $(OUTPUTDIR) && $(PY) -m pelican.server 80 $(SERVER)
+else
+ cd $(OUTPUTDIR) && $(PY) -m pelican.server 80 0.0.0.0
+endif
+
+
+devserver:
+ifdef PORT
+ $(BASEDIR)/develop_server.sh restart $(PORT)
+else
+ $(BASEDIR)/develop_server.sh restart
+endif
+
+stopserver:
+ $(BASEDIR)/develop_server.sh stop
+ @echo 'Stopped Pelican and SimpleHTTPServer processes running in background.'
+
+publish:
+ $(PELICAN) $(INPUTDIR) -o $(OUTPUTDIR) -s $(PUBLISHCONF) $(PELICANOPTS)
+
+ssh_upload: publish
+ scp -P $(SSH_PORT) -r $(OUTPUTDIR)/* $(SSH_USER)@$(SSH_HOST):$(SSH_TARGET_DIR)
+
+rsync_upload: publish
+ rsync -e "ssh -p $(SSH_PORT)" -P -rvzc --delete $(OUTPUTDIR)/ $(SSH_USER)@$(SSH_HOST):$(SSH_TARGET_DIR) --cvs-exclude
+
+dropbox_upload: publish
+ cp -r $(OUTPUTDIR)/* $(DROPBOX_DIR)
+
+ftp_upload: publish
+ lftp ftp://$(FTP_USER)@$(FTP_HOST) -e "mirror -R $(OUTPUTDIR) $(FTP_TARGET_DIR) ; quit"
+
+s3_upload: publish
+ s3cmd sync $(OUTPUTDIR)/ s3://$(S3_BUCKET) --acl-public --delete-removed --guess-mime-type --no-mime-magic --no-preserve
+
+cf_upload: publish
+ cd $(OUTPUTDIR) && swift -v -A https://auth.api.rackspacecloud.com/v1.0 -U $(CLOUDFILES_USERNAME) -K $(CLOUDFILES_API_KEY) upload -c $(CLOUDFILES_CONTAINER) .
+
+github: publish
+ ghp-import -m "Generate Pelican site" -b $(GITHUB_PAGES_BRANCH) $(OUTPUTDIR)
+ git push origin $(GITHUB_PAGES_BRANCH)
+
+.PHONY: html help clean regenerate serve serve-global devserver stopserver publish ssh_upload rsync_upload dropbox_upload ftp_upload s3_upload cf_upload github
diff --git a/content/2017-11-03-testing-testing.markdown b/content/2017-11-03-testing-testing.markdown
new file mode 100644
index 00000000..c660532b
--- /dev/null
+++ b/content/2017-11-03-testing-testing.markdown
@@ -0,0 +1,18 @@
+Title: Testing, testing. It works!
+date: 2017-11-03 11:15
+comments: true
+
+Welcome to the official website and blog of Kiwi TCMS.
+We are happy to finally be online!
+
+This website was built with the help of
+[Kaloyan Krastev](https://github.com/koksyncho),
+[Tsvetoslav Garkov](https://github.com/FreshyMc) and
+[Ivaylo Ivanov](https://github.com/ivo0126)
+who will be joining the project a bit later as well.
+
+In this blog you can expect various news and progress reports around the project,
+announcement of new releases and future plans. We would love to hear your
+feedback so please use the comments form below.
+
+Happy testing!
diff --git a/content/2017-11-28-version-3.48.markdown b/content/2017-11-28-version-3.48.markdown
new file mode 100644
index 00000000..d4b189e9
--- /dev/null
+++ b/content/2017-11-28-version-3.48.markdown
@@ -0,0 +1,80 @@
+Title: Kiwi TCMS version 3.48
+headline: API client and bug fixes
+date: 2017-11-28 22:00
+comments: true
+tags: releases
+
+We're proud to announce Kiwi TCMS version 3.48!
+This is the first release to be announced on our blog and it is also an
+important one!
+
+Kiwi TCMS 3.48 introduces new versions of Django and Patternfly,
+a Python API client library, many bug-fixes and updated documentation.
+
+
+Changes since KiwiTCMS 3.44
+---------------------------
+
+- Update to Django 1.11.7 (Mr. Senko)
+- Update documentation including high level information
+ about how data is organized within Kiwi TCMS and how to work
+ with the system. (Mr. Senko)
+- Stop caching report views. (Mr. Senko)
+- Make test execution comments optional. Fixes
+ [Issue #77](https://github.com/MrSenko/Kiwi/issues/77). (Mr. Senko)
+- Escape special symbols when exporting JSON.
+ Fixes [Issue #78](https://github.com/MrSenko/Kiwi/issues/78). (Mr. Senko)
+- Remove Test Run export to XML functionality in favor of API.
+ Fixes [Issue #79](https://github.com/MrSenko/Kiwi/issues/79). (Mr. Senko)
+- Make it possible to search Test Runs via Env properties.
+ Fixes [Issue #82](https://github.com/MrSenko/Kiwi/issues/82). (Mr. Senko)
+- Display Environment properties in Test Run search results. (Mr. Senko)
+- Allow bulk update TestCase.default_tester via email.
+ Fixes [Issue #85](https://github.com/MrSenko/Kiwi/issues/85). (Mr. Senko)
+- Don't crash reports when there are untested TestCaseRuns.
+ Fixes [Issue #88](https://github.com/MrSenko/Kiwi/issues/88). (Mr. Senko)
+- Bind localhost:80 to container:80.
+ Fixes [Issue #99](https://github.com/MrSenko/Kiwi/issues/99). (Mr. Senko)
+- Enable testing with Python 3.6 in preparation for migration. (Mr. Senko)
+- If JIRA isn't fully configured then don't connect. Fixes
+ Fixes [Issue #100](https://github.com/MrSenko/Kiwi/issues/100). (Mr. Senko)
+- Pin patternfly version to 3.30 and update templates.
+ Fixes [Issue #120](https://github.com/MrSenko/Kiwi/issues/120). (Mr. Senko)
+- Show status name rather than status id in TestCaseRun change log. (Chenxiong Qi)
+- [api] Adds a Python API client with changes that make it possible to
+ execute on both Python 2 and Python 3. For now take a look at
+ `tcms_api/script_examples/` for examples how to use it.
+- [api] Remove experimental support for Teiid. (Mr. Senko)
+- [api] Cache level defaults to `CACHE_NONE` if not set. (Mr. Senko)
+- [api] Remove persistent cache, in-memory caching is still available. (Mr. Senko)
+- [api] Remove multicall support. (Mr. Senko)
+
+
+**IMPORTANT:** this release introduces new database migrations!
+
+
+*NOTE:* the API client has been initially developed as the *python-nitrate*
+project by Petr Splichal and other contributors! We've decided to fork their
+code base into Kiwi's repository and continue further development in a central
+place. This makes it easier testing the API server and client together and
+allows us to move more rapidly!
+
+As of now there isn't a lot of documentation
+and examples on how to use the API client but we are looking to improve this.
+Additional documentation and examples will be published in the project's
+repository or on this blog!
+
+
+
+How to upgrade
+---------------
+
+If you are using Kiwi TCMS as a Docker container then
+
+ cd Kiwi/
+ docker-compose down
+ make docker-image
+ docker-compose up -d
+ docker exec -it kiwi_web /Kiwi/manage.py migrate
+
+Happy testing!
diff --git a/content/2017-12-08-tcms-api.markdown b/content/2017-12-08-tcms-api.markdown
new file mode 100644
index 00000000..65cda16a
--- /dev/null
+++ b/content/2017-12-08-tcms-api.markdown
@@ -0,0 +1,37 @@
+Title: Kiwi TCMS Python API client
+headline: version 1.4.0
+date: 2017-12-08 15:20
+comments: true
+tags: releases
+
+We are happy to announce the first official release of the
+[tcms-api](https://pypi.org/project/tcms-api/) package!
+This is a Python client for Kiwi TCMS.
+
+There are couple of main distinctions in this module:
+
+* mutable vs. immutable types of objects
+* high-level class interface vs. low-level XML-RPC interface
+
+For more information you should check-out the documentation
+and the `script_examples/` directory.
+
+At the moment the API client is both Python2 and Python3 compatible,
+however it is tested only under Python3!
+
+A bit of history
+----------------
+
+The original API client, like Kiwi TCMS itself began its origin under a
+different name and was created primarily by Petr Splichal. Since then
+Kiwi TCMS has evolved and we've decided that the API module needs to evolve
+as well. At the moment the tcms-api module is a bit rough around the edges,
+its documentation is not really the best one and it's currently advisable
+to spend some time reading the code to figure out how everything works.
+
+We're going to improve on all of these areas and we need help from the community
+to do so! Please download the `tcms-api` module, check it out, write and contribute
+example scripts (you can use the demo site for this), send us bug reports, suggestions
+and pull requests!
+
+Happy testing!
diff --git a/content/2018-01-02-version-3.49.markdown b/content/2018-01-02-version-3.49.markdown
new file mode 100644
index 00000000..033922c4
--- /dev/null
+++ b/content/2018-01-02-version-3.49.markdown
@@ -0,0 +1,121 @@
+Title: Kiwi TCMS version 3.49
+headline: Django 2.0.1 and many XML-RPC updates
+date: 2018-01-02 15:30
+comments: true
+tags: releases
+
+Happy New Year to everyone. We're happy to announce Kiwi TCMS version 3.49
+and the corresponding tcms-api version 1.5.0! This release includes a fair
+amount of bug fixes and many changes related to Kiwi's RPC layer!
+
+Most importantly Kiwi is updated to Django 2.0.1, the API client no longer
+supports Python 2 and many RPC methods have been removed or updated.
+[https://public.tenant.kiwitcms.org](https://public.tenant.kiwitcms.org/login/github-app/)
+has also been updated so you can explore the new version.
+
+
+Changes since Kiwi TCMS 3.48
+---------------------------
+
+### Enhancements and bug fixes
+
+- Upgrade to Django 2.0.1
+- Don't log passwords sent via RPC
+- Log XML-RPC requests from anonymous users. Fixes
+ [Issue #126](https://github.com/kiwitcms/Kiwi/issues/126)
+- Order `TCMSEnvValue` records by property name and value. Fixes
+ [Issue #155](https://github.com/kiwitcms/Kiwi/issues/155)
+- flake8 fixes (Anton Sankov)
+- Start building source code documentation from Python doc strings
+- Properly urlencode emails in personal menu links
+- Remove test case import via XML files
+- Use django-attachments for user uploaded files. Fixes
+ [Issue #160](https://github.com/kiwitcms/Kiwi/issues/160)
+ As part of this change we no longer copy Plan and Case attachments when
+ cloning these objects.
+
+ NOTE: Since django-attachments introduces new permission objects
+ you will have to adjust default permissions for existing users!
+ In order for them to be able to upload/delete their own files they
+ need to have `attachments.add_attachment` and `atachments.delete_attachment`
+ permissions.
+
+ These same permissions are added by default to the 'Tester' group.
+ If you are running an existing installation registering a new user
+ with Kiwi TCMS will update the default permissions for this group!
+
+### Refactoring
+
+- Remove unused class EditCaseNotifyThread (Chenxiong Qi)
+- Remove model TestPlanActivity (Chenxiong Qi)
+- Remove many unused models and classes
+- Execute tests via `manage.py test` and drop py.test dependency
+- Remove useless `TestTag.string_to_list` method. Fixes
+ [Issue #106](https://github.com/kiwitcms/Kiwi/issues/106)
+- Use `settings.AUTH_USER_MODEL` in ForeignKey definitions. Fixes
+ [Issue #143](https://github.com/kiwitcms/Kiwi/issues/143)
+
+#### Settings
+
+- Rename `EMAIL_FROM` to `DEFAULT_FROM_EMAIL`. Fixes
+ [Issue #128](https://github.com/kiwitcms/Kiwi/issues/128)
+- Rename `FILE_UPLOAD_DIR` to `MEDIA_ROOT`
+- Rename `MAX_UPLOAD_SIZE` to `FILE_UPLOAD_MAX_SIZE`
+- New setting `DELETE_ATTACHMENTS_FROM_DISK`
+- Remove unused `XMLRPC_TEMPLATE` and `TESTOPIA_XML_VERSION`
+
+### Server side API
+
+- Migrate to `django-modern-rpc` and remove home-grown XML-RPC handling code.
+ As part of this change the XML-RPC endpoint has been changed to `/xml-rpc/`.
+ There's also a new JSON-RPC endpoint at `/json-rpc/`!
+- `Auth.login` method now accepts positional parameters `username, password`
+ instead of dict
+- `TestCaseRun.get` method now accepts a query dict as parameter
+- `TestCaseRun.get_bugs` method now accepts a query dict as parameter
+- Remove `Build.lookup_id_by_name`, `Build.lookup_name_by_id` RPC methods
+- Remove `Product.lookup_name_by_id`, `Product.lookup_id_by_name` RPC methods
+- Remove `Product.get_components`, use `Product.filter_components` instead
+- Remove `Product.get_plans`, use `TestPlan.filter` instead
+- Remove `Product.get_runs`, use `TestRun.filter` instead
+- Remove `Product.get_tag`, use `Tag.get_tags` instead
+- Remove `Product.get_versions`, use `Product.filter_versions` instead
+- Remove `TestCaseRun.filter_count`, use `TestCaseRun.filter` instead
+- Remove `TestCaseRun.get_s`, use `TestCaseRun.get` instead
+- Remove `TestCaseRun.get_bugs_s`, use `TestCaseRun.get_bugs` instead
+- Remove `TestCaseRun.get_case_run_status`, use
+ `TestCaseRun.get_case_run_status_by_name` instead
+- Remove `TestCaseRun.get_completion_time`, `TestCaseRun.get_completion_time_s`
+ RPC methods. Instead calculate them on the client side
+- Rename `TestCaseRun.check_case_run_status` to `TestCaseRun.get_case_run_status_by_name`
+- `TestCaseRun.detach_log` will not raise exceptions when deleting logs from
+ non-existing TestCaseRun objects.
+- Remove `User.get_me`, instead use `User.get` without parameters
+- Remove `Version.` and `Testopia.` RPC modules
+- Update documentation for RPC methods in `Auth`, `Build` and `Env` namespaces.
+ Unformatted documentation is also available for the rest of the RPC methods
+
+tcms-api changes since 1.4.0
+----------------------------
+
+- Update endpoint configuration, compatible with Kiwi TCMS 3.49
+- Drop support for Python 2
+- Remove the internal `do_command` method which eliminates use of `eval()`
+- Remove `TCMSXmlrpc.get_me()` and `TCMSXmlrpc.build_get()` methods
+
+
+**IMPORTANT:** this release introduces new database migrations!
+
+
+How to upgrade
+---------------
+
+If you are using Kiwi TCMS as a Docker container then
+
+ cd Kiwi/
+ docker-compose down
+ make docker-image
+ docker-compose up -d
+ docker exec -it kiwi_web /Kiwi/manage.py migrate
+
+Happy testing!
diff --git a/content/2018-01-22-milestones.markdown b/content/2018-01-22-milestones.markdown
new file mode 100644
index 00000000..2ac6c3a5
--- /dev/null
+++ b/content/2018-01-22-milestones.markdown
@@ -0,0 +1,165 @@
+Title: Kiwi TCMS roadmap for 2018
+Headline: cleaner code, improved UI/UX and more tests
+date: 2018-01-22 12:10
+comments: true
+og_image: images/roadmap.jpg
+twitter_image: images/roadmap.jpg
+tags: community, roadmap
+
+Hello everyone. As you know Kiwi TCMS has been around for a while and it has
+gone through some big changes in the last year! It started as an abandoned
+Django 1.6 project with broken test suite and is now currently running on the
+latest Django 2.0.1 with Python 3.5! It is clearly a legacy code base!
+
+We, the Kiwi TCMS team, have learned a lot more about the project and this
+blog post describes our roadmap for 2018 in terms of technical work and community
+engagement. The general technical direction is cleaner/simpler code,
+improved UI/UX and more tests!
+
+
+Make code easier to maintain
+----------------------------
+
+The current code is a bunch of very large modules and functions and classes
+bundled together. It is also old and sometimes looks like spaghetti code.
+[CodeClimate](https://codeclimate.com/github/kiwitcms/Kiwi) gives us a "D" rating
+for maintainability with a 1 year estimated effort to fix that. There are 600+
+code smells and 600+ duplications detected by CodeClimate. Our goal is to get this
+number down to zero!
+
+
+Use pylint and pylint-django
+----------------------------
+
+pylint is the standard static analyzer for Python and currently it reports over
+4000 errors and warnings when executed against Kiwi TCMS. This is a huge number and
+it needs to become zero! We've also identified interesting patterns that will
+make it into pylint and pylint-django plugins!
+
+
+Render HTML, return JSON
+------------------------
+
+The current state of affairs is a mix and match of everything. There are views that
+render HTML, others which return pure JSON, other which return HTML encoded as JSON string
+and probably everything in between. Views that render pages need to do just that
+and views that are used with AJAX calls from the UI need to return pure JSON!
+A lot of these are hiding in plain sight and will come to light when we start
+overhauling the user interface.
+
+
+Submit forms, post JSON, GET clean URLs
+---------------------------------------
+
+There are lots of forms in Kiwi TCMS. Sometimes they are submitted by the user and
+other times they are serialized and POSTed by some JavaScript code. This isn't
+very easy to understand plus this entire home-grown utility code doesn't bring
+anything useful to the project. All of these need to be identified and cleaned up.
+JavaScript code needs to send or consume JSON, nothing else!
+
+There are also lots of places where Kiwi issues GET requests with a number of
+query parameters. Our goal is to minimize these and where possible have the
+parameters as part of the Django urls scheme, not as query strings.
+
+
+API layer
+---------
+
+The current API module is a bit disorganized. API namespaces don't match the
+names of the underlying DB models and the API client classes don't match any
+of the other two! The way we pass parameters and what these parameters are
+named should match between the client, the RPC method and the underlying model!
+
+In earlier releases we've removed duplicate or similar RPC methods and we
+think there are more of these that need our love.
+
+
+Documentation
+-------------
+
+We've started producing documentation from doc-strings and most of the RPC
+methods have such. However it is unformatted and barely readable, sometimes
+even inaccurate. Previous releases made progress on this but there's a lot
+more to cover.
+
+All RPC methods should be documented first and then the rest of Kiwi's
+internals to make development easier!
+
+
+No vendored JavaScript libraries
+--------------------------------
+
+There are 11 vendored-in JavaScript files that we carry around in Kiwi TCMS.
+Most notable are jQuery plus a few addons and Handlebars.js. To the extent possible
+our goal is to use jQuery provided by Django or installed via NPM dependencies!
+
+
+Less HTML templates with better organization
+--------------------------------------------
+
+There are over 100 HTML templates in Kiwi TCMS. There are also email and even
+JavaScript templates. For example there are `get_cases.html` and `get_review_cases.html`
+which are essentially the same. This is kind of also true for templates used in
+new and edit views! Such templates should be unified!
+
+Those JavaScript templates need to be totally gone!
+
+All templates are stuffed together in a single directory and their names
+are not very predictable. They need to be split per application and follow
+some kind of naming convention.
+
+
+Modern interface with Patternfly
+--------------------------------
+
+The UI already uses the Patternfly library for some of its widgets. Most notably
+the main navigation header. Our goal is for the entire UI to be ported to Patternfly
+by updating widgets HTML and CSS where needed.
+This will also help clean things up a lot. At the same time we'll be rethinking how
+information is organized on screen and how the person interacts with it! Usability
+suggestions are very welcome!
+
+This move will also help us get rid of the Handlebars dependency which is now
+used for pop-up dialogs.
+
+
+JavaScript updates and front-end testing
+----------------------------------------
+
+There's lots of JavaScript code on the front-end and honestly we don't quite know
+what it does or how it is organized. There are also no tests on the front-end
+whatsoever!
+
+It is our goal for this to change with the intention to not overdo the JavaScript
+part and keep things very minimal. At the moment we're thinking about vanilla jQuery
+that will act as a proxy between the browser and the back-end!
+
+
+Community efforts
+------------------
+
+A year ago hardly anybody knew what Kiwi TCMS was, the project didn't even have
+this name, there was 1 active contributor and hardly any users! Now the community
+has started to slowly revitalize, we're seeing some contributions from our
+junior team members (more on this in another blog post) and also seeing
+folks installing and using Kiwi TCMS and reporting interesting bugs and feature
+requests around it!
+
+For the upcoming year our goal is to seek active engagement with other open source
+projects that could make use of Kiwi TCMS and work with them. Kudos to
+openSUSE for being the first
+[to propose such integration](https://github.com/openSUSE/mentoring/issues/95)!
+We're also planning couple of appearances at a few conferences but there's
+nothing confirmed yet.
+
+Every other contribution in terms of bug reports, new users and feature requests
+is of course welcome but we're very conscious of the fact that there's tons
+of work to be done and the team is still very small!
+
+
+Team wise we'd like to get the existing team members up to speed and tackle
+the above tasks with priority. This will also help us introduce bug fixes
+and new features more quickly!
+
+
+Happy testing!
diff --git a/content/2018-01-25-version-3.50.markdown b/content/2018-01-25-version-3.50.markdown
new file mode 100644
index 00000000..c448fbc2
--- /dev/null
+++ b/content/2018-01-25-version-3.50.markdown
@@ -0,0 +1,71 @@
+Title: Kiwi TCMS version 3.50
+headline: and tcms-api version 1.5.1
+date: 2018-01-25 11:30
+comments: true
+tags: releases
+
+We're happy to announce Kiwi TCMS version 3.50
+and the corresponding tcms-api version 1.5.1! This is a bug-fix and
+enhancement release and we advise you to upgrade as soon as possible!
+
+
+Changes since Kiwi TCMS 3.49
+----------------------------
+
+### Enhancements and bug fixes
+
+
+- Update documentation for XML-RPC and positional arguments, translations,
+ environment groups
+- Enable translations. Fixes
+ [Issue #129](https://github.com/kiwitcms/Kiwi/issues/129)
+- Register models for DB translations. Fixes
+ [Issue #182](https://github.com/kiwitcms/Kiwi/issues/182)
+- New German translations (@xbln)
+- Require django-attachments>=1.3 and restore attachments count in tabs
+- Fix missing tag names in TestPlan page
+- Hide admin forms for some models not supposed to be edited by users. Fixes
+ [Issue #174](https://github.com/kiwitcms/Kiwi/issues/174)
+- Use django-grappelli for the admin templates: modern look and feel and
+ less template files overridden by Kiwi TCMS
+- Load values for default property in TestRun 'Add Property' dialog. Fixes
+ [Issue #142](https://github.com/kiwitcms/Kiwi/issues/142)
+- Correctly find property ID when renaming environment properties. Fixes
+ [Issue #167](https://github.com/kiwitcms/Kiwi/issues/167)
+- Convert request body to string. Fixes
+ [Issue #177](https://github.com/kiwitcms/Kiwi/issues/177)
+
+### Refactoring
+
+- Remove batch tag Add/Remove sub-menu in TestPlan view (Anton Sankov)
+- Remove Edit tag button in Tag tab (Anton Sankov)
+- Remove template functions. Fixes
+ [Issue #107](https://github.com/kiwitcms/Kiwi/issues/107)
+- Remove custom HttpJSONResponse classes
+- Remove unused and duplicate code
+
+
+tcms-api changes since 1.5.0
+----------------------------
+
+
+- Fix order of TestCaseRun statuses. Fixes
+ [Issue #184](https://github.com/kiwitcms/Kiwi/issues/184)
+
+
+
+**IMPORTANT:** this release introduces new database migrations!
+
+
+How to upgrade
+---------------
+
+If you are using Kiwi TCMS as a Docker container then
+
+ cd Kiwi/
+ docker-compose down
+ make docker-image
+ docker-compose up -d
+ docker exec -it kiwi_web /Kiwi/manage.py migrate
+
+Happy testing!
diff --git a/content/2018-02-10-version-4.0.0.markdown b/content/2018-02-10-version-4.0.0.markdown
new file mode 100644
index 00000000..76c2b20e
--- /dev/null
+++ b/content/2018-02-10-version-4.0.0.markdown
@@ -0,0 +1,207 @@
+Title: Kiwi TCMS & tcms-api version 4.0.0
+headline: updated XML-RPC interface and API client
+date: 2018-02-10 15:30
+comments: true
+og_image: images/kiwi_v400.jpg
+twitter_image: images/kiwi_v400.jpg
+tags: releases
+
+We're happy to announce Kiwi TCMS version 4.0.0
+and the corresponding tcms-api version 4.0.0! This is a very big release
+which introduces tons of backwards incompatible changes to the RPC layer
+as well as several bug-fixes and enhancements!
+
+With this release Kiwi TCMS meets one of our
+[milestones for 2018]({filename}2018-01-22-milestones.markdown)! All XML-RPC
+namespaces now match DB model names and the API client class names. Lots of
+similar and duplicate methods were removed and existing ones were simplified.
+We've also reduced code duplication and technical debth by 1 month
+according to stats by [CodeClimate](https://codeclimate.com/github/kiwitcms/Kiwi).
+
+**IMPORTANT:** this is also the first release to officially publish the
+`pub.kiwitcms.eu/kiwitcms/kiwi` container image!
+
+**WARNING:** upgrading to Kiwi TCMS 4.0.0 means you will have to upgrade
+the tcms-api client as well. None of the 4.x releases is compatible with
+older releases due to the massive ammount of changes in the RPC layer.
+
+
+Changes since Kiwi TCMS 3.50
+----------------------------
+
+### Enhancements and bug fixes
+
+- Upgrade to Django 2.0.2 which patches a security issue
+- Pin JIRA client version to 1.0.10. Fixes
+ [Issue #195](https://github.com/kiwitcms/Kiwi/issues/195)
+- Generate api-docs for model classes
+- Updated documentation for all RPC methods
+- Use Grappelli jQuery initialization, fixes popup windows
+- Unify RPC namespaces, API client class names and server-side model names.
+ Fixes [Issue #153](https://github.com/kiwitcms/Kiwi/issues/153)
+
+### Settings
+
+- Remove `ADMIN_PREFIX` setting
+
+### RPC methods refactoring
+
+- Remove `Build.check_build`, use `Build.filter`
+- Remove `Build.get`, use `Build.filter`
+- Remove `Build.get_caseruns`, use `TestCaseRun.filter`
+- Remove `Build.get_runs`, use `TestRun.filter`
+
+- Rename `Env.filter_groups`, use `Env.Group.filter`
+- Rename `Env.filter_properties`, use `Env.Property.filter`
+- Rename `Env.filter_values`, use `Env.Value.filter`
+
+- Remove `Product.add_component`, use `Component.create`
+- Remove `Product.add_version`, use `Version.create`
+- Remove `Product.check_category`, use `Category.filter`
+- Remove `Product.check_component`, use `Component.filter`
+- Remove `Product.check_product`, use `Product.filter`
+- Remove `Product.filter_categories`, use `Category.filter`
+- Remove `Product.filter_components`, use `Component.filter`
+- Remove `Product.filter_versions`, use `Version.filter`
+- Remove `Product.get`, use `Product.filter`
+- Remove `Product.get_builds`, use `Build.filter`
+- Remove `Product.get_cases`, use `TestCase.filter`
+- Remove `Product.get_categories`, use `Category.filter`
+- Remove `Product.get_category`, use `Category.filter`
+- Remove `Product.get_component`, use `Component.filter`
+- Remove `Product.update_component`, use `Component.update`
+
+- Rename `Tag.get_tags` to `Tag.filter`
+
+- Remove `TestCase.add_comment`
+- Update signature for `TestCase.add_component`
+- Update signature for `TestCase.add_tag`
+- Remove `TestCase.add_to_run`, use `TestRun.add_case`
+- Remove `TestCase.attach_bug`, use `Bug.create`
+- Remove `TestCase.calculate_average_estimated_time`
+- Remove `TestCase.calculate_total_estimated_time`
+- Remove `TestCase.check_case_status`, use `TestCaseStatus.filter`
+- Remove `TestCase.check_priority`, use `Priority.filter`
+- Update signature for `TestCase.create`, no longer accepts `plan`,
+ `component` and `bug` dict attributes. Instead use
+ `TestPlan.add_case`, `TestCase.add_component` and `Bug.create`
+- Remove `TestCase.detach_bug`, use `Bug.remove`
+- Remove `TestCase.filter_count`
+- Remove `TestCase.get`, use `TestCase.filter`
+- Remove `TestCase.get_bugs`, use `Bug.filter({'case': ?})`
+- Remove `TestCase.get_bug_systems`
+- Remove `TestCase.get_case_status`, use `TestCaseStatus.filter`
+- Update signature for `TestCase.get_components`
+- Remove `TestCase.get_plans`, use `TestPlan.filter({'case': ?})`
+- Remove `TestCase.get_priority`, use `Priority.filter`
+- Remove `TestCase.get_tags`, use `Tag.filter({'case': ?})`
+- Remove `TestCase.get_text`, use `TestCase.filter`
+- Remove `TestCase.link_plan`, use `TestPlan.add_case`
+- Rename `TestCase.notification_add_cc` to `TestCase.add_notification_cc`
+ and update signature
+- Rename `TestCase.notification_get_cc_list` to `TestCase.get_notification_cc`
+ and update signature
+- Rename `TestCase.notification_remove_cc` to `TestCase.remove_notification_cc`
+ and update signature
+- Update signature for `TestCase.remove_component`
+- Update signature for `TestCase.remove_tag`
+- Remove `TestCase.store_text`, use `TestCase.update` with
+ `setup`, `breakdown`, `action` and `effect` attributes in the parameter dict
+- Remove `TestCase.unlink_plan`, use `TestPlan.remove_case`
+
+- Remove `TestCasePlan.get`
+- Remove `TestCasePlan.update`
+
+- Update `TestCaseRun.add_comment` to accept a single ID as first parameter
+- Remove `TestCaseRun.attach_bug`, use `Bug.create`
+- Rename `TestCaseRun.attach_log` to `TestCaseRun.add_log`
+- Remove `TestCaseRun.detach_bug`, use `Bug.remove`
+- Rename `TestCaseRun.detach_log` to `TestCaseRun.remove_log`
+- Remove `TestCaseRun.get`, use `TestCaseRun.filter`
+- Remove `TestCaseRun.get_bugs`, use `Bug.filter({'case_run': ?})`
+- Remove `TestCaseRun.get_case_run_status_by_name`
+- Update signature for `TestCaseRun.update`
+
+- Remove `TestPlan.add_component`
+- Update signature for `TestPlan.add_tag`
+- Remove `TestPlan.check_plan_type`, use `PlanType.filter`
+- Remove `TestPlan.filter_count`
+- Remove `TestPlan.get`, use `TestPlan.filter`
+- Remove `TestPlan.get_all_cases_tags`
+- Remove `TestPlan.get_components`
+- Remove `TestPlan.get_env_groups`, use `Env.Group.filter({'testplan': ?})`
+- Remove `TestPlan.get_plan_type`, use `PlanType.filter`
+- Remove `TestPlan.get_product`, use `Product.filter({'plan': ?})`
+- Remove `TestPlan.get_tags`, use `Tag.filter({'plan': ?})`
+- Remove `TestPlan.get_test_cases`, use `TestCase.filter({'plan': ?})`
+- Remove `TestPlan.get_test_runs`, use `TestRun.filter({'plan': ?})`
+- Remove `TestPlan.get_text`, use `TestPlan.filter`
+- Rename `TestPlan.link_env_value` to `TestPlan.add_env_value`
+ and update signature
+- Remove `TestPlan.remove_component`
+- Update signature for `TestPlan.remove_tag`
+- Remove `TestPlan.store_text`, use `TestPlan.update` with
+ a `text` attribute in the parameter values
+- Rename `TestPlan.unlink_env_value` to `TestPlan.remove_env_value`
+ and update signature
+
+- Rename `TestRun.add_cases` to `TestRun.add_case` and update signature
+- Update signature for `TestRun.add_tag`
+- Update signature for `TestRun.create`, no longer accepts `case`
+ dict attribute. Instead use `TestRun.add_case`
+- Remove `TestRun.filter_count`
+- Remove `TestRun.get`, use `TestRun.filter`
+- Remove `TestRun.get_bugs`
+- Remove `TestRun.get_env_values`, use `Env.Value.filter({'testrun': ?})`
+- Remove `TestRun.get_tags`, use `Tag.filter({'run': ?})`
+- Rename `TestRun.get_test_cases` to `TestRun.get_cases`
+- Remove `TestRun.get_test_case_runs`, use `TestCaseRun.filter({'run': ?})`
+- Remove `TestRun.get_test_plan`, use `TestPlan.filter({'run': ?})[0]`
+- Rename `TestRun.remove_cases` to `TestRun.remove_case` and update signature
+- Update signature for `TestRun.remove_tag`
+- Update signature for `TestRun.update`
+
+- Rename `User.get` to `User.filter`
+- Rename `User.join` to `User.join_group`
+- Update signature for `User.update`
+
+
+### Models and database migrations
+
+- Remove model `TestEnvironment`
+- Remove model `TestEnvironmentCategory`
+- Remove model `TestEnvironmentElement`
+- Remove model `TestEnvironmentMap`
+- Remove model `TestEnvironmentProperty`
+- Remove model `TestPlanComponent`
+- Remove `TestPlan.get_text_with_version()`
+- Remove `TestRun.get_previous_or_next()`
+
+**IMPORTANT:** this release introduces new database migrations!
+
+
+tcms-api changes since 1.5.1
+----------------------------
+
+- **Make the code compatible with Kiwi TCMS XML-RPC v4.0.0**
+- Rename `Status` to `TestCaseRunStatus`
+- Rename `CaseRun` to `TestCaseRun`
+- Remove `PlanStatus`, use `TestPlan.is_active`
+- Remove `RunStatus`, use `TestRun.finished`
+- Remove `TestPlan.components` container
+- Update signature for `TestPlan`. Now accept `text` kwarg in constructor
+ instead of `document`.
+
+
+How to upgrade
+---------------
+
+If you are using Kiwi TCMS as a Docker container then
+
+ cd Kiwi/
+ docker-compose down
+ docker pull pub.kiwitcms.eu/kiwitcms/kiwi
+ docker-compose up -d
+ docker exec -it kiwi_web /Kiwi/manage.py migrate
+
+Happy testing!
diff --git a/content/2018-02-21-version-4.1.markdown b/content/2018-02-21-version-4.1.markdown
new file mode 100644
index 00000000..98bf84c8
--- /dev/null
+++ b/content/2018-02-21-version-4.1.markdown
@@ -0,0 +1,80 @@
+Title: Kiwi TCMS 4.1.0
+headline: bug-fix and enhancement update
+date: 2018-02-21 22:45
+comments: true
+tags: releases
+
+We're happy to announce Kiwi TCMS version 4.1.0!
+This is a bug-fix and enhancement update centered around providing more
+flexibility for administrators to configure the user approval process.
+Refer to the documentation for more information about
+[signals handling](http://kiwitcms.readthedocs.io/en/latest/modules/tcms.signals.html)
+in Kiwi TCMS.
+
+
+Changes since Kiwi TCMS 4.0.0
+------------------------------
+
+### Enhancements and bug fixes
+
+- Add tests for `tcms.core.ajax.tag` (Anton Sankov)
+- Remove unused code from `tcms.core.ajax.tag` (Anton Sankov)
+- Refactor `tcms.core.ajax.tag` to work with only one object. Fixes
+ [Issue #135](https://github.com/kiwitcms/Kiwi/issues/135) (Anton Sankov)
+- Add test for tcms_api.TestRun. Closes
+ [Issue #194](https://github.com/kiwitcms/Kiwi/issues/194)
+- Send the `user_registered` signal when new users are registered
+- Add signal handler to notify admins on new users. Fixes
+ [Issue #205](https://github.com/kiwitcms/Kiwi/issues/205)
+- Add `is_superuser` column to User admin. Fixes
+ [Issue #206](https://github.com/kiwitcms/Kiwi/issues/206)
+- Properly pass variables to blocktrans tag. Fixes
+ [Issue #225](https://github.com/kiwitcms/Kiwi/issues/225)
+- Minor documentation updates
+
+### Refactoring
+
+- Remove double thread when sending email on `post_save` signal
+- Remove unused `EmailBackend` authentication backend
+- Remove unused `tcms.core.models.signals` module
+- Consolidate all signals and handlers in `tcms.signals`
+- Make use of `django_messages` during account registration
+
+### Settings
+
+- Remove `LISTENING_MODEL_SIGNAL` (internal setting)
+- New setting `AUTO_APPROVE_NEW_USERS`. Fixes
+ [Issue #203](https://github.com/kiwitcms/Kiwi/issues/203)
+
+
+### Models and database migrations
+
+- Remove unused fields from `Product` model:
+ `disallow_new`, `max_vote_super_bug`, `vote_super_user`,
+ `field votes_to_confirm`, `default_milestone`, `milestone_url`
+- Remove unused `Milestone` model
+
+
+**IMPORTANT:** this release introduces new database migrations!
+
+### Translations
+
+There are new translatable strings introduced with this release,
+including translations of a few email templates! At this moment
+translating Kiwi TCMS in languages other than English is purely a
+community effort. If you'd like to help consult our
+[translations contribution page](http://kiwitcms.readthedocs.io/en/latest/contribution.html#translation).
+
+
+How to upgrade
+---------------
+
+If you are using Kiwi TCMS as a Docker container then
+
+ cd Kiwi/
+ docker-compose down
+ docker pull pub.kiwitcms.eu/kiwitcms/kiwi
+ docker-compose up -d
+ docker exec -it kiwi_web /Kiwi/manage.py migrate
+
+Happy testing!
diff --git a/content/2018-03-16-version-4.1.3.markdown b/content/2018-03-16-version-4.1.3.markdown
new file mode 100644
index 00000000..75309032
--- /dev/null
+++ b/content/2018-03-16-version-4.1.3.markdown
@@ -0,0 +1,126 @@
+Title: Kiwi TCMS 4.1.3
+headline: Django 2.0.3, bug-fix and enhancement update
+date: 2018-03-16 10:45
+comments: true
+tags: releases
+
+We're happy to announce Kiwi TCMS version 4.1.3!
+This is a bug-fix and enhancement update which upgrades to the latest Django
+version, provides easier way for Docker administrators to override SSL certificates
+and access httpd log files and resolves several issues. This release also includes
+lots of internal code refactoring which removes code duplication and brings down
+[CodeClimate](https://codeclimate.com/github/kiwitcms/Kiwi) metrics
+to 26.9% of technical debt or 10 months to fix.
+
+We've pushed the new `pub.kiwitcms.eu/kiwitcms/kiwi` container image and updated the
+demo instance at
+[https://public.tenant.kiwitcms.org](https://public.tenant.kiwitcms.org/login/github-app/).
+Starting forward the demo will use
+the `info-at-kiwitcms.org` email address for all communication sent. There are real
+people behind this address so if you write to us we will reply!
+
+
+Changes since Kiwi TCMS 4.1.0
+------------------------------
+
+### Enhancements
+
+- Upgrade to [Django 2.0.3](https://docs.djangoproject.com/en/2.0/releases/2.0.3/)
+- Show `date_joined` column for user admin
+- Expose httpd logs to the host running docker. Fixes
+ [Issue #191](https://github.com/kiwitcms/Kiwi/issues/191)
+
+
+### Bug fixes
+
+- Move SSL keys under common directory in the container. Fixes
+ [Issue #231](https://github.com/kiwitcms/Kiwi/issues/231)
+- Always select active builds for TestRun. Fixes
+ [Issue #245](https://github.com/kiwitcms/Kiwi/issues/245)
+- Swap `escape` and `escapejs` filters. Fixes
+ [Issue #234](https://github.com/kiwitcms/Kiwi/issues/234)
+- Globally disable `delete_selected` action in Admin, this removes the
+ drop down selection widget! Fixes
+ [Issue #221](https://github.com/kiwitcms/Kiwi/issues/221)
+- Fix error in TestCase view when `from_plan` is empty string. Fixes
+ [Sentry KIWI-TCMS-Z](https://sentry.io/open-technologies-bulgaria-ltd/kiwi-tcms/issues/474369640/)
+- Fix sorting issue when None is compared to int. Fixes
+ [Sentry KIWI-TCMS-V](https://sentry.io/open-technologies-bulgaria-ltd/kiwi-tcms/issues/473996504/)
+- Validate form field as integer, not char. Fixes
+ [Sentry KIWI-TCMS-W](https://sentry.io/open-technologies-bulgaria-ltd/kiwi-tcms/issues/474058623/)
+- [docs] Remove information about importing test cases via XML. This functionality
+ was removed in version 3.49
+
+
+### Refactoring
+
+- Refactor inner class `CaseActions`. Fixes
+ [Issue #21](https://github.com/kiwitcms/Kiwi/issues/21) (Chenxiong Qi)
+- Only use `get_cases.html` template. Fixes
+ [Issue #176](https://github.com/kiwitcms/Kiwi/issues/176)
+- Unify `get_details_review.html` and `get_details.html` templates
+- Remove internal `Prompt.render` class and replace with Django messages
+- Remove `mail/delete_plan.txt` template
+- Remove `handle_emails_pre_plan_delete` signal handler
+- Remove the `Export` button from TestPlan view, use Case->Export sub-menu
+ item in the Cases tab. Also remove the export buttons from search and advanced
+ search result templates. If you'd like to export the cases from a given
+ plan you have to open it in a new browser window and use the menu
+- Remove the `Print` button from plan search form
+- Remove TestRun cloning from search results and plan details, use sub-menu
+- Remove unnecessary JavaScript handling for `EnvGroup` edit view
+
+
+### Settings
+
+- Remove `PLAN_DELELE_EMAIL_TEMPLATE` setting (not used)
+
+
+### Models and database migrations
+
+- Use Django's own `DurationField`, instead of custom one. Fixes
+ [Issue #183](https://github.com/kiwitcms/Kiwi/issues/183)
+
+API clients must now send values for `estimated_time` which must be in a
+format that `parse_duration()` understands, for example 'DD HH:MM:SS'! See
+
+
+
+**IMPORTANT:** this release introduces new database migrations!
+
+### Translations
+
+There are new translatable strings introduced with this release! At this moment
+translating Kiwi TCMS in languages other than English is purely a
+community effort. If you'd like to help consult our
+[translations contribution page](http://kiwitcms.readthedocs.io/en/latest/contribution.html#translation).
+
+
+How to upgrade
+---------------
+
+If you are using Kiwi TCMS as a Docker container then
+
+ cd Kiwi/
+ git pull
+ docker-compose down
+ docker pull pub.kiwitcms.eu/kiwitcms/kiwi
+ docker pull centos/mariadb
+ docker-compose up -d
+ docker exec -it kiwi_web /Kiwi/manage.py migrate
+
+
+Help us make Kiwi TCMS better
+-----------------------------
+
+According to [our 2018 roadmap]({filename}2018-01-22-milestones.markdown) the
+Kiwi TCMS team is investing a great deal of our time to make the code base more
+maintainable! For the past few releases we've been balancing code refactoring
+with bug-fixing and minor enhancements and we have lots of ideas down the line.
+
+We want to hear your voice! Tell us how you use Kiwi TCMS inside your organization.
+We want to know what works for you and what doesn't so we can make it better. Feel
+free to comment below, file GitHub issues or send us an email.
+
+
+Happy testing!
diff --git a/content/2018-04-10-version-4.1.4.markdown b/content/2018-04-10-version-4.1.4.markdown
new file mode 100644
index 00000000..c1a2635b
--- /dev/null
+++ b/content/2018-04-10-version-4.1.4.markdown
@@ -0,0 +1,99 @@
+Title: Kiwi TCMS 4.1.4
+headline: Django 2.0.4, bug-fix and enhancement update
+date: 2018-04-10 21:45
+comments: true
+tags: releases
+
+We're happy to announce Kiwi TCMS version 4.1.4!
+This is a bug-fix and enhancement update which upgrades to the latest Django
+version, resolves several issues and includes lots of internal code updates.
+
+We've pushed new `pub.kiwitcms.eu/kiwitcms/kiwi` container image and updated the
+demo instance at
+[https://public.tenant.kiwitcms.org](https://public.tenant.kiwitcms.org/login/github-app/)!
+
+
+Changes since Kiwi TCMS 4.1.3
+------------------------------
+
+### Enhancements
+
+- Upgrade to [Django 2.0.4](https://docs.djangoproject.com/en/2.0/releases/2.0.4/)
+- Enable pylint and fix around 700 issues (Anton Sankov)
+- Add pylint plugin to check docstrings for triple double quotes. Fixes
+ [Issue #296](https://github.com/kiwitcms/Kiwi/issues/296)
+- Add pylint plugin to check for list comprehensions. Fixes
+ [Issue #270](https://github.com/kiwitcms/Kiwi/issues/270)
+- Add pylint plugin to check for class attributes enclosed with double underscores.
+ These are dunders and are reserved for Python!
+
+
+### Signals
+
+**BREAKING CHANGES**:
+
+- Renamed `user_registered` to `USER_REGISTERED_SIGNAL` and
+ `post_update` to `POST_UPDATE_SIGNAL`!
+
+
+### Bug fixes
+
+- Change util function to default to https. Fixes
+ [Issue #220](https://github.com/kiwitcms/Kiwi/issues/220)
+- Fix
+ [Sentry KIWI-TCMS-17](https://sentry.io/open-technologies-bulgaria-ltd/kiwi-tcms/issues/495015101/)
+- Cast iterator to list. Fixes
+ [Sentry KIWI-TCMS-19](https://sentry.io/open-technologies-bulgaria-ltd/kiwi-tcms/issues/501200394/)
+- Don't crash in Custom Report. Fixes
+ [Sentry KIWI-TCMS-18](https://sentry.io/open-technologies-bulgaria-ltd/kiwi-tcms/issues/499389305/)
+- Better handling of TestPlan documents. Fixes
+ [Sentry KIWI-TCMS-1A](https://sentry.io/open-technologies-bulgaria-ltd/kiwi-tcms/issues/501695244/)
+- Fix sorting of entries in TestPlan -> Runs tab. Fixes
+ [Sentry KIWI-TCMS-E](https://sentry.io/open-technologies-bulgaria-ltd/kiwi-tcms/issues/472757670/)
+
+
+### Refactoring
+
+- Move Bugzilla and Kerberos backends code into their own repositories. Fixes
+ [Issue #239](https://github.com/kiwitcms/Kiwi/issues/239)
+- Remove cache from TestCaseRunStatus. Fixes
+ [Issue #279](https://github.com/kiwitcms/Kiwi/issues/279)
+- Rewrite `UrlMixin`. Fixes
+ [Issue #157](https://github.com/kiwitcms/Kiwi/issues/157) (Chenxiong Qi)
+- Remove unused `split_as_option` template tag
+- Internal refactoring and more tests in `tcms/core/ajax.py`
+- Delete unused file `tcms/core/forms/widgets.py`
+- Merge `case/form/filter.html` into `plan/get_cases.html`
+- Remove unused `TestCaseStatus.id_to_string()`
+
+
+
+
+How to upgrade
+---------------
+
+If you are using Kiwi TCMS as a Docker container then
+
+ cd Kiwi/
+ git pull
+ docker-compose down
+ docker pull pub.kiwitcms.eu/kiwitcms/kiwi
+ docker pull centos/mariadb
+ docker-compose up -d
+ docker exec -it kiwi_web /Kiwi/manage.py migrate
+
+
+Help us make Kiwi TCMS better
+-----------------------------
+
+According to [our 2018 roadmap]({filename}2018-01-22-milestones.markdown) the
+Kiwi TCMS team is investing a great deal of our time to make the code base more
+maintainable! For the past few releases we've been balancing code refactoring
+with bug-fixing and minor enhancements and we have lots of ideas down the line.
+
+We want to hear your voice! Tell us how you use Kiwi TCMS inside your organization.
+We want to know what works for you and what doesn't so we can make it better. Feel
+free to comment below, file GitHub issues or send us an email.
+
+
+Happy testing!
diff --git a/content/2018-04-11-summer-conferences.markdown b/content/2018-04-11-summer-conferences.markdown
new file mode 100644
index 00000000..1e4ee541
--- /dev/null
+++ b/content/2018-04-11-summer-conferences.markdown
@@ -0,0 +1,24 @@
+Title: Kiwi TCMS conference presence
+headline: Bulgaria Web Summit, OSCAL, DjangoCon Europe
+date: 2018-04-11 15:35
+comments: true
+og_image: images/roadtrip.png
+twitter_image: images/roadtrip.png
+tags: community, events
+
+Kiwi TCMS is going on a small conference tour. This is where you can find us
+in the next couple of months:
+
+* [Bulgaria Web Summit](http://bulgariawebsummit.com/) - 14 April, Sofia
+* [OSCAL](https://oscal.openlabs.cc/) - 19 & 20 May, Tirana
+* [DjangoCon Europe](https://2018.djangocon.eu/) - 23-27 May, Heidelberg
+
+For all of the 3 conferences we're going to have a project presence. In addition
+to that you can catch-up with Alex Todorov, Kiwi's project lead at:
+[TestCon Moscow](https://testconf.ru/)(17-19 April, Moscow),
+[Romanian Testing Conference](https://romaniatesting.ro/)(9-11 May, Cluj-Napoca),
+[PyCon CZ](https://cz.pycon.org/2018/)(1-3 June, Prague) and
+[DEVit](https://devitconf.org/)(10-11 June, Thessaloniki).
+
+If you can ping us at [@KiwiTCMS](https://twitter.com/KiwiTCMS) or look for the
+kiwi bird logo and come to say hi!
diff --git a/content/2018-06-24-version-4.2.markdown b/content/2018-06-24-version-4.2.markdown
new file mode 100644
index 00000000..e3704dd3
--- /dev/null
+++ b/content/2018-06-24-version-4.2.markdown
@@ -0,0 +1,155 @@
+Title: Kiwi TCMS 4.2
+headline: Python 3.6, Django 2.0.6 and security updates
+date: 2018-06-24 17:05
+comments: true
+tags: releases
+
+We're happy to announce Kiwi TCMS and tcms-api version 4.2!
+This is a security, bug-fix and enhancement update which upgrades to the latest
+Django version under Python 3.6.
+We've pushed new `pub.kiwitcms.eu/kiwitcms/kiwi` container image and updated the
+demo instance at [https://public.tenant.kiwitcms.org](https://public.tenant.kiwitcms.org/login/github-app/)!
+
+This version also includes GDPR related changes which affect our project. Read below
+for the details.
+
+
+Changes since Kiwi TCMS 4.1.4
+------------------------------
+
+**IMPORTANT:** this release introduces new database migrations
+
+### Security
+
+- Enable testing with Badit. Fixes
+ [Issue #237](https://github.com/kiwitcms/Kiwi/issues/237)
+- Enable testing with
+ [Coverity Scan](https://scan.coverity.com/projects/kiwitcms-kiwi)
+- Enable testing with
+ [pyup.io](https://pyup.io/repos/github/kiwitcms/Kiwi/)
+- Enable testing with
+ [Snyk](https://snyk.io/test/github/kiwitcms/Kiwi)
+- Use SHA256 instead of MD5 and SHA1
+- Use the `secrets` module for activation keys
+- Remove unnecessary AJAX view that had remote code execution vulnerability
+- Don't use hard-coded temporary directories
+- Upgrade to
+ [Patternfly 3.36.0](https://github.com/patternfly/patternfly/releases/tag/v3.36.0)
+ which fixes the following vulnerabilities:
+ -
+ -
+
+### Settings
+
+- `BUGZILLA_AUTH_CACHE_DIR` is a new setting that may be specified to control
+ where Bugzilla auth cookies are saved! It is not specified by default and
+ Kiwi TCMS uses a temporary directory each time we try to login into Bugzilla!
+
+### Enhancements
+
+- Upgrade to Python 3.6. Fixes
+ [Issue #91](https://github.com/kiwitcms/Kiwi/issues/91)
+- Upgrade to [Django 2.0.6](https://docs.djangoproject.com/en/2.0/releases/2.0.6/)
+- Fix around 100 pylint issues (Anton Sankov)
+- Update email confirmation template for newly registered users and make the
+ text translatable
+- Display `Last login` column in User admin page
+- Add tests for `tcms.management.views` (Anton Sankov)
+- Remove unused CSS selectors
+- Remove unnecessary `templates/comments/comments.html`
+
+### Bug fixes
+
+- Remove unused deferred field `product_version`. Fixes
+ [Sentry KIWI-TCMS-1C](https://sentry.io/open-technologies-bulgaria-ltd/kiwi-tcms/issues/523948048/)
+- Rename left-over `get_url()` to `get_full_url()`. Fixes
+ [Sentry KIWI-TCMS-1B](https://sentry.io/open-technologies-bulgaria-ltd/kiwi-tcms/issues/523855781/)
+- Fix empty TestPlan url and Product fields in TestRun email notification. Fixes
+ [Issue #353](https://github.com/kiwitcms/Kiwi/issues/353) (Matt Porter, Konsulko Group)
+
+
+### Translations
+
+- Updated translations for Chinese Simplified
+- Updated translations for Chinese Traditional
+- New language and translations for Slovenian
+
+### Documentation
+
+- Added `git clone` command to documentation. Fixes
+ [Issue #344](https://github.com/kiwitcms/Kiwi/issues/344) (Anton Sankov)
+
+### Models and database migrations
+
+- Increase checksum fields size to hold the new checksum values
+- Increase `activation_key` field size to 64 chars
+
+### GDPR related
+
+- Allow users to delete their accounts. Link is present on `My profile` page.
+ This will also delete any related objects using cascade delete
+- Try not to be so obvious when it comes to displaying email addresses across
+ the web interface. Instead show username and link to profile
+
+In addition the following changes were deployed to our infrastructure:
+
+- On our website the `Subscribe to our newsletter` is now a link, instead of
+ embedded form because embedded forms can't display GDPR compliance fields.
+ If you wish to receive email from Kiwi TCMS you need to select the `Email`
+ checkbox when signing up for the newsletter.
+- Double opt-in is now enabled when subscribing to our newsletter
+- All newsletter addresses that have been unsubscribed have been deleted
+- Upon registration for [https://public.tenant.kiwitcms.org](https://public.tenant.kiwitcms.org/login/github-app/)
+ you are no longer subscribed
+ to the newsletter. Now we send a welcome email with a link to the newsletter
+ so you can subscribe if you want
+- [https://public.tenant.kiwitcms.org](https://public.tenant.kiwitcms.org/login/github-app/)
+ now runs a cron job which deletes inactive accounts
+ and all of their related data. The cron job runs weekly
+
+
+We're trying to be respectful to your private data and not expose that to any
+3rd parties or use it for means other than making Kiwi TCMS better open source
+software. If you spot areas for improvement please
+[report an issue](https://github.com/kiwitcms/Kiwi/issues/new) so we can take
+a look at it!
+
+
+
+tcms-api changes since 4.0.0
+----------------------------
+
+- Remove coloring. Fixes
+ [Issue #185](https://github.com/kiwitcms/Kiwi/issues/185)
+- Fix using the API client against `https://` URLs (Adam Ćoszyn, Samsung)
+
+
+
+How to upgrade
+---------------
+
+If you are using Kiwi TCMS as a Docker container then
+
+ cd Kiwi/
+ git pull
+ docker-compose down
+ docker pull pub.kiwitcms.eu/kiwitcms/kiwi
+ docker pull centos/mariadb
+ docker-compose up -d
+ docker exec -it kiwi_web /Kiwi/manage.py migrate
+
+
+Help us make Kiwi TCMS better
+-----------------------------
+
+According to [our 2018 roadmap]({filename}2018-01-22-milestones.markdown) the
+Kiwi TCMS team is investing a great deal of our time to make the code base more
+maintainable! For the past few releases we've been balancing code refactoring
+with bug-fixing and minor enhancements and we have lots of ideas down the line.
+
+We want to hear your voice! Tell us how you use Kiwi TCMS inside your organization.
+We want to know what works for you and what doesn't so we can make it better. Feel
+free to comment below, file GitHub issues or send us an email.
+
+
+Happy testing!
diff --git a/content/2018-07-24-version-5.0.rst b/content/2018-07-24-version-5.0.rst
new file mode 100644
index 00000000..66d929b7
--- /dev/null
+++ b/content/2018-07-24-version-5.0.rst
@@ -0,0 +1,194 @@
+Kiwi TCMS 5.0
+#############
+
+:headline: object history tracking and lots of updates
+:date: 2018-07-24 16:30
+:comments: true
+:tags: releases
+
+
+We're happy to announce Kiwi TCMS and tcms-api version 5.0! This release
+introduces object history tracking, removal of old functionality and unused code,
+lots of internal updates and bug fixes.
+
+The new ``pub.kiwitcms.eu/kiwitcms/kiwi:latest`` docker image has Image ID ``468de0abe8a8``.
+`https://public.tenant.kiwitcms.org `_ has also been updated!
+
+
+Changes since Kiwi TCMS 4.2
+---------------------------
+
+Settings
+~~~~~~~~
+
+- Remove ``CACHE`` because not used
+- Remove ``PLAN_EMAIL_TEMPLATE``, ``CASE_EMAIL_TEMPLATE`` and
+ ``CASE_DELETE_EMAIL_TEMPLATE``. Templates can still be overridden if desired
+
+Enhancements
+~~~~~~~~~~~~
+
+- Upgrade to `Django 2.0.7 `_
+- Allow to delete TestPlan. Fixes
+ `Issue #273 `_
+- Don't include username in dashboard URL
+- Copy latest TestPlan text when cloning
+- Always require users to be logged in. Anonymous users will not be allowed
+ access by default. Read-only access to some views (e.g. get TestPlan or TestRun)
+ can be enabled by disabling ``GlobalLoginRequiredMiddleware``! Fixes
+ `Issue #230 `_
+- Start tracking change history for TestPlan, TestCase, TestRun and TestCaseRun.
+ Fixes `Issue #294 `_
+- History changes are recorded as unified diff which is a universally recognized format
+- Show the actual changes in email notifications. Fixes
+ `Issue #199 `_
+
+Bug fixes
+~~~~~~~~~
+
+- Fix ``UnboundLocalError local variable 'message' referenced before assignment``. Fixes
+ `Sentry KIWI-TCMS-1S `_
+- Make email address unique when adding users via admin panel. Fixes
+ `Issue #352 `_ and
+ `Issue #68 `_
+- Fix ``unsupported operand type(s) for +=: 'int' and 'datetime.timedelta'`` by
+ initializing timedelta variable properly. Fixes
+ `Sentry KIWI-TCMS-1Y `_
+- Remove ``core.models.fields`` with MySQL time conversions. Fixes
+ `Issue #390 `_
+- Fix bad JavaScript comparison. Fixes Coverity #289956
+- Remove expression with no effect. Fixes Coverity #289974
+- Rewrite ``request_host_link()`` to fix Coverity #289987
+- Fix Coverity #289923 - Typo in identifier
+- Don't send emails for changes performed by myself. Fixes
+ `Issue #216 `_
+
+Refactoring
+~~~~~~~~~~~
+
+- Fix pylint issues in several modules (Anton Sankov & Ivaylo Ivanov)
+- Fix wrong Plan Type template variable in advanced search form
+- Do not use ``Model.objects.update()`` because it doesn't respect history
+- Use the standard ``ModelChoiceField`` instead of custom one
+- Use ``updateRunStatus()`` instead of deprecated ``updateObject()``
+- Simplify JavaScript function ``getInfo()`` and use it multiple times
+- Simplify ``previewPlan()`` by removing unused parameters
+- Unify ``addChildPlan()`` and ``removeChildPlan()``
+- Unify ``getInfoAndUpdateObject()`` with ``changeCaseRunAssignee()``
+- Unify ``onTestCaseStatusChange()`` with ``changeTestCaseStatus()``
+- Convert ``TestCaseEmailSettings.cc_list`` to string field
+- Merge ``report/caseruns_table.html`` with ``reports/caseruns.html``
+- Rename model ``UserActivateKey`` to ``UserActivationKey``. Fixes
+ `Issue #276 `_
+- Remove ``cached_entities()``. Fixes
+ `Issue #307 `_
+- Remove ``TestPlanText.checksum`` field
+- Remove checksum fields for ``TestCaseText`` model
+- Remove unused and home-grown template tags
+- Remove unused fields ``auto_blinddown``, ``description``, ``sortkey`` from
+ ``TestCaseRunStatus`` model. Fixes
+ `Issue #186 `_
+- Remove ``Meta.db_name`` effectively renaming all tables. New names will use
+ Django's default naming scheme
+- Remove RawSQL queries. We are now 100% ORM based. Fixes
+ `Issue #36 `_
+- Remove duplicate ``MultipleEmailField`` definition
+- Remove ``TCMSLog`` view, ``TCMSLogManager``, ``TCMSLogModel``
+- Remove ``TestPlanText`` model, use ``TestPlan.text`` instead
+- Remove unused JavaScript files
+ - ``lib/detetmine_type.js``
+ - ``lib/hole.js``
+ - ``lib/scriptaculous-controls.js.patch``
+ - ``lib/validations.js``
+ - ``static/js/index.js``
+- Remove ``constructPlanParentPreviewDialog()``
+- Remove ``changeCasePriority()``
+- Remove ``changeCaseRunOrder()``
+- Remove ``debug_output()`` from JavaScript files
+- Remove deprecated ``/ajax/update/`` end-point
+- Remove ``taggleSortCaseRun()``
+- Remove ``strip_parameters()``
+- Remove ``_InfoObjects.users()``
+- Remove ``get_value_by_type()``
+- Remove ``testcases.views.get_log()``
+- Remove ``mail_scene()`` methods and related templates
+
+
+Removed functionality
+~~~~~~~~~~~~~~~~~~~~~
+
+- TestRun completion status is no longer updated automatically. You can still
+ update the status manually via the 'Set Finished' or 'Set Running' links!
+ Fixes `Issue #367 `_
+- Remove bookmarks functionality. There are many great bookmark manager apps
+ and if the user is keen on bookmarks they should use one of them. Closes
+ `Issue #67 `_ and
+ `Issue #210 `_
+- Don't track & display history of changes for ``EnvGroup`` model
+- Remove Disable/Enable buttons from TestPlan page. Enabling and disabling
+ can still be done via the edit page
+- Remove ``changeParentPlan()`` and the ability to change TestPlan parents
+ from the 'Tree View' tab. This can be done via the edit page
+- When viewing a TestPlan the user is no longer able to specify a sorkey for a
+ particular TestCase. Instead they can use the ``Re-order cases`` button and
+ move around the entire row of cases to adjust the sort order
+- When working with test case results, inside a TestRun you will not be allowed
+ to change the order of execution. Order should be defined inside the TestPlan
+ instead
+- Remove ``XmlRpcLog()`` model. Kiwi TCMS will no longer log RPC calls to the
+ database. This leads to a small performance boost and can be overridden on
+ individual basis if you need to do so.
+
+Translations
+~~~~~~~~~~~~
+
+- More source strings marked as translatable
+- New translations for Chinese Simplified, Chinese Traditional, German and Slovenian
+- Stop keeping compiled translations under git. Fixes
+ `Issue #387 `_
+
+
+tcms-api changes since 4.2
+--------------------------
+
+- Requires Python 3.6 or newer because it fixes bugs related to Django's
+ disabling of keep-alive connections. See https://bugs.python.org/issue26402
+- The rpc client is now accessed via ``TCMS().exec.``
+- Leave only XML-RPC transport classes! This removes the top-level interface
+ behind the API client and the consuming side is left to work with Python
+ dictionaries instead of objects.
+- Remove the interactive ``tcms`` script
+- Remove ``tcms_api.config`` module
+- Remove logging class
+- Remove ``script_examples/`` directory. These were never tested and maintained
+
+
+How to upgrade
+---------------
+
+If you are using Kiwi TCMS as a Docker container then::
+
+ cd Kiwi/
+ git pull
+ docker-compose down
+ docker pull pub.kiwitcms.eu/kiwitcms/kiwi
+ docker pull centos/mariadb
+ docker-compose up -d
+ docker exec -it kiwi_web /Kiwi/manage.py migrate
+ docker exec -it kiwi_web /Kiwi/manage.py populate_history --auto
+
+
+Help us make Kiwi TCMS better
+-----------------------------
+
+According to `our 2018 roadmap <{filename}2018-01-22-milestones.markdown>`_ the
+Kiwi TCMS team is investing a great deal of our time to make the code base more
+maintainable! For the past few releases we've been balancing code refactoring
+with bug-fixing and minor enhancements and we have lots of ideas down the line.
+
+We want to hear your voice! Tell us how you use Kiwi TCMS inside your organization.
+We want to know what works for you and what doesn't so we can make it better. Feel
+free to comment below, file GitHub issues or send us an email.
+
+
+Happy testing!
diff --git a/content/2018-07-25-roadmap-update.markdown b/content/2018-07-25-roadmap-update.markdown
new file mode 100644
index 00000000..536e4caa
--- /dev/null
+++ b/content/2018-07-25-roadmap-update.markdown
@@ -0,0 +1,134 @@
+Title: Mid-year roadmap status report
+date: 2018-07-25 16:30
+comments: true
+og_image: images/roadmap.jpg
+twitter_image: images/roadmap.jpg
+author: Alexander Todorov
+tags: community, roadmap
+
+Hello everyone, in this article I will outline the progress that the Kiwi TCMS
+team has made towards achieving the goals on our
+[roadmap]({filename}2018-01-22-milestones.markdown).
+
+
+Make code easier to maintain
+----------------------------
+
+*Status: moderate progress*
+
+Initially [CodeClimate](https://codeclimate.com/github/kiwitcms/Kiwi) reported
+a "D" rating with a 1 year estimated effort. Now it is still on "D" rating with
+a 7 months estimated effort to bring the project back in shape.
+Code smells have dropped from 600+ to 418, duplications have been reduced from 600+ to 359!
+At the same time technical debt ratio has been decreased from 32,5% to 21,6% and
+little over 10000 lines of code have been removed from the source code.
+Checkout
+[the stats](https://codeclimate.com/github/kiwitcms/Kiwi/trends/technical_debt)
+for more info!
+
+
+
+Use pylint and pylint-django
+----------------------------
+
+*Status: good progress*
+
+Both pylint and pylint-django have been integrated into our CI workflow. There are even
+a few custom built plugins that we use. The number of issues reported is down to around 900
+from 4000+ initially. The cleanup has been lead by [Anton Sankov](https://github.com/asankov)
+with help from [Ivaylo Ivanov](https://github.com/ivo0126) and myself.
+
+
+Render HTML, return JSON
+------------------------
+
+*Status: no progress*
+
+Several views were probably modified to return pure JSON in the meantime but we've not
+done any targeted work to resolve this issue.
+
+
+Submit forms, post JSON, GET clean URLs
+---------------------------------------
+
+*Status: no progress*
+
+Same as above, not much has been done in this area.
+
+
+
+API layer
+---------
+
+*Status: complete*
+
+After Kiwi TCMS v4.0 the server side API has been reorganized and updated
+to follow the model/method names used internally.
+
+After the recent version 5.0 the client side API library has been stripped
+to its most basic form so that you can work directly with the responses from
+the server.
+
+There is no more duplication and ambiguity in names because there isn't
+a lot of code left!
+
+
+Documentation
+-------------
+
+*Status: moderate progress, dropped*
+
+All RPC methods have been documented! The rest of the internals will be documented
+as we go along.
+
+
+No vendored JavaScript libraries
+--------------------------------
+
+*Status: moderate progress*
+
+Several JavaScript libraries have been removed but we still carry around jQuery
+and Handlebars.js. No work has been done to convert Kiwi TCMS to use the jQuery
+version provided with Django.
+
+
+Less HTML templates with better organization
+--------------------------------------------
+
+*Status: minimal progress*
+
+
+There are still over 100 HTML templates in Kiwi TCMS. Some of the HTML templates
+have been merged together, some email templates have been refactored and marked
+as translatable but the majority of them have not been updated for a long time.
+
+
+Modern interface with Patternfly
+--------------------------------
+
+*Status: no progress*
+
+
+JavaScript updates and front-end testing
+----------------------------------------
+
+*Status: small progress*
+
+A number of JavaScript functions have been refactored and removed during the
+past few releases but there are still thousands of lines of code left to deal with.
+
+
+Community efforts
+------------------
+
+*Status: moderate progress*
+
+We are seeing a steady stream of new users registered on
+[https://public.tenant.kiwitcms.org](https://public.tenant.kiwitcms.org/login/github-app/) and
+there are several active contributors (issues, translations).
+
+Kiwi TCMS was represented at OSCAL Tirana, DjangoCon Heidelberg and PyCon Prague!
+We're planning to attend HackConf and OpenFest in Sofia by the end of the year.
+
+
+Happy testing!
diff --git a/content/2018-07-30-docker-backup.markdown b/content/2018-07-30-docker-backup.markdown
new file mode 100644
index 00000000..38c29a9a
--- /dev/null
+++ b/content/2018-07-30-docker-backup.markdown
@@ -0,0 +1,121 @@
+Title: How to backup Docker volumes for Kiwi TCMS
+date: 2018-07-30 00:25
+comments: true
+og_image: images/backup.png
+twitter_image: images/backup.png
+author: Alexander Todorov
+tags: customization
+
+
+When you start Kiwi TCMS by running `docker-compose up`
+(see [here](http://kiwitcms.readthedocs.io/en/latest/installing_docker.html#start-docker-compose))
+it will automatically create 2 volumes: `kiwi_db_data` and `kiwi_uploads`.
+This blog post will outline how to backup these docker volumes.
+
+**Note:** in the instructions below `kiwi_db` is the container name and `kiwi` is the
+database name used inside the `docker-compose.yml` file!
+
+
+MariaDB/MySQL database
+----------------------
+
+To export all contents from the docker container execute the command:
+
+ docker exec -i kiwi_db mysqldump --user --password kiwi > backup.sql
+
+This will create a file named `backup.sql` in the current directory, outside of the running container!
+
+You can restore the database contents by using the following command:
+
+ cat backup.sql | docker exec kiwi_db mysql --user --password -v kiwi
+
+**Notes:**
+
+1. Depending on your scenario you may want to remove the existing volume
+ (`docker-compose down && docker volume rm kiwi_db_data`) before restoring the database!
+
+
+Postgres database
+-----------------
+
+To export all contents from the docker container execute the command:
+
+ docker exec -i kiwi_db pg_dump -U --dbname=kiwi -F c > backup.bak
+
+This will create a file named `backup.bak` in the current directory, outside of the running container.
+This is a PostgreSQL custom database dump format which contains all data and schema definitions.
+That is a binary file which can be read with the `pg_restore` command!
+
+To drop and restore the entire database execute:
+
+ docker exec -i kiwi_db psql -c "DROP DATABASE IF EXISTS kiwi;"
+ cat backup.bak | docker exec -i kiwi_db pg_restore -U --dbname=template1 -vcC
+
+
+Multi-tenant database
+---------------------
+
+The [kiwitcms-tenant](https://github.com/kiwitcms/tenants) add-on and/or
+[Kiwi TCMS Enterprise](https://github.com/kiwitcms/enterprise) work only on
+Postgres! Each tenant (aka name-space) uses a separate database schema.
+The first schema name is `public`.
+
+The backup and restore instructions shown above operate on all tenants together!
+If you want to [drop and] restore an individual tenant then use the commands:
+
+ docker exec -it kiwi_db psql --dbname=kiwi
+
+ kiwi=> DROP SCHEMA $tenant_name CASCADE;
+ ....
+ DROP SCHEMA
+ kiwi=> CREATE SCHEMA $tenant_name;
+ CREATE SCHEMA
+ kiwi=>Ctrl+D
+
+ cat backup.bak | docker exec -i kiwi_db pg_restore -U --dbname=kiwi -v --schema $tenant_name
+
+
+Backing up file uploads
+-----------------------
+
+Uploaded files can easily be backed up with:
+
+ docker exec -i kiwi_web /bin/tar -cP /Kiwi/uploads > uploads.tar
+
+and then restored with:
+
+ cat uploads.tar | docker exec -i kiwi_web /bin/tar -x
+
+You may also try the `rsync` command but be aware that it is not installed
+by default!
+
+**Note:**
+the same approach may be used to backup `/var/lib/mysql/` or `/var/lib/pgsql/data`
+from the `kiwi_db` container.
+
+
+Backing up multi-tenant uploads
+-------------------------------
+
+By default multi-tenant file uploads are stored under `/Kiwi/uploads/tenant/$tenant_name`.
+You can archive all contents with the same procedure above. If you wish to restore
+files per tenant you will have to upload the `$tenant_name` directory into the
+docker volume.
+
+
+Alternatives
+------------
+
+By default both docker volumes created for Kiwi TCMS use the `local` driver
+and are available under `/var/lib/docker/volumes/` on the host
+running your containers. You can try backing them up from there as well.
+
+Another alternative is to use the
+[docker-lvm-plugin](https://www.projectatomic.io/blog/2016/05/docker-lvm-plugin/)
+and create these volumes as LVM2 block devices. Then use
+`lvcreate -s` command to create a snapshot volume. For more information see
+[chapter 2.3.5. Snapshot Volumes](https://access.redhat.com/documentation/en-us/red_hat_enterprise_linux/7/html-single/logical_volume_manager_administration/index#snapshot_volumes)
+from the LVM Administrator Guide for Red Hat Enterprise Linux 7.
+
+
+Happy testing!
diff --git a/content/2018-07-31-version-5.1.rst b/content/2018-07-31-version-5.1.rst
new file mode 100644
index 00000000..6f660087
--- /dev/null
+++ b/content/2018-07-31-version-5.1.rst
@@ -0,0 +1,101 @@
+Kiwi TCMS 5.1
+#############
+
+:headline: tech-preview: Django Report Builder
+:date: 2018-07-31 12:00
+:comments: true
+:tags: releases
+
+
+We're happy to announce Kiwi TCMS version 5.1! This release
+introduces new database migrations, an experimental reporting feature,
+deprecated functionality and bug fixes.
+
+The new ``pub.kiwitcms.eu/kiwitcms/kiwi:latest`` docker image has Image ID ``cc9b55aa664d``.
+`https://public.tenant.kiwitcms.org `_
+has also been updated!
+
+
+Changes since Kiwi TCMS 5.0
+---------------------------
+
+Enhancements
+~~~~~~~~~~~~
+
+- Integrate with Django Report Builder as tech-preview. This makes it possible
+ for power users and administrators to generate
+ `tabular reports `_.
+ You will have to know the existing DB schema if you want to create your own reports.
+ See http://kiwitcms.readthedocs.io/en/latest/db.html. This feature is in
+ tech-preview and it may be removed if it doesn't work out. Please comment at:
+ `Issue #452 `_.
+- Allow using ``manage.py dumpdata|loaddata|sqlflush|dbshell`` for backups, see
+ `blog post <{filename}2018-07-30-docker-backup.markdown>`_
+- In TestCase view page add a link to delete the current test case
+- In TestCase Admin page the ``+ Add TestCase`` button now allows to create new
+ test case
+- The version menu item in the helper menu now links to
+ `Changelog `_
+
+
+Deprecated functionality
+~~~~~~~~~~~~~~~~~~~~~~~~
+
+- Start showing deprecation warning for Advanced search, see
+ `Issue #448 `_
+
+
+Bug fixes
+~~~~~~~~~
+
+- Allows Product/Version/Build to be shown in Testing Report. Fixes
+ `Sentry KIWI-TCMS-2C `_
+- Default to ``https://`` links if not running locally. Fixes
+ `Issue #450 `_
+- Apply missing CSS class for object history table so it can be displayed nicely
+
+
+Refactoring
+~~~~~~~~~~~
+
+- Squash some database migrations
+- Fix a number of pylint issues
+- Remove unused ``testruns.views::view_caseruns()``. References
+ `Issue #316 `_
+- Remove unused template ``report/caserun.html``
+- Handle TestRun deletion via admin not home grown code
+
+
+
+
+How to upgrade
+---------------
+
+If you are using Kiwi TCMS as a Docker container then::
+
+ cd Kiwi/
+ git pull
+ docker-compose down
+ docker pull pub.kiwitcms.eu/kiwitcms/kiwi
+ docker pull centos/mariadb
+ docker-compose up -d
+ docker exec -it kiwi_web /Kiwi/manage.py migrate
+
+Don't forget to `backup <{filename}2018-07-30-docker-backup.markdown>`_
+before upgrade!
+
+
+Help us make Kiwi TCMS better
+-----------------------------
+
+According to `our 2018 roadmap update <{filename}2018-07-25-roadmap-update.markdown>`_
+the Kiwi TCMS team is investing a great deal of our time to make the code base more
+maintainable! For the past few releases we've been balancing code refactoring
+with bug-fixing and enhancements and we have lots of ideas down the line.
+
+We want to hear your voice! Tell us how you use Kiwi TCMS inside your organization.
+We want to know what works for you and what doesn't so we can make it better. Feel
+free to comment below, file GitHub issues or send us an email.
+
+
+Happy testing!
diff --git a/content/2018-08-06-override-templates.markdown b/content/2018-08-06-override-templates.markdown
new file mode 100644
index 00000000..947d75ea
--- /dev/null
+++ b/content/2018-08-06-override-templates.markdown
@@ -0,0 +1,74 @@
+Title: How to override templates for Kiwi TCMS
+date: 2018-08-06 11:40
+comments: true
+og_image: images/customization.png
+twitter_image: images/customization.png
+author: Alexander Todorov
+tags: customization
+
+
+This is the first publication in our customization series. It will show you
+how to override any template used by Kiwi TCMS. As an example we will override
+the email template that is used when registering new account. By default the
+email text looks like this:
+
+ Welcome {{ user }},
+ thank you for signing up for an {{ site_domain }} account!
+
+ To activate your account, click this link:
+ {{ confirm_url }}
+
+
+
+[https://public.tenant.kiwitcms.org](https://public.tenant.kiwitcms.org/login/github-app/)
+runs a custom Docker image based on
+`pub.kiwitcms.eu/kiwitcms/kiwi`. For this image the confirmation email looks like this
+
+ Welcome {{ user }},
+ thank you for signing up for our Kiwi TCMS demo!
+
+ To activate your account, click this link:
+ {{ confirm_url }}
+
+ GDPR no longer allows us to automatically subscribe you to
+ our newsletter. If you wish to keep in touch and receive emails
+ with news and updates around Kiwi TCMS please subscribe at:
+ https://kiwitcms.us17.list-manage.com/subscribe/post?u=9b57a21155a3b7c655ae8f922&id=c970a37581
+
+ --
+ Happy testing!
+ The Kiwi TCMS team
+ http://kiwitcms.org
+
+
+The file that we want to override is `tcms/templates/email/confirm_registration.txt`.
+
+Create a local directory (git repository) which will hold customization configuration
+and create a file named `templates.d/email/confirm_registration.txt` with your text!
+
+Next you want to make this file available inside your docker image so your `Dockerfile`
+should look like this:
+
+ FROM pub.kiwitcms.eu/kiwitcms/kiwi
+
+ COPY ./templates.d/ /venv/lib64/python3.6/site-packages/tcms/overridden_templates/
+ COPY local_settings.py /venv/lib64/python3.6/site-packages/tcms/settings/
+
+where `local_settings.py` contains
+
+ import os
+ from django.conf import settings
+
+ settings.TEMPLATES[0]['DIRS'].insert(0, os.path.join(settings.TCMS_ROOT_PATH, 'overridden_templates'))
+
+
+The following code states *instruct Django to look into `overridden_templates` first and
+use any templates it finds there; also make my files available in that specific location
+inside the docker image*.
+
+This approach can be used for all templates that you wish to override. Take into
+account that file names must match (Django searches templates by directory path).
+Now build your customized Docker image and use that for deployment!
+
+
+Happy testing!
diff --git a/content/2018-08-07-version-5.2.rst b/content/2018-08-07-version-5.2.rst
new file mode 100644
index 00000000..1b9e94f7
--- /dev/null
+++ b/content/2018-08-07-version-5.2.rst
@@ -0,0 +1,98 @@
+Kiwi TCMS 5.2
+#############
+
+:headline: non-root Docker image
+:date: 2018-08-07 22:45
+:comments: true
+:tags: releases
+
+
+We're happy to announce Kiwi TCMS version 5.2! This release
+introduces new database migrations and converts
+the Docker image to a non-root user with uid 1001. You may have to adjust
+ownership/permissions on the ``kiwi_uploads`` Docker volume!
+
+
+The new ``pub.kiwitcms.eu/kiwitcms/kiwi:latest`` docker image has Image ID ``6bc4e3124fd4``.
+`https://public.tenant.kiwitcms.org `_
+has also been updated!
+
+
+Changes since Kiwi TCMS 5.1
+---------------------------
+
+Enhancements
+~~~~~~~~~~~~
+
+- Upgrade to `Django 2.1 `_
+- Upgrade to ``django-report-builder 6.2.2``, compatible with Django 2.1
+- Docker image now executes with uid 1001 instead of root
+
+ - image based on ``centos7`` image instead of ``centos/httpd``
+ - image now exposes ports 8080 and 8443
+ - Apache logs now printed on Docker console
+ - SSL certificates copied to ``/Kiwi/ssl`` inside Docker image instead of being bind-mounted
+ - uploads dir changed to ``/Kiwi/uploads``
+ - static dir changed to ``/Kiwi/static``
+ - ``/Kiwi`` is now owned by uid 1001
+ - ``/venv`` is now owned by uid 1001
+ - ``docker-compose.yml`` is updated to match
+- Fix pylint errors (Ivaylo Ivanov)
+- Allow users to see other profiles via Admin
+- Use password change form from Admin instead of custom one
+- ``product.py`` will try to import ``local_settings.py`` if available in the
+ same directory. This can be used to customize settings in downstream
+ distributions
+- Updated `Slovenian translation `_
+
+
+Bug fixes
+~~~~~~~~~
+
+- Make password reset views public
+- Don't crash when adding new users via Admin
+
+
+Refactoring
+~~~~~~~~~~~
+
+- Remove ``UserProfile`` model. Kiwi TCMS doesn't needs extra information
+ about users so we remove this part of the application. Custom installations
+ may choose to define their own profiles if they wish
+- Remove custom ``DBModelBackend`` authentication backend
+- Remove unused ``tcms.core.context_processors.auth_backend_processor``
+- Remove unused ``get_using_backend()``. Fixes
+ `Issue #261 `_
+- Remove ``dj_pagination``. Fixes
+ `Issue #110 `_
+
+
+Settings
+~~~~~~~~~
+
+- ``AUTHENTICATION_BACKENDS`` is removed
+- ``PAGINATION_DEFAULT_PAGINATION`` is removed
+- Navigation menu links are now defined in ``MENU_ITEMS`` and can be redefined
+
+
+Signals
+~~~~~~~
+
+- ``USER_REGISTERED_SIGNAL`` now doesn't receive the ``backend`` parameter
+
+
+How to upgrade
+---------------
+
+If you are using Kiwi TCMS as a Docker container then::
+
+ cd Kiwi/
+ git pull
+ docker-compose down
+ docker pull pub.kiwitcms.eu/kiwitcms/kiwi
+ docker pull centos/mariadb
+ docker-compose up -d
+ docker exec -it kiwi_web /Kiwi/manage.py migrate
+
+Don't forget to `backup <{filename}2018-07-30-docker-backup.markdown>`_
+before upgrade!
diff --git a/content/2018-09-04-version-5.3.rst b/content/2018-09-04-version-5.3.rst
new file mode 100644
index 00000000..65827e4c
--- /dev/null
+++ b/content/2018-09-04-version-5.3.rst
@@ -0,0 +1,207 @@
+Kiwi TCMS 5.3.1
+###############
+
+:headline: UI updates, subscriptions and deprecations
+:date: 2018-09-04 23:00
+:comments: true
+:tags: releases
+
+We're happy to announce Kiwi TCMS version 5.3.1! This release
+brings lots of UI updates and removal of unused
+and/or duplicated functionality and source code. Many pages have been redesigned
+with the Patternfly library to have a modern look and feel which you can
+experience at `https://public.tenant.kiwitcms.org `_.
+
+
+This will be the last release to carry around squashed migrations. In version
+6.0 older migrations will be deleted and replaced with their squashed equivalents.
+Upgrades from versions < 5.3 to 6.0 will break without an intermediate upgrade to 5.3.1!
+
+Use ``pub.kiwitcms.eu/kiwitcms/kiwi:5.3.1`` from Docker Hub when upgrading at some point in the future!
+
+Docker images::
+
+ pub.kiwitcms.eu/kiwitcms/kiwi 5.3.1 a420465852be 976.8 MB
+ pub.kiwitcms.eu/kiwitcms/kiwi latest a420465852be 976.8 MB
+
+
+Changes since Kiwi TCMS 5.2
+---------------------------
+
+
+Improvements
+~~~~~~~~~~~~
+
+- Update to `Django 2.1.1 `_
+- Update Patternfly version. Fixes
+ `Issue #381 `_
+- Replace TinyMCE with SimpleMDE markdown editor. Used for TestPlan text and
+ TestCase action, setup, breakdown, effect fields
+- Allow downstream builds to customize the login templates by
+ providing ``registration/custom_login.html`` template. It can either
+ override the entire login page or provide additional information inside
+ the ``custom_login`` block!
+
+Known issues
+~~~~~~~~~~~~
+
+- You may need to strip existing texts from HTML tags that were generated by
+ TinyMCE. Either do this manually as you go along and use/edit records or in bulk via
+ the API and tools like `html2text `_.
+ We strongly advise you to `backup <{filename}2018-07-30-docker-backup.markdown>`_
+ your database before attempting to automatically edit text fields!
+
+
+Visual changes
+~~~~~~~~~~~~~~
+
+- Remove breadcrumbs at the top of pages. Only admin pages still have them
+- Convert login and registration templates to Patternfly. Fixes
+ `Issue #211 `_
+- Convert 404 and 500 templates to Patternfly
+- Convert dashboard page to Patternfly
+- Convert TestRun new, edit and clone pages to Patternfly. Fixes
+ `Issue #17 `_
+- Convert Search Test Plans page to Patternfly
+- Convert Search Test Runs page to Patternfly
+- Convert Search Test Cases page to Patternfly
+- TestPlan view page, Runs tab now re-uses the search form for test runs
+ which is built using Patternfly
+- Added pagination controls to pages with search results
+
+
+Removed functionality
+~~~~~~~~~~~~~~~~~~~~~
+
+- When creating or editing TestRun
+
+ - field ``estimated_time`` is scheduled for removal and is not shown
+ - ``product_version`` is scheduled for removal in favor of
+ ``TR.plan.product_version``
+ - Product & Version can't be edited anymore. Must be set on the parent
+ TestPlan instead. Still allows to specify builds
+
+- Remove the ability to clone multiple TestPlans from search results
+- Remove the ability to upload TestPlan document files in favor of
+ the existing API
+- Remove TestCase export to XML in favor of existing API
+- Remove Advanced Search functionality. Fixes
+ `Issue #448 `_,
+ `Issue #108 `_
+- Remove tech preview feature: Django Report Builder
+
+
+Translations
+~~~~~~~~~~~~
+
+- Updated `German translation `_
+- Updated `Slovenian translation `_
+- Marked more strings as translatable
+
+
+Bug fixes
+~~~~~~~~~
+
+- Don't use ``get_full_url()`` where not needed. Closes
+ `Issue #380 `_
+- Remove unused templates. Fixes
+ `Issue #114 `_
+- Submit filter form when clicking on tag value. Fixes
+ `Issue #426 `_
+- Update ``TestCaseRun.tested_by`` when setting status. Fixes
+ `Issue #459 `_
+- Add tests for ``KiwiUserAdmin``. Closes
+ `Issue #489 `_
+
+
+Settings
+~~~~~~~~
+
+- The following settings have been removed ``MOTD_LOGIN``, ``WELCOME_MESSAGE``
+ and ``TINYMCE_DEFAULT_CONFIG``
+
+
+Refactoring
+~~~~~~~~~~~
+
+- Fix pylint errors (Anton Sankov, Ivaylo Ivanov)
+- Remove lots of unused functions and classes
+- Remove old or unnecessary templates
+- Remove ``html2text`` dependency
+- Remove unused CSS and vendored-in JavaScript libraries
+- Add JavaScript JSON-RPC client which is now used by the front-end to
+ communicate with the existing JSON-RPC API on the back-end. This
+ replaces many 'ajax' views which are only used to render the UI and were
+ duplicating functionality with existing API
+- Non ``dist/`` files are no longer removed from ``node_modules/`` when building
+ a docker image because packages like ``moment.js`` and ``bootstrap-datetimepicker.js``
+ don't ship their files in ``dist/``
+- Convert TestPlans.TreeView to JSON RPC
+
+
+
+How to upgrade
+---------------
+
+If you are using Kiwi TCMS as a Docker container then::
+
+ cd Kiwi/
+ git pull
+ docker-compose down
+ docker pull pub.kiwitcms.eu/kiwitcms/kiwi
+ docker pull centos/mariadb
+ docker-compose up -d
+ docker exec -it kiwi_web /Kiwi/manage.py migrate
+
+Don't forget to `backup <{filename}2018-07-30-docker-backup.markdown>`_
+before upgrade!
+
+
+Ask your questions on StackOverflow
+-----------------------------------
+
+Kiwi TCMS is now using the
+`'kiwi-tcms' `_
+tag on StackOverflow to track questions. Please submit your support requests
+and general questions to
+`StackOverflow `_ tagged
+with the 'kiwi-tcms' tag! Support requests via GitHub or email will not be answered
+anymore (GitHub issues are for bugs or feature discussions only)!
+
+
+Subscription based online service
+---------------------------------
+
+We are planning to convert
+`https://public.tenant.kiwitcms.org `_ into
+a subscription based service for people who don't want to bother installing
+Kiwi TCMS on their own systems and just want to use it for test collaboration
+with their team.
+
+The income from this service will go towards covering operating costs and
+supporting the
+`development team `_. Watch this
+blog for further announcements about this. Meanwhile you may share your
+thoughts via
+`Issue #515 `_.
+
+
+Plans to remove deprecated functionality
+----------------------------------------
+
+``TestRun.product_version`` will be removed from the database schema in favor of
+``TestRun.plan.product_version``! With the latest web interface it is not possible
+to select a product version different than the one selected in the Test Plan.
+Test runs should only be able to select product builds (after
+`Issue #246 `_ is fixed).
+
+``TestRun.estimated_time`` is scheduled for removal if not used. Objections
+and use-cases must be shared via
+`Issue #514 `_.
+
+``EnvGroup`` and ``EnvProperty`` models are scheduled for removal in favor
+of ``Tag``. Internally tags are referenced in more places inside Kiwi TCMS'
+source code and they appear to be more fully developed. On the other hand
+while environment appears very similar to tags it is not exactly the same.
+Ongoing discussion is happening via
+`Issue #484 `_.
diff --git a/content/2018-09-07-xmlrpc-logging.markdown b/content/2018-09-07-xmlrpc-logging.markdown
new file mode 100644
index 00000000..4a6a7a4b
--- /dev/null
+++ b/content/2018-09-07-xmlrpc-logging.markdown
@@ -0,0 +1,124 @@
+Title: How to add API logging for Kiwi TCMS
+date: 2018-09-07 22:00
+comments: true
+og_image: images/customization.png
+twitter_image: images/customization.png
+author: Alexander Todorov
+tags: customization
+
+
+In this blog post I will show more ways to customize Kiwi TCMS by adding
+logging capabilities to the API backend. Indeed this is a feature that
+our team deemed not required for upstream and was removed in
+[PR #436](https://github.com/kiwitcms/Kiwi/pull/436).
+
+Start by creating the following directory structure:
+
+ api_logging/
+ __init__.py
+ handlers.py
+ models.py
+
+This is a small Django application that will log every call to the API backend.
+Each file looks like this:
+
+ :::python
+ # models.py contains DB schema for your new table
+ from django.db import models
+ from django.conf import settings
+
+ class ApiCallLog(models.Model):
+ executed_at = models.DateTimeField(auto_now_add=True)
+ user = models.ForeignKey(settings.AUTH_USER_MODEL, null=True, blank=True,
+ on_delete=models.CASCADE)
+ method = models.CharField(max_length=255)
+ args = models.TextField(blank=True)
+
+ def __str__(self):
+ return "%s: %s" % (self.user, self.method)
+
+Then
+
+ :::python
+ # handlers.py overrides the RPC handlers coming from django-modernrpc
+ from modernrpc import handlers
+
+ from django.conf import settings
+ from django.contrib.auth import get_user_model
+
+ from .models import ApiCallLog
+
+ def log_call(request, method_name, args):
+ """ Log an RPC call to the database or stdout in DEBUG mode. """
+ request_user = request.user
+ if not request_user.is_authenticated:
+ # create an anonymous user object for logging purposes
+ request_user, _ = get_user_model().objects.get_or_create(
+ username='Anonymous',
+ is_active=False)
+
+ if method_name is None:
+ method_name = '--- method_name missing ---'
+
+ if settings.DEBUG:
+ print('API call:: user: {0}, method: {1}, args: {2}'.format(
+ request_user,
+ method_name,
+ args))
+ else:
+ ApiCallLog.objects.create(
+ user=request_user,
+ method=method_name,
+ args=str(args))
+
+ class XMLRPCHandler(handlers.XMLRPCHandler):
+ def process_request(self):
+ encoding = self.request.encoding or 'utf-8'
+ data = self.request.body.decode(encoding)
+ params, method_name = self.loads(data)
+
+ log_call(self.request, method_name, params)
+ return super().process_request()
+
+ class JSONRPCHandler(handlers.JSONRPCHandler):
+ def process_single_request(self, payload):
+ method_name = payload.get('method', None)
+ params = payload.get('params')
+
+ log_call(self.request, method_name, params)
+ return super().process_single_request(payload)
+
+
+**NOTE:**
+You will have to execute `./manage.py makemigrations api_logging` to create the
+initial migration for Django. This could be easier if you place the above directory
+into existing Django application or craft the migration file by hand!
+
+The last thing you want to do is create a `local_settings.py` file which will override
+Kiwi TCMS defaults:
+
+ :::python
+ # local_settings.py
+ from django.conf import settings
+
+ settings.INSTALLED_APPS += [
+ 'api_logging',
+ ]
+
+ MODERNRPC_HANDLERS = ['api_logging.handlers.XMLRPCHandler',
+ 'api_logging.handlers.JSONRPCHandler']
+
+
+Then place everything in `Dockerfile` like so:
+
+ :::
+ FROM pub.kiwitcms.eu/kiwitcms/kiwi
+
+ COPY ./api_logging/ /venv/lib64/python3.6/site-packages/api_logging/
+ COPY local_settings.py /venv/lib64/python3.6/site-packages/tcms/settings/
+
+
+Kiwi TCMS will import your `local_settings.py` and enable the logging application.
+Now build your customized Docker image and use it for deployment!
+
+Happy testing!
diff --git a/content/2018-09-13-1-year.markdown b/content/2018-09-13-1-year.markdown
new file mode 100644
index 00000000..53a0a868
--- /dev/null
+++ b/content/2018-09-13-1-year.markdown
@@ -0,0 +1,8 @@
+Title: Happy birthday Kiwi TCMS
+date: 2018-09-13 13:50
+comments: true
+og_image: images/1year_infographic.png
+twitter_image: images/1year_infographic.png
+tags: community
+
+
diff --git a/content/2018-10-04-version-6.0.rst b/content/2018-10-04-version-6.0.rst
new file mode 100644
index 00000000..fa12564d
--- /dev/null
+++ b/content/2018-10-04-version-6.0.rst
@@ -0,0 +1,136 @@
+Kiwi TCMS 6.0
+#############
+
+:headline: security upgrade and removal of environment properties
+:date: 2018-10-04 12:45
+:comments: true
+:tags: releases
+
+
+We're happy to announce Kiwi TCMS version 6.0! This release
+introduces new database migrations, removal of
+environment properties in favor of tags, internal updates and bug fixes.
+You can explore everything at
+`https://public.tenant.kiwitcms.org `_.
+
+
+This release removes squashed migrations. Direct upgrades from versions
+< 5.3.1 to 6.0 will break without an intermediate upgrade to 5.3.1!
+
+Docker images::
+
+ pub.kiwitcms.eu/kiwitcms/kiwi latest cd087297f349 991.3 MB
+
+
+Changes since Kiwi TCMS 5.3.1
+-----------------------------
+
+
+Improvements
+~~~~~~~~~~~~
+
+- Update to `Django 2.1.2 `_
+ due to high severity security issue
+- Update to `Patternfly 3.54.8 `_
+- ``Tag`` objects are now shown in Admin panel
+- Add autocomplete when adding tags to ``TestRun`` via UI
+
+
+Removed functionality
+~~~~~~~~~~~~~~~~~~~~~
+
+- TestCase new and edit views no longer allow editing of tags. Tags can be
+ added/removed from the Tags tab which also makes sure to properly account
+ for permissions
+- Remove ``EnvGroup``, ``EnvProperty`` and ``EnvValue`` models in favor of tags.
+ Existing values and properties are converted into tags and automatically added
+ to test runs!
+- Convert squashed database migrations to regular ones and remove older migrations.
+ **WARNING:** upgrade from versions <= 5.3.1 to 6.0 will break without an intermediate
+ upgrade to ``pub.kiwitcms.eu/kiwitcms/kiwi:5.3.1 a420465852be``.
+- Remove deprecated ``TestCase.estimated_time`` and ``TestRun.estimated_time``. Fixes
+ `Issue #514 `_
+
+
+Backend API
+-----------
+
+- No longer use ``product_version`` for ``TestRun.create``. Fixes
+ `Issue #522 `_
+
+ - 'product' is no longer required
+ - 'product_version' is no longer required
+ - 'manager' and 'default_tester' can be usernames or IDs
+
+- ``TestCase.create`` no longer accepts 'tag' values
+- ``TestRun.add_tag`` and ``TestRun.remove_tag`` now return list of tags.
+ Previously these methods returned ``None``!
+ This is the list of tags assigned to the TestRun that is being modified!
+
+
+Bug fixes
+~~~~~~~~~
+
+- Fix mismatched HTML tag in ``plan/get.html`` template (Oleg Kainov)
+- Don't use ``|slugify`` filter in templates which breaks HTML links with non-ASCII
+ TestPlan names. Fixes
+ `Sentry KIWI-TCMS-38 `_
+
+
+Refactoring
+~~~~~~~~~~~
+
+- Fix pylint errors (Ivaylo Ivanov, Anton Sankov)
+- Use existing JSON-RPC methods to add/remove tags via webUI and remove specialized
+ backend methods that handled these requests. Also make sure to obey respective
+ permissions
+
+
+Translations
+~~~~~~~~~~~~
+
+- Updated `Slovenian translation `_
+
+
+How to upgrade
+---------------
+
+If you are using Kiwi TCMS as a Docker container then::
+
+ cd Kiwi/
+ git pull
+ docker-compose down
+ docker pull pub.kiwitcms.eu/kiwitcms/kiwi
+ docker pull centos/mariadb
+ docker-compose up -d
+ docker exec -it kiwi_web /Kiwi/manage.py migrate
+
+Don't forget to `backup <{filename}2018-07-30-docker-backup.markdown>`_
+before upgrade!
+
+
+Subscription based online service
+---------------------------------
+
+We are planning to convert
+`https://public.tenant.kiwitcms.org `_ into
+a subscription based service for people who don't want to bother installing
+Kiwi TCMS on their own systems and just want to use it for test collaboration
+with their team.
+
+The income from this service will go towards covering operating costs and
+supporting the
+`development team `_. Watch this
+blog for further announcements about this. Meanwhile you may share your
+thoughts via
+`Issue #515 `_.
+
+
+Plans to remove deprecated functionality
+----------------------------------------
+
+``TestRun.product_version`` will be removed from the database schema in favor of
+``TestRun.plan.product_version``! With the latest web interface it is not possible
+to select a product version different than the one selected in the Test Plan.
+Test runs should only be able to select product builds (after
+`Issue #246 `_ is fixed).
diff --git a/content/2018-10-11-winter-conferences.markdown b/content/2018-10-11-winter-conferences.markdown
new file mode 100644
index 00000000..47b04c2a
--- /dev/null
+++ b/content/2018-10-11-winter-conferences.markdown
@@ -0,0 +1,57 @@
+Title: Kiwi TCMS winter conference presence
+headline: OpenFest, PiterPy and Heisenbug
+date: 2018-10-11 11:53
+comments: true
+og_image: images/openfest2018_banner.png
+twitter_image: images/openfest2018_banner.png
+tags: community, events
+
+We are happy to announce that [OpenFest](http://www.openfest.org) - the biggest
+open source conference in Bulgaria has provided an info booth for our project.
+This year the event will be held on 3rd and 4th of November at Sofia Tech Park!
+
+Last time the team went to a conference together we had a lot of fun! Join us
+at OpenFest to learn more about Kiwi TCMS and have fun with us!
+
+
+
+
+
+
+
+
+In case you are unable to visit Sofia, which you totally should, you can catch up with
+us in Russia until the end of the year:
+
+* [PiterPy, 2nd-3rd November, St. Petersburg](https://piterpy.com/materials/2440) -
+ where Alex Todorov will talk about pylint plugins and how we use them inside
+ Kiwi TCMS
+* [Heisenbug, 6th-7th December, Moscow](https://heisenbug-moscow.ru/2018/msk/talks/3vjkn0micguu6sqgu2kkyu/) -
+ where Alex will talk about tools and methods that we use to make Kiwi TCMS more
+ secure
+
+Feel free to ping us at [@KiwiTCMS](https://twitter.com/KiwiTCMS) or look for the
+kiwi bird logo and come to say hi. Happy testing!
diff --git a/content/2018-10-12-team-updates.markdown b/content/2018-10-12-team-updates.markdown
new file mode 100644
index 00000000..795920f1
--- /dev/null
+++ b/content/2018-10-12-team-updates.markdown
@@ -0,0 +1,106 @@
+Title: Kiwi TCMS team updates
+headline: new team coach, team progress and internship program
+date: 2018-10-12 11:10
+comments: true
+author: Alexander Todorov
+og_image: images/team/banner.png
+twitter_image: images/team/banner.png
+tags: community, team
+
+I am happy to announce that [our team]({filename}pages/team.html) is steadily growing!
+As we work through our [roadmap]({filename}2018-01-22-milestones.markdown),
+[status update here]({filename}2018-07-25-roadmap-update.markdown), and
+on-board new team members I start to feel the need for a bit more structure
+and organization behind the scenes. I also wish for consistent contributions
+to the project (commit early, commit often) so I can better estimate the resources
+that we have!
+
+I am also actively discussing Kiwi TCMS with lots of people at various conferences
+and generate many ideas for the future. The latest SEETEST in Belgrade was particularly
+fruitful. Some of these ideas are pulling into different directions and I need help
+to keep them under control!
+
+Development-wise sometimes I lose track of what's going on and who's doing what between
+working on Kiwi TCMS, preparing for conferences and venues to promote the project,
+doing code review of other team members, trying not to forget to check-in on
+progress (especially by interns), recruiting fresh blood and thinking about
+the overall future of the project. Our user base is growing and there are days
+where I feel like everything is happening at once or that something
+needs to be implemented ASAP (which is usually true anyway)!
+
+
+
+
+Meet Rayna Stankova in the role of our team coach!
+Reny is a director for Women Who Code Sofia, senior QA engineer at VMware,
+mentor with CoderDojo Bulgaria and a long-time friend of mine.
+Although she is an experienced QA in her own right she will be contributing
+to the people side of Kiwi TCMS and less so technically!
+
+Her working areas will be planning and organization:
+
+* help us (re)define the project vision and goals
+* work with us on roadmaps and action plans so we can meet
+ the project goals faster
+* help us (self) organize so that we are more efficient,
+ including checking progress and blockers (aka enforcer) and
+ meet the aforementioned consistency point
+* serve as our professional coach, motivator and somebody who will
+ take care of team health (yes I really suck at motivating others)
+
+and generally serving as another very experienced member of the team!
+
+
+We did a quick brainstorming yesterday and started to produce results
+(#smileyface)! We do have a team docs space to share information
+(non-public for now, will open it gradually as we grow) and came up
+with the idea to use Kiwi TCMS as a check-list for our on-boarding/internship
+process!
+
+I don't know how it will play out but I do expect from the
+team to self-improve, be inspired, become more focused and more productive!
+**All of this also applies to myself, even more so!**
+
+
+Existing team members progress
+------------------------------
+
+Last year we started with 2 existing team members (Tony and myself) and 3
+new interns (Ivo, Kaloyan and Tseko) who built this website!
+
+
+Tony is the #4 contributor to Kiwi TCMS in
+terms of [number of commits](https://github.com/kiwitcms/Kiwi/graphs/contributors)
+and is on track to surpass one of the original authors (before Kiwi TCMS was forked)!
+He's been working mostly on internal refactoring and resolving the thousands
+of pylint errors that we had (down to around 500 I think). This summer Tony and I
+visited the OSCAL conference in Tirana and hosted an info booth for the project.
+
+
+Ivo is the #5 contributor in terms of numbers of commits. He did learn very
+quickly and is working on getting rid of the remaining pylint errors. His ability
+to adapt and learn is quite impressive actually. Last month he co-hosted a
+git workshop at HackConf, a 1000+ people IT event in Sofia.
+
+Kaloyan did most of the work on our website initially (IIRC).
+Now he is studying in the Netherlands
+and not active on the project. We are working to reboot his on-boarding
+and I'm hoping he will find the time to contribute to Kiwi TCMS regularly.
+
+From the starting team only Tseko decided to move on to other ventures after
+he contributed to the website.
+
+
+Internship program
+------------------
+
+At Kiwi TCMS we have a set of training
+programs that teach all the necessary technical skills before we let anyone
+actively work on the project, let alone become a team member.
+
+Our new interns are Denitsa Uzunova and Desislava Koleva. Both of them are
+coming from Vratsa Software Community and were mentors at the recently held
+CodeWeek hackathon in their home city! I wish them fast learning and good luck!
+
+
+Happy testing!
diff --git a/content/2018-10-20-version-6.1.rst b/content/2018-10-20-version-6.1.rst
new file mode 100644
index 00000000..57329506
--- /dev/null
+++ b/content/2018-10-20-version-6.1.rst
@@ -0,0 +1,132 @@
+Kiwi TCMS 6.1
+#############
+
+:headline: updates and database migrations
+:date: 2018-10-20 14:40
+:comments: true
+:tags: releases
+
+We're happy to announce Kiwi TCMS version 6.1! This release
+introduces new database migrations,
+internal updates and bug fixes. It is a small release designed
+to minimize the number of database migrations by squashing them together.
+You can explore everything at
+`https://public.tenant.kiwitcms.org `_.
+
+
+**NOTE:** there is the 6.0.1 release which resolves an upgrade problem
+caused by non-applied migrations which have been later squashed and
+released in the same release! It is best to jump through the intermediate
+releases to ensure a smooth upgrade!
+
+
+Supported upgrade paths::
+
+ 5.3 (or older) -> 5.3.1
+ 5.3.1 (or newer) -> 6.0.1
+ 6.0.1 -> 6.1
+
+Docker images::
+
+ pub.kiwitcms.eu/kiwitcms/kiwi latest b559123d25b0 970.2 MB
+ pub.kiwitcms.eu/kiwitcms/kiwi 6.1 b559123d25b0 970.2 MB
+ pub.kiwitcms.eu/kiwitcms/kiwi 6.0.1 87b24d94197d 970.1 MB
+ pub.kiwitcms.eu/kiwitcms/kiwi 5.3.1 a420465852be 976.8 MB
+
+
+
+Changes since Kiwi TCMS 6.0
+---------------------------
+
+Improvements
+~~~~~~~~~~~~
+
+- Update `Jira from 1.0.10 to 2.0.0 `_
+- Update to `Patternfly 3.55.0 `_
+- Use button instead of HTML link for deleting test plan (Oleg Kainov)
+- New middleware that will check missing settings. At the moment will only
+ check Base URL configuration which often gets forgotten!
+
+
+Bug fixes
+~~~~~~~~~
+
+- Hot-fix for error caused by the API method ``TestRun.update``. Error was
+ initially reported on
+ `StackOverflow `_.
+ This patch makes it possible to use the API without crashing however the
+ ``TestRun.update`` method doesn't handle the ``stop_date`` field at the moment!
+
+
+Translations
+~~~~~~~~~~~~
+
+- Updated `Slovenian translation `_
+- Updated `German translation `_
+- Updated translation source strings
+
+
+Refactoring
+~~~~~~~~~~~
+
+- Fix pylint errors (Ivaylo Ivanov)
+- Remove unused ``TestRun.list`` and ``TestCase.list_confirmed`` methods
+- Remove unused ``plan_by_id_or_name()`` and ``is_int()``. Fixes
+ `Issue #269 `_
+
+
+Database
+~~~~~~~~
+
+- Rename ``tcms.core.contrib.auth`` to ``tcms.kiwi_auth``
+- Remove field ``user`` from ``TestCaseTag``, ``TestRunTag`` and ``TestPlanTag``
+ models
+- Squash migrations for ``management`` app
+- Squash migrations for ``testcases`` app
+- Squash migrations for ``testplans`` app
+- Squash migrations for ``testruns`` app
+
+
+
+How to upgrade
+---------------
+
+If you are using Kiwi TCMS as a Docker container then::
+
+ cd Kiwi/
+ git pull
+ docker-compose down
+ docker pull pub.kiwitcms.eu/kiwitcms/kiwi
+ docker pull centos/mariadb
+ docker-compose up -d
+ docker exec -it kiwi_web /Kiwi/manage.py migrate
+
+Don't forget to `backup <{filename}2018-07-30-docker-backup.markdown>`_
+before upgrade!
+
+
+Subscription based online service
+---------------------------------
+
+We are planning to convert
+`https://public.tenant.kiwitcms.org `_ into
+a subscription based service for people who don't want to bother installing
+Kiwi TCMS on their own systems and just want to use it for test collaboration
+with their team.
+
+The income from this service will go towards covering operating costs and
+supporting the
+`development team <{filename}pages/team.html>`_. Watch this
+blog for further announcements about this. Meanwhile you may share your
+thoughts via
+`Issue #515 `_.
+
+
+Plans to remove deprecated functionality
+----------------------------------------
+
+``TestRun.product_version`` will be removed from the database schema in favor of
+``TestRun.plan.product_version``! With the latest web interface it is not possible
+to select a product version different than the one selected in the Test Plan.
+Test runs should only be able to select product builds (after
+`Issue #246 `_ is fixed).
diff --git a/content/2018-10-26-api-performance-baseline.markdown b/content/2018-10-26-api-performance-baseline.markdown
new file mode 100644
index 00000000..02d10809
--- /dev/null
+++ b/content/2018-10-26-api-performance-baseline.markdown
@@ -0,0 +1,102 @@
+Title: Kiwi TCMS API performance baseline
+headline: 7.5 req/sec or 130 msec/req
+date: 2018-10-26 16:47
+comments: true
+author: Alexander Todorov
+
+
+A friend from Red Hat sent me an email asking about Kiwi TCMS performance so I did
+an experiment to establish a baseline.
+For API requests I got **7.5 req/sec or 130 msec/req** which is
+1.5x [slower than GitHub](https://blog.github.com/2012-09-05-how-we-keep-github-fast/)!
+
+I used `perf-script`
+([see here](https://github.com/kiwitcms/api-scripts/blob/master/perf-script))
+to measure that. The script takes the first 250 test cases from our test suite
+and on every execution creates a new TestPlan (1 API request), then creates
+new test cases (250 requests), adds cases to test plan (250 requests),
+creates new product build (1 API request), creates new TestRun (1 API request),
+adds test cases to test run (250 requests) and finally updates the statuses
+(250 requests).
+
+A total of 1003 API requests are sent to Kiwi TCMS every time you start this script!
+An example is available at [TR #567](https://public.tenant.kiwitcms.org/run/567/)!
+
+On localhost, running the development server (`./manage.py runserver`) with an
+SQLite database I got:
+
+ :::
+ $ time python perf-script
+
+ real 2m6.450s
+ user 0m1.069s
+ sys 0m0.331s
+
+ $ time python perf-script
+
+ real 2m7.472s
+ user 0m1.057s
+ sys 0m0.342s
+
+ $ time python perf-script
+
+ real 2m9.368s
+ user 0m1.072s
+ sys 0m0.351s
+
+ $ time python perf-script
+
+ real 2m9.197s
+ user 0m1.050s
+ sys 0m0.353s
+
+This measures at 120 msec/req or 7.85 req/sec!
+
+
+[public.tenant.kiwitcms.org](https://public.tenant.kiwitcms.org/login/github-app/) is running on an
+[AWS t2.micro](https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/burstable-performance-instances.html#burstable-performance-instances-hardware)
+instance (via docker-compose) with the default `centos/mariadb` image!
+No extra settings or changes. I used the same computer over a WiFi
+connection and a pretty standard home-speed Internet connection. Times are:
+
+ :::
+ $ time python perf-script
+
+ real 2m18.983s
+ user 0m1.175s
+ sys 0m0.095s
+
+ $ time python perf-script
+
+ real 2m25.937s
+ user 0m1.156s
+ sys 0m0.108s
+
+ $ time python perf-script
+
+ real 2m24.120s
+ user 0m1.102s
+ sys 0m0.098s
+
+ $ time python perf-script
+
+ real 2m21.521s
+ user 0m1.154s
+ sys 0m0.091s
+
+
+This measures at 140 sec/req or 7.05 req/sec!
+
+
+Note: since I am using Python 3.6 I had to modify the file
+`/opt/rh/rh-python36/root/lib64/python3.6/ssl.py` to read:
+
+ :::python
+ # Used by http.client if no context is explicitly passed.
+ _create_default_https_context = _create_unverified_context # this disables HTTPS cert validation
+
+The issue has been reported in
+[RHBZ #1643454](https://bugzilla.redhat.com/show_bug.cgi?id=1643454)
+
+
+Happy testing!
diff --git a/content/2018-10-29-version-6.1.1.rst b/content/2018-10-29-version-6.1.1.rst
new file mode 100644
index 00000000..7d442309
--- /dev/null
+++ b/content/2018-10-29-version-6.1.1.rst
@@ -0,0 +1,120 @@
+Kiwi TCMS 6.1.1
+###############
+
+:headline: few updates and database migrations
+:date: 2018-10-29 16:00
+:comments: true
+:tags: releases
+
+
+We're happy to announce Kiwi TCMS version 6.1.1! This release
+squashes database migrations and removes
+older migrations that have been squashed in previous releases, a few
+improvements and bug fixes.
+You can explore everything at
+`https://public.tenant.kiwitcms.org `_.
+
+
+Supported upgrade paths::
+
+ 5.3 (or older) -> 5.3.1
+ 5.3.1 (or newer) -> 6.0.1
+ 6.0.1 -> 6.1
+ 6.1 -> 6.1.1
+
+
+Docker images::
+
+ pub.kiwitcms.eu/kiwitcms/kiwi latest 49fa42ddfe4d 955.7 MB
+ pub.kiwitcms.eu/kiwitcms/kiwi 6.1.1 49fa42ddfe4d 955.7 MB
+ pub.kiwitcms.eu/kiwitcms/kiwi 6.1 b559123d25b0 970.2 MB
+ pub.kiwitcms.eu/kiwitcms/kiwi 6.0.1 87b24d94197d 970.1 MB
+ pub.kiwitcms.eu/kiwitcms/kiwi 5.3.1 a420465852be 976.8 MB
+
+
+
+Changes since Kiwi TCMS 6.1
+---------------------------
+
+Improvements
+~~~~~~~~~~~~
+
+- Dashboard will now show TestRuns which have test cases assigned to current
+ user. Fixes
+ `Issue #520 `_
+- API method ``TestRun.add_case()`` now returns a serialized TestCaseRun object.
+ Previously this method returned None
+
+
+Bug fixes
+~~~~~~~~~
+
+- Don't show disabled Priority records in UI. Fixes
+ `Issue #334 `_
+
+
+Translations
+~~~~~~~~~~~~
+
+- Updated `Slovenian translation `_
+
+
+Refactoring
+~~~~~~~~~~~
+
+- Fix some pylint errors (Ivaylo Ivanov)
+
+
+Database
+~~~~~~~~
+
+- Remove old squashed migrations for ``management``, ``testplans``,
+ ``testcases`` and ``testruns`` apps
+- Squash the remaining migrations for ``management``, ``testplans``,
+ ``testcases`` and ``testruns`` apps
+
+
+
+How to upgrade
+---------------
+
+If you are using Kiwi TCMS as a Docker container then::
+
+ cd Kiwi/
+ git pull
+ docker-compose down
+ docker pull pub.kiwitcms.eu/kiwitcms/kiwi
+ docker pull centos/mariadb
+ docker-compose up -d
+ docker exec -it kiwi_web /Kiwi/manage.py migrate
+
+Don't forget to `backup <{filename}2018-07-30-docker-backup.markdown>`_
+before upgrade!
+
+
+Subscription based online service
+---------------------------------
+
+We are planning to convert
+`https://public.tenant.kiwitcms.org `_ into
+a subscription based service for people who don't want to bother installing
+Kiwi TCMS on their own systems and just want to use it for test collaboration
+with their team.
+
+The income from this service will go towards covering operating costs and
+supporting the
+`development team <{filename}pages/team.html>`_. Watch this
+blog for further announcements about this. Meanwhile you may share your
+thoughts via
+`Issue #515 `_.
+
+
+Plans to remove deprecated functionality
+----------------------------------------
+
+``TestRun.product_version`` will be removed from the database schema in favor of
+``TestRun.plan.product_version``! With the latest web interface it is not possible
+to select a product version different than the one selected in the Test Plan.
+Test runs should only be able to select product builds (after
+`Issue #246 `_ is fixed).
+
diff --git a/content/2018-11-02-version-6.2.rst b/content/2018-11-02-version-6.2.rst
new file mode 100644
index 00000000..ef1b69cf
--- /dev/null
+++ b/content/2018-11-02-version-6.2.rst
@@ -0,0 +1,134 @@
+Kiwi TCMS 6.2
+#############
+
+:headline: new Django, database migrations and few improvements
+:date: 2018-11-02 12:15
+:comments: true
+:og_image: images/openfest2018_banner.png
+:twitter_image: images/openfest2018_banner.png
+:tags: releases
+
+
+We're happy to announce Kiwi TCMS version 6.2! This is a small release
+that removes squashed migrations from previous releases and includes a few
+improvements. You can explore everything at
+`https://public.tenant.kiwitcms.org `_ or
+find our info booth at `OpenFest `_ in Sofia during
+the weekend and do a live demo with the team!
+
+Supported upgrade paths::
+
+ 5.3 (or older) -> 5.3.1
+ 5.3.1 (or newer) -> 6.0.1
+ 6.0.1 -> 6.1
+ 6.1 -> 6.1.1
+ 6.1.1 -> 6.2 (latest)
+
+
+Docker images::
+
+ pub.kiwitcms.eu/kiwitcms/kiwi latest 7870085ad415 957.6 MB
+ pub.kiwitcms.eu/kiwitcms/kiwi 6.2 7870085ad415 957.6 MB
+ pub.kiwitcms.eu/kiwitcms/kiwi 6.1.1 49fa42ddfe4d 955.7 MB
+ pub.kiwitcms.eu/kiwitcms/kiwi 6.1 b559123d25b0 970.2 MB
+ pub.kiwitcms.eu/kiwitcms/kiwi 6.0.1 87b24d94197d 970.1 MB
+ pub.kiwitcms.eu/kiwitcms/kiwi 5.3.1 a420465852be 976.8 MB
+
+
+
+Changes since Kiwi TCMS 6.1.1
+-----------------------------
+
+
+Improvements
+~~~~~~~~~~~~
+
+- Update to `Django 2.1.3 `_
+- Update Apache config to print logs on the console. Fixes
+ `Issue #549 `_
+- `https://public.tenant.kiwitcms.org `_ now
+ allows email associations when logging via GitHub. If you have an existing
+ account which shares the same email address with your GitHub profile you
+ will be redirected to that account upon logging in via GitHub!
+ This also resolves a problem where existing users trying to login via GitHub
+ were presented with error message that their email exists in the database!
+ Fixes
+ `Issue #573 `_
+
+
+Database
+~~~~~~~~
+
+- Remove old variants of squashed migrations from earlier releases
+
+
+Translations
+~~~~~~~~~~~~
+
+- Updated `German translation `_
+
+
+Refactoring
+~~~~~~~~~~~
+
+- Update ``tcms.tests.factories.BugFactory`` (Ivaylo Ivanov)
+- Add test for ``tcms.testcases.views.group_case_bugs`` (Ivaylo Ivanov)
+- Pylint fixes (Ivaylo Ivanov)
+- Remove unused JavaScript and re-use the existing JSON RPC methods
+
+
+
+How to upgrade
+---------------
+
+If you are using Kiwi TCMS as a Docker container then::
+
+ cd Kiwi/
+ git pull
+ docker-compose down
+ docker pull pub.kiwitcms.eu/kiwitcms/kiwi
+ docker pull centos/mariadb
+ docker-compose up -d
+ docker exec -it kiwi_web /Kiwi/manage.py migrate
+
+Don't forget to `backup <{filename}2018-07-30-docker-backup.markdown>`_
+before upgrade!
+
+**WARNING:** ``pub.kiwitcms.eu/kiwitcms/kiwi:latest`` and ``docker-compose.yml`` will
+always point to the latest available version! If you have to upgrade in steps,
+e.g. between several intermediate releases, you have to modify the above workflow::
+
+ # starting from an older Kiwi TCMS version
+ docker-compose down
+ docker pull pub.kiwitcms.eu/kiwitcms/kiwi:
+ edit docker-compose.yml to use pub.kiwitcms.eu/kiwitcms/kiwi:
+ docker-compose up -d
+ docker exec -it kiwi_web /Kiwi/manage.py migrate
+ # repeat until you have reached latest
+
+
+Subscription based online service
+---------------------------------
+
+We are planning to convert
+`https://public.tenant.kiwitcms.org `_ into
+a subscription based service for people who don't want to bother installing
+Kiwi TCMS on their own systems and just want to use it for test collaboration
+with their team.
+
+The income from this service will go towards covering operating costs and
+supporting the
+`development team <{filename}pages/team.html>`_. Watch this
+blog for further announcements about this. Meanwhile you may share your
+thoughts via
+`Issue #515 `_.
+
+
+Plans to remove deprecated functionality
+----------------------------------------
+
+``TestRun.product_version`` will be removed from the database schema in favor of
+``TestRun.plan.product_version``! With the latest web interface it is not possible
+to select a product version different than the one selected in the Test Plan.
+Test runs should only be able to select product builds (after
+`Issue #246 `_ is fixed).
diff --git a/content/2018-11-05-testrunner-plugin-spec.markdown b/content/2018-11-05-testrunner-plugin-spec.markdown
new file mode 100644
index 00000000..dd7afa96
--- /dev/null
+++ b/content/2018-11-05-testrunner-plugin-spec.markdown
@@ -0,0 +1,180 @@
+Title: Test runner plugin specification
+date: 2018-11-05 16:05
+comments: true
+author: Alexander Todorov
+tags: plugins
+
+Happy Monday testers! Kiwi TCMS needs your help! We are looking for developers who
+wish to create plugins for popular test runners that will record test results
+in Kiwi TCMS! Initially we are looking for plugins for Python's unittest,
+[Django](https://docs.djangoproject.com/en/2.1/topics/testing/advanced/#using-different-testing-frameworks)
+and [JUnit](https://junit.org/junit4/plugins.html)!
+
+
+What is a test runner?
+----------------------
+
+When working with automated testing you have several components:
+
+* A test module (or test script), e.g. `test_models.py` which contains
+ tests for your software;
+* A test framework, e.g. Python nose, which provides the structure
+ for test classes and methods and assert methods to use;
+* A test runner, which knows how to discover your test scripts, load them,
+ execute the testing scenarios inside of them and report the results.
+
+
+Very often all of the components above live together inside the testing framework
+but don't need to. For example the standard `unittest` module in Python
+provides a test runner but there are also `nose` and `py.test` and Django provides
+its own test runner that knows how to work with the database.
+
+
+Workflow organization
+---------------------
+
+Once you agree to writing a plugin we are going to create a separate GitHub
+repository where you will be granted write privileges making you an independent
+contributor to the Kiwi TCMS project!
+
+
+Design and architecture of the plugin is up to you, following the practices
+established by the testing framework in question. You will also have to create
+a test suite for your plugin based on the specification below.
+
+You are expected to use
+[public.tenant.kiwitcms.org](https://public.tenant.kiwitcms.org/login/github-app/) while working on the
+plugin and afterwards. This is known as eating your own dog food!
+
+For Python we provide the `tcms-api` module which already takes care of the
+communications layer. For other languages you will have to create this layer or
+depend on other open source libraries that provide a XML-RPC or JSON-RPC
+client!
+
+You can use
+[this gist](https://gist.github.com/atodorov/f5aed028b6f254d97bcaf93453abe8d2)
+for inspiration!
+
+
+Behavior Specification
+----------------------
+
+
+*Please use the comments section to discuss unclear behavior and missing scenarios!*
+
+ SUMMARY: Will use configuration file if it exists
+ GIVEN: the file ~/.tcms.conf exists
+ WHEN: plugin initializes
+ THEN: the plugin will log an info message, read the file and
+ THEN: configure TCMS_API_URL, TCMS_USERNAME, TCMS_PASSWORD
+ variables with the respective values
+
+
+ SUMMARY: Will use ENVIRONMENT if configuration file doesn't exist
+ GIVEN: the file ~/.tcms.conf does not exists
+ WHEN: plugin initializes
+ THEN: the plugin will read configuration from environment and configure
+ the following variables/class members:
+ TCMS_API_URL, TCMS_USERNAME and TCMS_PASSWORD
+
+
+ SUMMARY: Will exit if TCMS_API_URL not configured
+ GIVEN: TCMS_API_URL variable is empty
+ WHEN: plugin initializes
+ THEN: log a warning message and exit
+ AND: depending on the test runner framework set exist status 1
+
+
+ SUMMARY: Will exit if TCMS_USERNAME not configured
+ GIVEN: TCMS_USERNAME is empty
+ WHEN: plugin initializes
+ THEN: log a warning message and exit
+ AND: depending on the test runner framework set exist status 1
+
+
+ SUMMARY: Will exit if TCMS_PASSWORD not configured
+ GIVEN: TCMS_PASSWORD is empty
+ WHEN: plugin initializes
+ THEN: log a warning message and exit
+ AND: depending on the test runner framework set exist status 1
+
+
+ SUMMARY: Will re-use existing TestPlan if configured
+ GIVEN: TCMS_RUN_ID environment variable is not empty
+ WHEN: plugin initializes
+ THEN: this will be the Current_TestRun record to which the plugin is
+ going to add test execution results
+ AND: Current_TestPlan document in which the plugin will
+ search for test cases becomes Current_TestRun.plan
+
+
+ SUMMARY: Will create new TestPlan & TestRun if TCMS_RUN_ID not configured
+ GIVEN: TCMS_RUN_ID environment variable is empty
+ THEN: plugin will create a new TestPlan in Kiwi TCMS with attributes:
+ name='Automated test plan for %(product)'
+ product='%(product)'
+ product_version='%(version)'
+ type='Unit'
+ WHERE: %(product) is a placeholder for TCMS_PRODUCT==TRAVIS_REPO_SLUG==JOB_NAME
+ %(version) is a placeholder for TCMS_PRODUCT_VERSION==TRAVIS_COMMIT==TRAVIS_PULL_REQUEST_SHA==GIT_COMMIT
+ THEN: plugin will crate a new TestRun in Kiwi TCMS with attributes:
+ summary='Automated test run ....'
+ plan=Current TestPlan
+ build='%(build)'
+ manager=TCMS_USERNAME
+ WHERE: %(build) is a placeholder for TCMS_BUILD==TRAVIS_BUILD_NUMBER==BUILD_NUMBER
+ Environment variables are specified in:
+ https://docs.travis-ci.com/user/environment-variables#default-environment-variables
+ https://wiki.jenkins.io/display/JENKINS/Building+a+software+project#Buildingasoftwareproject-belowJenkinsSetEnvironmentVariables
+
+ SUMMARY: Will not create duplicate Product, Version & Build if they already exist
+ GIVEN: TCMS_RUN_ID is not configured
+ AND: %(product) exists
+ AND: %(version) exists
+ AND: %(build) exists
+ WHEN: plugin tries to auto-create TestPlan and TestRun
+ THEN: plugin will re-use %(product), %(version) and %(build) from the database
+ AND: not try to auto-create them
+
+
+ SUMMARY: Will auto-create Product, Version & Build if they don't exist
+ GIVEN: TCMS_RUN_ID is not configured
+ AND: %(product) doesn't exist
+ AND: %(version) doesn't exist
+ AND: %(build) doesn't exist
+ WHEN: plugin tries to auto-create TestPlan and TestRun
+ THEN: %(product), %(version) and %(build) be created automatically
+
+
+ SUMMARY: Unit test names are added to TestPlan
+ GIVEN: we have good plugin configuration
+ WHEN: plugin loops over unit tests emitted by the test runner
+ THEN: plugin will check Current_TestPlan for a TestCase with the same name
+ AND: if test case doesn't exist in Current_TestPlan
+ THEN: it will be added to Current_TestPlan
+ hint: it is probably best to process all unit test results at the end!
+
+
+ SUMMARY: Unit test names are added to TestRun
+ GIVEN: we have good plugin configuration
+ WHEN: plugin loops over unit tests emitted by the test runner
+ THEN: plugin will check Current_TestRun for a TestCaseRun object which matches
+ the current unit test name
+ hint: (or Current_TestCase object from previous scenario, depending on implementation)
+ AND: if such TestCaseRun doesn't exist in Current_TestRun
+ THEN: it will be added to Current_TestRun
+ hint: it is probably best to process all unit test results at the end!
+
+
+ SUMMARY: Current_TestRun is updated with unit test results
+ GIVEN: we have good plugin configuration
+ WHEN: plugin loops over unit tests emitted by the test runner
+ THEN: plugin will check Current_TestRun for a TestCaseRun object which matches
+ the current unit test name
+ hint: (or Current_TestCase object from previous scenario, depending on implementation)
+ AND: if TestCaseRun object exists in Current_TestRun
+ THEN: its status will be updated with the execution result coming from the test runner
+ hint: it is probably best to process all unit test results at the end!
+
+
+Happy testing!
diff --git a/content/2018-11-12-version-6.2.1.rst b/content/2018-11-12-version-6.2.1.rst
new file mode 100644
index 00000000..52042b4a
--- /dev/null
+++ b/content/2018-11-12-version-6.2.1.rst
@@ -0,0 +1,110 @@
+Kiwi TCMS 6.2.1
+###############
+
+:headline: some improvements, bug-fixes and French translation
+:date: 2018-11-12 14:45
+:comments: true
+:tags: releases
+
+We're happy to announce Kiwi TCMS version 6.2.1! This is a small release
+that includes some improvements and bug-fixes. You can explore everything at
+`https://public.tenant.kiwitcms.org `_!
+
+Supported upgrade paths::
+
+ 5.3 (or older) -> 5.3.1
+ 5.3.1 (or newer) -> 6.0.1
+ 6.0.1 -> 6.1
+ 6.1 -> 6.1.1
+ 6.1.1 -> 6.2 (or newer)
+
+
+Docker images::
+
+ pub.kiwitcms.eu/kiwitcms/kiwi latest 24338088bf46 956.8 MB
+ pub.kiwitcms.eu/kiwitcms/kiwi 6.2 7870085ad415 957.6 MB
+ pub.kiwitcms.eu/kiwitcms/kiwi 6.1.1 49fa42ddfe4d 955.7 MB
+ pub.kiwitcms.eu/kiwitcms/kiwi 6.1 b559123d25b0 970.2 MB
+ pub.kiwitcms.eu/kiwitcms/kiwi 6.0.1 87b24d94197d 970.1 MB
+ pub.kiwitcms.eu/kiwitcms/kiwi 5.3.1 a420465852be 976.8 MB
+
+
+Changes since Kiwi TCMS 6.2
+---------------------------
+
+
+Improvements
+~~~~~~~~~~~~
+
+- Update to `Patternfly 3.57.0 `_
+- Update to `psycopg2 2.7.6.1 `_
+
+Bug fixes
+~~~~~~~~~
+
+- Fix InvalidQuery, field ``TestCase.default_tester`` cannot be both deferred and
+ traversed using ``select_related`` at the same time. References
+ `Issue #346 `_
+
+Refactoring
+~~~~~~~~~~~
+
+- Pylint fixes (Ivaylo Ivanov)
+- Remove JavaScript and Python functions in favor of existing JSON-RPC
+- Remove vendored-in ``js/lib/jquery.dataTables.js`` which is now replaced by
+ the npm package ``datatables.net`` (required by Patternfly)
+
+
+Translations
+~~~~~~~~~~~~
+
+- New `French translation `_
+ (Christophe CHAUVET)
+
+
+Misc
+~~~~
+
+- `https://public.tenant.kiwitcms.org `_ is
+ using a new SSL certificate with serial number
+ ``46:78:80:EA:80:A4:FC:65:17:E4:59:EC:1D:C2:27:47``
+- Version 6.2.1 has been published to
+ `PyPI `_ to facilitate people who want
+ to deploy Kiwi TCMS on Heroku. **Important**: PyPI package will be provided
+ as a convenience for those who know what they are doing. Valid bugs and
+ issues will be dealth with accordingly. As we do not deploy from a PyPI
+ tarball we ask you to provide all the necessary
+ details when reporting issues! *If you have no idea what all of this means
+ then stick to the official Docker images!*
+
+
+How to upgrade
+---------------
+
+If you are using Kiwi TCMS as a Docker container then::
+
+ cd Kiwi/
+ git pull
+ docker-compose down
+ docker pull pub.kiwitcms.eu/kiwitcms/kiwi
+ docker pull centos/mariadb
+ docker-compose up -d
+ docker exec -it kiwi_web /Kiwi/manage.py migrate
+
+Don't forget to `backup <{filename}2018-07-30-docker-backup.markdown>`_
+before upgrade!
+
+**WARNING:** ``pub.kiwitcms.eu/kiwitcms/kiwi:latest`` and ``docker-compose.yml`` will
+always point to the latest available version! If you have to upgrade in steps,
+e.g. between several intermediate releases, you have to modify the above workflow::
+
+ # starting from an older Kiwi TCMS version
+ docker-compose down
+ docker pull pub.kiwitcms.eu/kiwitcms/kiwi:
+ edit docker-compose.yml to use pub.kiwitcms.eu/kiwitcms/kiwi:
+ docker-compose up -d
+ docker exec -it kiwi_web /Kiwi/manage.py migrate
+ # repeat until you have reached latest
+
+
+Happy testing!
diff --git a/content/2018-12-04-version-6.3.rst b/content/2018-12-04-version-6.3.rst
new file mode 100644
index 00000000..ea1e5fee
--- /dev/null
+++ b/content/2018-12-04-version-6.3.rst
@@ -0,0 +1,172 @@
+Kiwi TCMS 6.3
+#############
+
+:headline: fixes XSS vulnerability, GitLab integration
+:date: 2018-12-04 09:15
+:comments: true
+:tags: releases
+
+We're happy to announce Kiwi TCMS version 6.3! This is a medium severity
+security update that includes new versions of Django and Patternfly,
+new database migrations, lots of improvements, bug fixes and internal
+refactoring. This version also introduces integration with GitLab issue
+tracker! You can explore everything at
+`https://public.tenant.kiwitcms.org `_!
+
+Supported upgrade paths::
+
+ 5.3 (or older) -> 5.3.1
+ 5.3.1 (or newer) -> 6.0.1
+ 6.0.1 -> 6.1
+ 6.1 -> 6.1.1
+ 6.1.1 -> 6.2 (or newer)
+
+
+Docker images::
+
+ pub.kiwitcms.eu/kiwitcms/kiwi latest 8135624fdca2 960.3 MB
+ pub.kiwitcms.eu/kiwitcms/kiwi 6.2 7870085ad415 957.6 MB
+ pub.kiwitcms.eu/kiwitcms/kiwi 6.1.1 49fa42ddfe4d 955.7 MB
+ pub.kiwitcms.eu/kiwitcms/kiwi 6.1 b559123d25b0 970.2 MB
+ pub.kiwitcms.eu/kiwitcms/kiwi 6.0.1 87b24d94197d 970.1 MB
+ pub.kiwitcms.eu/kiwitcms/kiwi 5.3.1 a420465852be 976.8 MB
+
+
+Changes since Kiwi TCMS 6.2.1
+-----------------------------
+
+
+Security
+~~~~~~~~
+
+- Resolve medium severity XSS vulnerability which can be exploited when
+ previewing malicious text in Simple MDE editor. See
+ `CVE-2018-19057 `_,
+ `SNYK-JS-SIMPLEMDE-72570 `_
+- Use ``mozilla/bleach`` before rendering Markdown to the user as a second layer
+ of protection against the previously mentioned XSS vulnerability
+
+
+Improvements
+~~~~~~~~~~~~
+
+- Update to `Django 2.1.4 `_
+- Update to `Patternfly 3.58.0 `_
+- Make docker container restartable (Maik Opitz, Adam Hall)
+- Add GitLab issue tracker integration. Fixes
+ `Issue #176 `_
+ (Filipe Arruda, Federal Institute of Pernambuco)
+- Convert ``Create new TestPlan`` page to Patternfly (Anton Sankov)
+- Upon successful registration show the list of super-users in case new
+ accounts must be activated manually. This can be the same or expanded
+ version of the addresses in the ``ADMIN`` setting. Include super-users
+ in email notifications sent via ``tcms.signals.notify_admins()``.
+- Don't include ``admin/js/*.js`` files in templates when not
+ necessary. Results in faster page load. Fixes
+ `Issue #209 `_
+- Enable ``nl2br`` Markdown extension which allows newline characters
+ to be rendered as ``
`` tags in HTML. Visually the rendered
+ text will look closer to what you seen in the text editor. Fixes
+ `Issue #623 `_
+- Use auto-complete for adding components to TestCase
+
+
+Removed functionality
+~~~~~~~~~~~~~~~~~~~~~
+
+- Bulk-update of Category for selected TestCase(s) inside of
+ TestPlan
+- Bulk-update of Components for selected TestCase(s) inside of
+ TestPlan
+- Bulk-update of automated status for selected TestCase(s) inside of
+ TestPlan
+- Bulk-remove for TestCase Component tab
+
+These actions have always been a bit broken and didn't check the
+correct permission labels. You can still update items individually!
+
+- Selection of Components when creating new TestCase. Closes
+ `Issue #565 `_.
+ Everywhere else Kiwi TCMS doesn't allow selection of many-to-many
+ relationships when creating or editing objects. Tags, Bugs, Components,
+ TestPlans can be added via dedicated tabs once the object has been saved.
+
+
+Bug fixes
+~~~~~~~~~
+
+- Hide ``KiwiUserAdmin.password`` field from super-user. Fixes
+ `Issue #610 `_
+- Don't show inactive Priority. Fixes
+ `Issue #637 `_
+- Don't traceback when adding new users via Admin. Fixes
+ `Issue #642 `_
+- Teach ``TestRun.update()`` API method to process the ``stop_date``
+ field. Fixes
+ `Issue #554 `_ (Anton Sankov)
+- Previously when reporting issues to Bugzilla, directly from a TestRun,
+ Kiwi TCMS displayed the error ``Enable reporting to this Issue Tracker by
+ configuring its base_url`` although that has already been configured.
+ This is now fixed. See
+ `Stack Overflow #53434949 `_
+
+
+Database
+~~~~~~~~
+
+- Remove ``TestPlan.owner`` field, duplicates ``TestPlan.author``
+
+
+Translations
+~~~~~~~~~~~~
+
+- Updated `French translation `_
+- Updated `Slovenian translation `_
+
+
+Refactoring
+~~~~~~~~~~~
+
+- Remove ``fmt_queries()``. Fixes
+ `Issue #330 `_ (Anton Sankov)
+- Remove unused parameter from ``plan_from_request_or_none()``. Refers to
+ `Issue #303 `_ (Anton Sankov)
+- Remove ``ComponentActions()`` class. Fixes
+ `Issue #20 `_
+- Convert lots of AJAX calls to JSON-RPC
+- Remove lots of unused Python, JavaScript and templates. Both after migration
+ to JSON RPC and other leftovers
+- Pylint fixes (Alexander Todorov, Anton Sankov)
+
+
+
+How to upgrade
+---------------
+
+If you are using Kiwi TCMS as a Docker container then::
+
+ cd Kiwi/
+ git pull
+ docker-compose down
+ docker pull pub.kiwitcms.eu/kiwitcms/kiwi
+ docker pull centos/mariadb
+ docker-compose up -d
+ docker exec -it kiwi_web /Kiwi/manage.py migrate
+
+Don't forget to `backup <{filename}2018-07-30-docker-backup.markdown>`_
+before upgrade!
+
+**WARNING:** ``pub.kiwitcms.eu/kiwitcms/kiwi:latest`` and ``docker-compose.yml`` will
+always point to the latest available version! If you have to upgrade in steps,
+e.g. between several intermediate releases, you have to modify the above workflow::
+
+ # starting from an older Kiwi TCMS version
+ docker-compose down
+ docker pull pub.kiwitcms.eu/kiwitcms/kiwi:
+ edit docker-compose.yml to use pub.kiwitcms.eu/kiwitcms/kiwi:
+ docker-compose up -d
+ docker exec -it kiwi_web /Kiwi/manage.py migrate
+ # repeat until you have reached latest
+
+
+Happy testing!
diff --git a/content/2018-12-17-roadmap-update.markdown b/content/2018-12-17-roadmap-update.markdown
new file mode 100644
index 00000000..31361d2b
--- /dev/null
+++ b/content/2018-12-17-roadmap-update.markdown
@@ -0,0 +1,147 @@
+Title: Roadmap status report for 2018
+headline: 62% complete, good progress on refactoring
+date: 2018-12-17 15:50
+comments: true
+og_image: images/roadmap.jpg
+twitter_image: images/roadmap.jpg
+author: Alexander Todorov
+tags: community, roadmap
+
+Hello everyone, in this article I will outline the progress that the Kiwi TCMS
+team has made towards achieving the goals in our 2018
+[roadmap]({filename}2018-01-22-milestones.markdown)
+([mid-year update here]({filename}2018-07-25-roadmap-update.markdown)).
+TLDR; goals are completed at 62%. Refactoring legacy code is showing good results,
+less so on the front-end side and there are items still in progress!
+
+
+Make code easier to maintain
+----------------------------
+
+*Status: good progress*
+
+Initially [CodeClimate](https://codeclimate.com/github/kiwitcms/Kiwi) reported
+a "D" rating with 600+ code smells and 600+ duplications and a 1 year estimation
+to resolve these. We're now down to "C" rating with 171 smells and 203 duplications.
+
+The level of technical debt has dropped from 32.5% down to 17.7% and we have removed
+around 14000 lines of Python code and 8000 lines of JavaScript code without
+losing significant functionality.
+
+Checkout
+[the stats](https://codeclimate.com/github/kiwitcms/Kiwi/trends/technical_debt)
+for more info!
+
+
+
+Use pylint and pylint-django
+----------------------------
+
+*Status: almost finished*
+
+Both pylint and pylint-django have been integrated into our CI workflow. There are even
+some custom built plugins that we use. The number of issues reported is down to 100
+from 4000+ initially. These are predominantly `fixme` comments which are also in parts
+of the code that are scheduled for removal and refactoring.
+
+
+Render HTML, return JSON
+------------------------
+
+*Status: moderate progress*
+
+Several views were modified to return pure JSON but we've not
+done any targeted work to resolve this issue. A number of other views have been
+removed in favor of using the existing JSON-RPC layer.
+
+This is an internal refactoring effort which isn't very visible from the outside.
+This is also one of the factors contributing to the high number of removed
+source code.
+
+
+Submit forms, post JSON, GET clean URLs
+---------------------------------------
+
+*Status: no progress*
+
+Not much has been done in this area except the occasional refactoring to
+JSON-RPC.
+
+
+API layer
+---------
+
+*Status: complete*
+
+
+Documentation
+-------------
+
+*Status: moderate progress, dropped*
+
+All RPC methods have been documented! The rest of the internals will be documented
+as we go along.
+
+
+No vendored JavaScript libraries
+--------------------------------
+
+*Status: good progress*
+
+We still carry around jQuery, jQuery-UI and Handlebars.js. They will be
+removed once the pages using them are converted to use the Patternfly widgets
+library.
+
+
+Less HTML templates with better organization
+--------------------------------------------
+
+*Status: moderate progress*
+
+
+There are still over 50 HTML templates in `tcms/templates/` that need to be
+refactored into Patternfly. We've been working on them one at a time and will
+focus more on this effort in the next couple of months.
+
+
+Modern interface with Patternfly
+--------------------------------
+
+*Status: moderate progress*
+
+Some of the pages have been converted to use Patternfly. The most important pages
+that still have a different look and feel are TestPlan view, TestCase view and
+TestRun view. These are also the hardest to convert because they have lots of
+tabs/components which pull information from various places. Our goal is to create
+reusable widgets for the various components (e.g. a list of TestCases) and then
+include these components into several different templates to minimize code
+duplication.
+
+
+JavaScript updates and front-end testing
+----------------------------------------
+
+*Status: moderate progress*
+
+A number of JavaScript functions have been refactored and removed during the
+past few releases but there are still thousands of lines of code left to deal with.
+This effort is mostly happening in parallel with the Patternfly redesign.
+We still don't have anything to test front-end JavaScript functionality!
+
+
+Community efforts
+------------------
+
+*Status: good progress*
+
+We are seeing a steady stream of new users registered on
+[https://public.tenant.kiwitcms.org](https://public.tenant.kiwitcms.org/login/github-app/) and
+there are several active contributors on GitHub. Most of our translators are
+very active and keep their respective languages fresh and up to date!
+
+Kiwi TCMS was represented at OSCAL Tirana, DjangoCon Heidelberg, PyCon Prague,
+HackConf Sofia, PiterPy St. Petersburg and OpenFest Sofia. We've also been
+approved for a project stand at FOSDEM 2019 so watch this blog for more news.
+
+
+Happy testing!
diff --git a/content/2019-01-07-version-6.4.rst b/content/2019-01-07-version-6.4.rst
new file mode 100644
index 00000000..4867d94d
--- /dev/null
+++ b/content/2019-01-07-version-6.4.rst
@@ -0,0 +1,149 @@
+Kiwi TCMS 6.4
+#############
+
+:headline: security updates, improvements and bug fixes
+:date: 2019-01-07 15:25
+:comments: true
+:tags: releases
+
+We're happy to announce Kiwi TCMS version 6.4! This is a security,
+improvement and bug-fix update that includes new versions of Django,
+Patternfly and other dependencies. You can explore everything at
+`https://public.tenant.kiwitcms.org `_!
+
+Supported upgrade paths::
+
+ 5.3 (or older) -> 5.3.1
+ 5.3.1 (or newer) -> 6.0.1
+ 6.0.1 -> 6.1
+ 6.1 -> 6.1.1
+ 6.1.1 -> 6.2 (or newer)
+
+
+Docker images::
+
+ pub.kiwitcms.eu/kiwitcms/kiwi latest 39fcb88182bb 963.4 MB
+ pub.kiwitcms.eu/kiwitcms/kiwi 6.2 7870085ad415 957.6 MB
+ pub.kiwitcms.eu/kiwitcms/kiwi 6.1.1 49fa42ddfe4d 955.7 MB
+ pub.kiwitcms.eu/kiwitcms/kiwi 6.1 b559123d25b0 970.2 MB
+ pub.kiwitcms.eu/kiwitcms/kiwi 6.0.1 87b24d94197d 970.1 MB
+ pub.kiwitcms.eu/kiwitcms/kiwi 5.3.1 a420465852be 976.8 MB
+
+
+Changes since Kiwi TCMS 6.3
+---------------------------
+
+
+Security
+~~~~~~~~
+
+- Update Django from 2.1.4 to 2.1.5, which deals with CVE-2019-3498:
+ Content spoofing possibility in the default 404 page
+- Update Patternfly to version 3.59.0, which deals with XSS issue in bootstrap.
+ See CVE-2018-14041
+- By default session cookies will expire after 24 hours. This can be controlled
+ via the ``SESSION_COOKIE_AGE`` setting. Fixes
+ `Issue #556 `_
+
+
+Improvements
+~~~~~~~~~~~~
+
+- Update mysqlclient from 1.3.13 to 1.3.14
+- Update python-gitlab from 1.6.0 to 1.7.0
+- Update django-simple-history from 2.5.1 to 2.6.0
+- Update pygithub from 1.43.3 to 1.43.4
+- New API method ``TestCase.remove()``. Initially requested as
+ `SO #53844380 `_
+- Drop down select widges in Patternfly pages are now styled with
+ ``bootstrap-select`` giving them more consistent look and feel with
+ the rest of the page (Anton Sankov)
+- Create new TestPlan page now includes toggles to control notifications
+ and whether or not the test plan is active. This was previously available
+ only in edit page (Anton Sankov)
+- By default TestPlan notification toggles are turned on. Previously they
+ were off (Anton Sankov)
+- Create and Edit TestPlan pages now look the same (Anton Sankov)
+- Kiwi TCMS is now accepting donations via
+ `Open Collective `_
+
+
+Removed functionality
+~~~~~~~~~~~~~~~~~~~~~
+
+- Remove ``TestPlan page -> Run menu -> Add cases to run`` action.
+ This is the same as ``TestRun page -> Cases menu -> Add`` action
+- Legacy reports will be removed after 1st March 2019. Provide your
+ feedback in
+ `Issue #657 `_
+- The ``/run/`` URL path has been merged with ``/runs/`` due to configuration
+ refactoring. This may break your bookmarks or permalinks!
+
+
+Bug fixes
+~~~~~~~~~
+
+- Don't traceback if markdown text is ``None``. Originally reported as
+ `SO #53662887 `_
+- Show loading spinner when searching. Fixes
+ `Issue #653 `_
+- Quick fix: when viewing TestPlan cases make TC summary link to the test case.
+ Previously the summary column was a link to nowhere.
+
+
+Translations
+~~~~~~~~~~~~
+
+- Updated `Chinese Traditional translation `_
+- Updated `French translation `_
+- Updated `Slovenian translation `_
+
+
+Refactoring
+~~~~~~~~~~~
+
+- Pylint fixes
+- New and updated internal linters
+- Refactor ``testplans.views.new`` to class based view (Anton Sankov)
+- Refactor ``TestCase -> Bugs tab -> Remove`` to JSON-RPC. References
+ `Issue #18 `_
+- Refactor ``removeCaseRunBug()`` to JSON-RPC, References
+ `Issue #18 `_
+- Remove unused ``render_form()`` methods
+- Remove unnecessary string-to-int conversion (Ivaylo Ivanov)
+- Remove obsolete label fields. References
+ `Issue #652 `_ (Anton Sankov)
+- Remove JavaScript that duplicates ``requestOperationUponFilteredCases()``
+- Remove ``QuerySetIterationProxy`` class - not used anymore
+
+
+How to upgrade
+---------------
+
+If you are using Kiwi TCMS as a Docker container then::
+
+ cd Kiwi/
+ git pull
+ docker-compose down
+ docker pull pub.kiwitcms.eu/kiwitcms/kiwi
+ docker pull centos/mariadb
+ docker-compose up -d
+ docker exec -it kiwi_web /Kiwi/manage.py migrate
+
+Don't forget to `backup <{filename}2018-07-30-docker-backup.markdown>`_
+before upgrade!
+
+**WARNING:** ``pub.kiwitcms.eu/kiwitcms/kiwi:latest`` and ``docker-compose.yml`` will
+always point to the latest available version! If you have to upgrade in steps,
+e.g. between several intermediate releases, you have to modify the above workflow::
+
+ # starting from an older Kiwi TCMS version
+ docker-compose down
+ docker pull pub.kiwitcms.eu/kiwitcms/kiwi:
+ edit docker-compose.yml to use pub.kiwitcms.eu/kiwitcms/kiwi:
+ docker-compose up -d
+ docker exec -it kiwi_web /Kiwi/manage.py migrate
+ # repeat until you have reached latest
+
+
+Happy testing!
diff --git a/content/2019-01-10-2019-mission.markdown b/content/2019-01-10-2019-mission.markdown
new file mode 100644
index 00000000..a0cdfde7
--- /dev/null
+++ b/content/2019-01-10-2019-mission.markdown
@@ -0,0 +1,303 @@
+Title: Project mission and goals for 2019
+date: 2019-01-10 10:35
+comments: true
+og_image: images/roadmap.jpg
+twitter_image: images/roadmap.jpg
+author: Alexander Todorov
+tags: community, roadmap
+
+Hello testers, Kiwi TCMS has taken on a brave new
+mission! We would like to transform the testing process by making it more
+organized, transparent & accountable for everyone on your team. Our goal
+is to improve engineering productivity and participation in
+testing. The following blog post outlines how we would like to achieve
+this and what goals we put before ourselves for this year.
+
+
+Complete the internal refactoring
+---------------------------------
+
+Last year we took on the challenge to bring a legacy code base up to modern
+coding standard. We did not complete that effort but made very good progress
+along the way. This is not a small task and that's why our team will continue
+with it this year.
+
+
+
+
+* [CodeClimate](https://codeclimate.com/github/kiwitcms/Kiwi):
+ 0 issues, 0% technical debt, health score A
+* [Scrutinizer](https://scrutinizer-ci.com/g/kiwitcms/Kiwi/):
+ only A and B type issues
+* [Pylint](https://travis-ci.org/kiwitcms/Kiwi/jobs/475946313): 0 issues
+* Remove vendored-in Handlebars, jQuery, jQuery-UI and TableDnD JavaScript
+ libraries in favor of existing npm dependencies
+* Front-end uses the existing JSON-RPC instead of backend views that
+ are only used for AJAX requests. Tip: these are usually accessed via
+ `postToURL()` and `jQ.ajax()` on the front-end
+* Inspect and classify all 3rd party issues reported from
+ [Coverity](https://scan.coverity.com/projects/kiwitcms-kiwi) and
+ [Bandit](https://travis-ci.org/kiwitcms/Kiwi/jobs/475946312). Report and fix
+ what we can, ignore the rest that do not affect Kiwi TCMS.
+
+Redesign the UI templates with the help of Patternfly
+-----------------------------------------------------
+
+There are 59 templates remaining to be converted to a modern look and feel.
+Along with them comes more refactoring and even redesign of the existing pages
+and the workflow around them. Together with refactoring this will make Kiwi TCMS
+easier to use and also to maintain.
+
+
+Modernize reporting
+-------------------
+
+We are planning to remove the existing reports feature because they are not well
+designed. We will re-implement existing functionality that our community finds useful,
+add new types of reports (incl. nicer graphics and UI) and make it possible for the
+reporting sub-system to be more easily extendable.
+
+Phase out is planned to begin after 1st March 2019! Until then we are looking for your
+feedback. Please comment in
+[Issue #657](https://github.com/kiwitcms/Kiwi/issues/657)!
+
+
+Plugins for 3rd party test automation frameworks
+------------------------------------------------
+
+These will make it easier to collect results from automated test suites into
+Kiwi TCMS for later analysis. Instead of creating scripts that parse the
+results and talk to our API you will only have to install an additional package
+in your test environment and configure the test runner to use it! Automation
+test results will then appear inside Kiwi TCMS.
+
+- [JUnit 5 plugin](https://github.com/kiwitcms/junit-plugin) - already in progress
+- [TestNG plugin](https://github.com/kiwitcms/Kiwi/issues/692) - RFC
+- [Django plugin](https://github.com/kiwitcms/Kiwi/issues/693) - RFC
+- [py.test plugin](https://github.com/kiwitcms/Kiwi/issues/694) - RFC
+
+
+If you would like to use such functionality leave your vote inside GitHub
+issues! In case you would like to write a test-runner plugin you can find the
+specification
+[here](http://kiwitcms.org/blog/atodorov/2018/11/05/test-runner-plugin-specification/).
+
+
+Redefine bug-tracker integration
+--------------------------------
+
+> Question: Does Kiwi TCMS integrate with JIRA?
+>
+> Answer: Well, it does. How exactly do you want to integrate?
+>
+> ... silence ...
+
+The following dialog happens every time someone asks me about bug-tracker
+integration, especially with JIRA. The thing is integration is a specified
+set of behavior which may or may not be desired in a particular team. As of now
+Kiwi TCMS is able to open a URL to your bug-tracker with predefined field
+values, add comments to bug reports and report a simple summary of bugs
+inside a TestRun.
+
+We recognize this may not be enough and together with the community we
+really need to define what bug tracker integration means! The broader domain
+of application lifecycle management tools (of which TCMS is a sub-set) have an
+integrated bug tracking system. We can add something like this and save you
+the trouble of using JIRA, however many teams have already invested in
+integrating their infrastructure or just like other tools. For example we love
+GitHub issues and our team regularly makes public reports about issues that
+we find internally!
+
+
+* Goal: Redefine what bug-tracker integration means, vote in
+ [Issue #698](https://github.com/kiwitcms/Kiwi/issues/698)
+* Goal: Bug-tracker functionality inside Kiwi TCMS, similar to
+ GitHub Issues. Vote in
+ [Issue #699](https://github.com/kiwitcms/Kiwi/issues/699)
+* Goal: Integration with Redmine (per current specification), vote in
+ [Issue #41](https://github.com/kiwitcms/Kiwi/issues/41)
+* Goal: fix existing bugs around bug-tracker integration
+ (per current specification). Vote in
+ [Issue #97](https://github.com/kiwitcms/Kiwi/issues/97),
+ [Issue #117](https://github.com/kiwitcms/Kiwi/issues/117),
+ [Issue #289](https://github.com/kiwitcms/Kiwi/issues/289),
+ [Issue #290](https://github.com/kiwitcms/Kiwi/issues/290),
+ [Issue #320](https://github.com/kiwitcms/Kiwi/issues/320),
+ [Issue #479](https://github.com/kiwitcms/Kiwi/issues/479) and
+ [Issue #530](https://github.com/kiwitcms/Kiwi/issues/530)
+
+
+GitHub flow integration
+-----------------------
+
+Developers have their
+[GitHub PR flow](https://guides.github.com/introduction/flow/) and if they
+have done the job of having unit tests then they will merge only when things
+are green! This leaves additional testing efforts kind of to the side and
+doesn't really help with transparency and visibility. I'm not going to mention
+having an automatically deployed staging environment for every change
+because very few teams actually have managed to do this effectively.
+
+
+
+* Goal: Figure out how Kiwi TCMS can integrate with GitHub flow and bridge the gap.
+ Please share and `+1` your wildest ideas in
+ [Issue #700](https://github.com/kiwitcms/Kiwi/issues/700).
+* Follow up: depending on the results in #700 we will follow with other goals and
+ sub-tasks
+
+
+Agile integration with Trello
+-----------------------------
+
+Speaking of modern engineering flow is your team truly agile? When and how
+do you plan your testing activities ? Before the devel sprint or afterwards?
+How many testers take part in refining product backlog and working on user stories?
+
+Similar to GitHub flow lots of teams and open source projects are using Trello
+to effectively organize their development process. Testing should not be left
+behind and Kiwi TCMS may be able to help.
+
+
+* Goal: Figure out how Kiwi TCMS fits into the overall `devel-test-planning`
+ process for agile teams and what we can do to make this easier for testers.
+ Please share and `+1` your wildest ideas in
+ [Issue #701](https://github.com/kiwitcms/Kiwi/issues/701)
+* Follow up: depending on the results in #701 we will follow with other goals and
+ sub-tasks
+
+
+
+Improve engineering productivity
+--------------------------------
+
+What makes a test engineer productive when they need to assess product risk and
+new features, when mapping product requirements documents (PRD) to test plans and
+test cases, when collaborating on user stories and behavior specification ?
+What makes developers, product owners, designers and other professionals productive
+when it comes to dealing with testing ?
+
+
+For example consider the following workflow:
+
+* Company has idea for a new product
+* In case this is a big product it may have its own mission, i.e. what kind
+ of problem is it trying to solve and for which group of customers
+* Product backlog is then created which outlines features that map
+ to the product mission
+* Then the team, together with test engineers perform example mapping
+ and discuss and refine the initial feature requirements. User stories
+ are created
+* Behavior specification may also be created
+* Test plans and test cases are the immediate product of BDD specs and
+ desired user stories
+
+Later we iterate through the sprints and for each sprint something like
+this happens:
+
+* Desired product features are planned for development. They must be *complete*
+ at least in terms of requirements, specs and tests
+* Devel writes code, maybe some unit tests, testers can also write automated tests
+ and/or manually verify the current state of the feature being developed
+* Testing, including exploratory is performed before feature is merged
+* Rinse and repeat
+
+
+Devel is also part of testing, right? Product owners, UX and interaction
+designers as well. Producing quality software product is a team effort!
+
+
+In every step of the way Kiwi TCMS can provide notification wizards, guidelines
+and/or documentation for best practices, facilitate tooling, e.g. to write user stories
+and assess them or map out an exploratory testing session, etc. The list
+of ideas is virtually endless. We can even go into deep learning, AI and
+blockchain but honestly who knows how to use them in testing ?
+
+Our team is not quite sure how this goal will look like 3 months from now
+but we are certain that testing needs to happen first, last and all the time
+during the entire software development lifecycle. By providing the necessary
+functionality and tools in Kiwi TCMS we can boost engineering productivity
+and steer the testing process in your organization into a better, more productive
+direction which welcomes participation from all engineering groups.
+
+Let's consider another point of view: testing is a creative activity
+which is benefited by putting your brain into a specific state of mind!
+For example Gherkin (the Given-When-Then language) has the benefit of
+forcing you to think about behavior and while doing so you are vocalizing
+the various roles in the system, what kind of actions are accepted and
+what sort of result is expected! Many times this will help you remember or
+discover missing scenarios, edge cases and raise even more questions!
+
+
+Crazy ideas, brain dumps and `+1` as always are welcome in
+[Issue #703](https://github.com/kiwitcms/Kiwi/issues/703).
+
+
+Community
+---------
+
+Coding alone is not fun! Here's what you can do to help us:
+
+* [Become a stargazer](https://github.com/kiwitcms/Kiwi/stargazers) by clicking the
+ `Star` button on our GitHub repository
+* [Follow @KiwiTCMS on Twitter](https://twitter.com/KiwiTCMS)
+* [Subscribe to our newsletter](https://kiwitcms.us17.list-manage.com/subscribe/post?u=9b57a21155a3b7c655ae8f922&id=c970a37581) -
+ we are GDPR compliant and we don't spam, we promise!
+* Vote with a `+1` reaction on GitHub issues (top-right corner)
+* Send us testimonials and feedback about using Kiwi TCMS.
+ We will be happy to publish them on our website
+* Send us a pull request on GitHub
+* [Become a sponsor](https://opencollective.com/kiwitcms)!
+
+
+We are also looking to expand our core team and the list of occasional
+contributors. The following are mostly organizational goals:
+
+* Goal: participate in 5 conferences with a project stand
+* Goal: define how we find, recruit and onboard new team members. The
+ foundation is already set in
+ [TP-3](https://tcms.kiwitcms.org/plan/3/kiwi-tcms-team-onboarding#testcases)
+* Goal: clearly mark GitHub issues which are suitable for external contributors
+ which donât want to spend lots of time learning how Kiwi TCMS works under the hood.
+ We're going to tag all such issues with the
+
+
+ label
+
+
+Development policy
+------------------
+
+Our team will be working on areas related to the goals above. A `+1`
+reaction on GitHub issues will help us prioritize what we work on!
+
+
+
+Bug fixes and other
+issues will be occasionally slipped into the stream and pull requests from
+non-team contributors will be reviewed and merged in a timely fashion.
+
+There is at least 1 full day of work that goes behind the scenes when
+a new version is officially released: compile changelog, build images and
+upload them, create blog post and newsletter announcement, share on social
+media, etc. We also deploy on our own Kiwi TCMS instance as a stop-gap
+measure before making everything public!
+
+New PyPI tarballs and Docker images will be released every few weeks as
+we see fit, this has been our standard process. We try to align releases
+with Django's release schedule and try to cut a new version when there are known
+security vulnerabilities fixed. However we can't guarantee this will always
+be the case!
+
+If you are in a hurry and need something quickly the best option is to
+send a pull request, build your own Docker image from source and
+maybe consider
+[sponsoring us via Open Collective](https://opencollective.com/kiwitcms)!
+
+
+
+Happy testing!
diff --git a/content/2019-01-18-2019-fosdem.markdown b/content/2019-01-18-2019-fosdem.markdown
new file mode 100644
index 00000000..4684c304
--- /dev/null
+++ b/content/2019-01-18-2019-fosdem.markdown
@@ -0,0 +1,53 @@
+Title: Kiwi TCMS is going to FOSDEM 2019
+date: 2019-01-17 17:30
+comments: true
+og_image: images/kiwi_socks.jpg
+twitter_image: images/kiwi_socks.jpg
+tags: community, events
+
+Hello testers, Kiwi TCMS is going to [FOSDEM](http://fosdem.org/) this year.
+This is where you can find us:
+
+
+
+* Fri Feb 1st: [after 18:00 @ Delirium Café](https://fosdem.org/2019/beerevent/) -
+ we are taking part of the FOSDEM Beer Event where all participants are invited.
+ `Shout out with #KiwiTCMS` on Twitter if you can't find us in the crowd
+* Both days: [Building K, Level 2, Stand 10](https://fosdem.org/2019/stands/).
+ We will be together with our friends from ReportPortal and SystemTestPortal at
+ the Open Source Test Management stand
+* Sat Feb 2nd:
+ [18:00 @ Room H.2215 (Lightning Talks)](https://fosdem.org/2019/schedule/track/lightning_talks/) -
+ [10 years of open source test case management *with Kiwi TCMS*](https://fosdem.org/2019/schedule/event/test_case_management/)
+ lightning talk
+* Sun Feb 3rd:
+ [10:00 @ UD2.120 (Python devroom)](https://fosdem.org/2019/schedule/track/python/) -
+ [How to write pylint plugins](https://fosdem.org/2019/schedule/event/python_write_pylint_plugins/)
+ presentation with examples of plugins which our team uses to make Kiwi TCMS better
+
+We would like to meet with all of you and talk about test management and
+test process organization. In case you are stuck for crazy ideas checkout
+[our project mission]({filename}2019-01-10-2019-mission.markdown) for inspiration.
+
+Be part of the community
+------------------------
+
+We are turning 10 years old and we have presents for you! You will have to perform
+a small challenge and you can get your hands(errr, feet) on a pair of these:
+
+
+
+Here's what else you can do to help us:
+
+* [Become a stargazer](https://github.com/kiwitcms/Kiwi/stargazers) by clicking the
+ `Star` button on our GitHub repository
+* [Follow @KiwiTCMS on Twitter](https://twitter.com/KiwiTCMS)
+* [Subscribe to our newsletter](https://kiwitcms.us17.list-manage.com/subscribe/post?u=9b57a21155a3b7c655ae8f922&id=c970a37581) -
+ we are GDPR compliant and we don't spam, we promise!
+* Send us testimonials and feedback about using Kiwi TCMS.
+ We will be happy to publish them on our website
+* [Become a sponsor](https://opencollective.com/kiwitcms)!
+
+Happy testing!
diff --git a/content/2019-02-01-version-6.5.rst b/content/2019-02-01-version-6.5.rst
new file mode 100644
index 00000000..0db6435f
--- /dev/null
+++ b/content/2019-02-01-version-6.5.rst
@@ -0,0 +1,214 @@
+Kiwi TCMS 6.5
+#############
+
+:headline: improvements and bug fixes, automation plugins
+:date: 2019-02-01 09:35
+:comments: true
+:tags: releases
+
+
+We're happy to announce Kiwi TCMS version 6.5! This is a minor security,
+improvement and bug-fix update that includes new
+versions of Django and other dependencies, removes some database fields,
+includes backend API updates and fixes several bugs.
+You can explore everything at
+`https://public.tenant.kiwitcms.org `_!
+
+
+Together with this release we announce:
+
+* `kiwitcms-tap-plugin `_ : for reading
+ Test Anything Protocol (TAP) files and uploading the results to Kiwi TCMS
+* `kiwitcms-junit.xml-plugin `_ :
+ for reading junit.xml formatted files and uploading the results to Kiwi TCMS
+
+Both of these are implemented in Python and should work on standard TAP and
+junit.xml files generated by various tools!
+
+Additionally 3 more plugins are currently under development by contributors:
+
+* Native `JUnit 5 plugin `_ written
+ in Java
+* Native `PHPUnit `_ written
+ in PHP
+* `py.test plugin `_
+
+
+
+Supported upgrade paths::
+
+ 5.3 (or older) -> 5.3.1
+ 5.3.1 (or newer) -> 6.0.1
+ 6.0.1 -> 6.1
+ 6.1 -> 6.1.1
+ 6.1.1 -> 6.2 (or newer)
+
+
+Docker images::
+
+ pub.kiwitcms.eu/kiwitcms/kiwi latest 7ca4fda602fc 1.002 GB
+ pub.kiwitcms.eu/kiwitcms/kiwi 6.2 7870085ad415 957.6 MB
+ pub.kiwitcms.eu/kiwitcms/kiwi 6.1.1 49fa42ddfe4d 955.7 MB
+ pub.kiwitcms.eu/kiwitcms/kiwi 6.1 b559123d25b0 970.2 MB
+ pub.kiwitcms.eu/kiwitcms/kiwi 6.0.1 87b24d94197d 970.1 MB
+ pub.kiwitcms.eu/kiwitcms/kiwi 5.3.1 a420465852be 976.8 MB
+
+
+Changes since Kiwi TCMS 6.4
+---------------------------
+
+Security
+~~~~~~~~
+
+- Better override of SimpleMDE markdown rendering to prevent XSS vulnerabilities
+ in SimpleMDE
+
+
+Improvements
+~~~~~~~~~~~~
+
+- Update patternfly to version 3.59.1
+- Update bleach from 3.0.2 to 3.1.0
+- Update django-vinaigrette from 1.1.1 to 1.2.0
+- Update django-simple-history from 2.6.0 to 2.7.0
+- Update django-grappelli from 2.12.1 to 2.12.2
+- Update mysqlclient from 1.3.14 to 1.4.1
+- Update psycopg2 from 2.7.6.1 to 2.7.7
+- Update pygithub from 1.43.4 to 1.43.5
+- Convert TestCase page to Patternfly
+
+ - page menu is under ``...`` in navigation bar
+ - Test plans card is missing the old 'add plan' functionality b/c we are not
+ at all sure if adding plans to test cases is used at all. Can bring it back
+ upon user request!
+ - Bugs card is missing the add/remove functionality for b/c we are not
+ quite sure how that functionality is used outside test runs!
+- Convert new TestCase page to Patternfly and provide Given-When-Then text
+ template. This prompts the author to use a BDD style definition for their
+ scenarios. We believe this puts the tester into a frame of mind more
+ suitable for expressing what needs to be tested
+- Add a favicon. Fixes
+ `Issue #532 `_
+- Sort Component, Product and Version objects alphabetically. Fixes
+ `Issue #633 `_
+- Search test case page now shows Components and Tags
+- Search test case page now allows filtering by date. Fixes
+ `Issue #715 `_
+- Search test case page now uses radio buttons to filter by automation status
+- Small performance improvement when searching test plans and test cases
+- Search test run page now allows to filter by Product but still continue to
+ display all Builds in the selected Product
+- Updated doc-string formatting for some ``tcms`` modules
+
+
+Database migrations
+~~~~~~~~~~~~~~~~~~~
+
+**Known issues:** on our demo installation we have observed that permission
+labels were skewed after applying migrations. The symptom is that labels for
+removed models are still available, labels for some models may have been removed
+from groups/users or there could be permission labels appearing twice in the
+database.
+
+This may affect only existing installations, new installations do not have
+this problem!
+
+We are not certain what caused this but a quick fix is to remove all permissions
+from the default *Tester* group and re-add them again!
+
+- Remove ``TestCase.alias``
+- Remove ``TestCaseRun.running_date``
+- Remove ``TestCaseRun.notes``
+- Remove ``TestCase.is_automated_proposed``
+- Remove ``TestCaseText`` model, merge into ``TestCase.text`` field. Closes
+ `Issue #198 `_
+- Remove ``Priority.sortkey``
+- Remove ``Build.description``
+- Remove ``Classification.sortkey`` and ``Classification.description``
+- Convert ``TestCase.is_automated`` from ``int`` to ``bool``
+- Rename ``TestCaseRun.case_run_status`` to ``status``
+
+
+API
+~~~
+
+- New method ``TestCaseRunStatus.filter()``
+- New method ``Product.create()``
+- New method ``Classification.filter()``
+- New method ``BugSystem.filter()``
+- Changes to ``TestCase.add_component()``:
+
+ - now accepts component name instead of id
+ - now fails if trying to add components linked to another Product.
+ - now returns serialized ``TestCase`` object
+
+
+Translations
+~~~~~~~~~~~~
+
+- Updated `French translation `_
+- Updated `Slovenian translation `_
+
+Bug fixes
+~~~~~~~~~
+
+- Fix for missing migrations from ``django-simple-history``, see
+ `DSH #512 `_ and
+ `StackOverflow #54177838 `_
+- Fix cloning of test cases by surrounding bootstrap-selectpicker call with
+ ``try-catch``. Fixes
+ `Issue #695 `_
+- Fix a traceback with TestRun report page when the RPC connection to Bugzilla
+ can't be established
+
+
+Refactoring
+~~~~~~~~~~~
+
+- Remove unused form classes, methods, fields and label attributes
+- Remove unused or duplicate methods from ``TestCase`` model
+- Remove useless methods from BaseCaseForm()
+- Add test for discovering missing migrations
+- Add test for sanity checking PyPI packages which will always
+ build tarball and wheel packages
+
+tcms-api 5.2 (30 Jan 2019)
+--------------------------
+
+- Add ``plugin_helpers.Backend`` which implements our test runner plugin
+ `specification `_
+ in Python
+- Add dependency to ``kerberos`` (Aniello Barletta)
+
+
+
+How to upgrade
+---------------
+
+If you are using Kiwi TCMS as a Docker container then::
+
+ cd Kiwi/
+ git pull
+ docker-compose down
+ docker pull pub.kiwitcms.eu/kiwitcms/kiwi
+ docker pull centos/mariadb
+ docker-compose up -d
+ docker exec -it kiwi_web /Kiwi/manage.py migrate
+
+Don't forget to `backup <{filename}2018-07-30-docker-backup.markdown>`_
+before upgrade!
+
+**WARNING:** ``pub.kiwitcms.eu/kiwitcms/kiwi:latest`` and ``docker-compose.yml`` will
+always point to the latest available version! If you have to upgrade in steps,
+e.g. between several intermediate releases, you have to modify the above workflow::
+
+ # starting from an older Kiwi TCMS version
+ docker-compose down
+ docker pull pub.kiwitcms.eu/kiwitcms/kiwi:
+ edit docker-compose.yml to use pub.kiwitcms.eu/kiwitcms/kiwi:
+ docker-compose up -d
+ docker exec -it kiwi_web /Kiwi/manage.py migrate
+ # repeat until you have reached latest
+
+
+Happy testing!
diff --git a/content/2019-02-12-version-6.5.3.rst b/content/2019-02-12-version-6.5.3.rst
new file mode 100644
index 00000000..64c9184b
--- /dev/null
+++ b/content/2019-02-12-version-6.5.3.rst
@@ -0,0 +1,128 @@
+Kiwi TCMS 6.5.3
+###############
+
+:headline: security, improvements and bug fixes
+:date: 2019-02-12 00:20
+:comments: true
+:tags: releases
+
+We're happy to announce Kiwi TCMS version 6.5.3! This is a
+security, improvement and bug-fix update that includes new
+versions of Django, includes several database migrations and fixes several bugs.
+You can explore everything at
+`https://public.tenant.kiwitcms.org `_!
+
+Supported upgrade paths::
+
+ 5.3 (or older) -> 5.3.1
+ 5.3.1 (or newer) -> 6.0.1
+ 6.0.1 -> 6.1
+ 6.1 -> 6.1.1
+ 6.1.1 -> 6.2 (or newer)
+
+
+Docker images::
+
+ pub.kiwitcms.eu/kiwitcms/kiwi latest b9355cf85833 1.039 GB
+ pub.kiwitcms.eu/kiwitcms/kiwi 6.2 7870085ad415 957.6 MB
+ pub.kiwitcms.eu/kiwitcms/kiwi 6.1.1 49fa42ddfe4d 955.7 MB
+ pub.kiwitcms.eu/kiwitcms/kiwi 6.1 b559123d25b0 970.2 MB
+ pub.kiwitcms.eu/kiwitcms/kiwi 6.0.1 87b24d94197d 970.1 MB
+ pub.kiwitcms.eu/kiwitcms/kiwi 5.3.1 a420465852be 976.8 MB
+
+
+Changes since Kiwi TCMS 6.5
+---------------------------
+
+Security
+~~~~~~~~
+
+- Update Django from 2.1.5 to 2.1.7. Fixes CVE-2019-6975:
+ Memory exhaustion in ``django.utils.numberformat.format()``
+
+
+Improvements
+~~~~~~~~~~~~
+
+- Update mysqlclient from 1.4.1 to 1.4.2
+- Multiple template strings marked as translatable (Christophe CHAUVET)
+
+
+Database migrations
+~~~~~~~~~~~~~~~~~~~
+
+- Email notifications for TestPlan and TestCase now default to True
+- Remove ``TestPlanEmailSettings.is_active`` field
+
+
+API
+~~~
+
+- New method ``Bug.report()``, References
+ `Issue #18 `_
+- Method ``Bug.create()`` now accepts parameter ``auto_report=False``
+
+Translations
+~~~~~~~~~~~~
+
+- Updated `German translation `_
+- Updated `French translation `_
+- Updated `Slovenian translation `_
+
+
+Bug fixes
+~~~~~~~~~
+
+- Show the user who actually tested a TestCase instead of hard-coded value. Fixes
+ `Issue #765 `_
+- Properly handle pagination button states and page numbers. Fixes
+ `Issue #767 `_
+- Add TestCase to TestPlan if creating from inside a TestPlan. Fixes
+ `Issue #777 `_
+- Made TestCase text more readable. Fixes
+ `Issue #764 `_
+- Include missing templates and static files from PyPI tarball
+
+
+Refactoring
+~~~~~~~~~~~
+
+- Use ``find_packages()`` when building PyPI tarball
+- Install Kiwi TCMS as tarball package inside Docker image instead of copying
+ from the source directory
+- Pylint fixes
+- Remove ``testcases.views.ReturnActions()`` which is now unused
+- Refactor New TestCase to class-based view and add tests
+
+
+
+How to upgrade
+---------------
+
+If you are using Kiwi TCMS as a Docker container then::
+
+ cd Kiwi/
+ git pull
+ docker-compose down
+ docker pull pub.kiwitcms.eu/kiwitcms/kiwi
+ docker pull centos/mariadb
+ docker-compose up -d
+ docker exec -it kiwi_web /Kiwi/manage.py migrate
+
+Don't forget to `backup <{filename}2018-07-30-docker-backup.markdown>`_
+before upgrade!
+
+**WARNING:** ``pub.kiwitcms.eu/kiwitcms/kiwi:latest`` and ``docker-compose.yml`` will
+always point to the latest available version! If you have to upgrade in steps,
+e.g. between several intermediate releases, you have to modify the above workflow::
+
+ # starting from an older Kiwi TCMS version
+ docker-compose down
+ docker pull pub.kiwitcms.eu/kiwitcms/kiwi:
+ edit docker-compose.yml to use pub.kiwitcms.eu/kiwitcms/kiwi:
+ docker-compose up -d
+ docker exec -it kiwi_web /Kiwi/manage.py migrate
+ # repeat until you have reached latest
+
+
+Happy testing!
diff --git a/content/2019-02-22-how-to-use-kiwitcms-plugins-pt1.markdown b/content/2019-02-22-how-to-use-kiwitcms-plugins-pt1.markdown
new file mode 100644
index 00000000..cf921abe
--- /dev/null
+++ b/content/2019-02-22-how-to-use-kiwitcms-plugins-pt1.markdown
@@ -0,0 +1,282 @@
+Title: How to use Kiwi TCMS plugins, Pt. 1
+headline: to import results from automated tests
+date: 2019-02-22 15:10
+comments: true
+author: Alexander Todorov
+og_image: images/plugins.png
+twitter_image: images/plugins.png
+tags: community, plugins
+
+In
+[release notes for v6.5]({filename}2019-02-01-version-6.5.rst)
+we announced several plugins which will fetch test names and execution results
+from your automated test suite.
+
+Plugins can be controlled via environment variables which will affect how
+test results are recorded in the Kiwi TCMS database! This blog post is an introduction
+how that works and what you can do with it! For this purpose I will be using the
+[plugin-demo](https://github.com/kiwitcms/plugin-demo) repository, which simulates
+real development work.
+
+*Full documentation and list of available plugins is available in chapter
+[Automation Frameworks Plugins](https://kiwitcms.readthedocs.io/en/latest/plugins.html)!*
+
+Always create new TestRun by default
+------------------------------------
+
+The default behavior is always to create a new TestRun if controlling variables
+are not overridden! Product name, version and build will receive default values
+if tests are running in Travis CI or Jenkins. For example
+[Travis Build #2](https://travis-ci.org/kiwitcms/plugin-demo/builds/496217246) for
+[commit d455fb4](https://github.com/kiwitcms/plugin-demo/commit/d455fb42fb7c2aedadfd5f66de7d131109c03350)
+creates [TR-12](https://tcms.kiwitcms.org/runs/12/) and
+[TP-10](https://tcms.kiwitcms.org/plan/10/)!
+
+```
+Product=kiwitcms/plugin-demo
+Version=d455fb42fb7c2aedadfd5f66de7d131109c03350
+Build=2
+```
+
+Next we convert the README file from Markdown to reStructuredText which triggers
+[Travis Build #3](https://travis-ci.org/kiwitcms/plugin-demo/builds/496220575) for
+[commit 418b80b](https://github.com/kiwitcms/plugin-demo/commit/418b80b3bbb65a799f695dc59d488c76f560fa2b).
+This build **again** creates a new TestRun and new TestPlan for it. Respectively
+[TR-14](https://tcms.kiwitcms.org/runs/14/) and
+[TP-12](https://tcms.kiwitcms.org/plan/12/)!
+
+```
+Product=kiwitcms/plugin-demo
+Version=418b80b3bbb65a799f695dc59d488c76f560fa2b
+Build=3
+```
+
+**Important:** we can see that version is different which will affect how artifacts
+are organized in Kiwi TCMS, possibly affect how you will report status to stakeholders!
+
+
+Override ENV variables for more control
+---------------------------------------
+
+Let's say the QA team has decided that all test results must be reported under the
+same TestPlan. This means version must be the same between various builds in Travis CI!
+To control this we export `TCMS_PRODUCT_VERSION=master` in CI **before** executing
+the TAP plugin! Checkout the commit on GitHub to see how it is done!
+
+This triggers
+[Travis Build #4](https://travis-ci.org/kiwitcms/plugin-demo/builds/496223505) for
+[commit e484e59](https://github.com/kiwitcms/plugin-demo/commit/e484e59023caf665e8f93341395af6f397691b93).
+Because this is the first time where Version == master the plugin creates
+[TP-14](https://tcms.kiwitcms.org/plan/14/) and reports the results under
+[TR-16](https://tcms.kiwitcms.org/runs/16/).
+
+```
+Product=kiwitcms/plugin-demo
+Version=master
+Build=4
+```
+
+Right after that I realized we can make this configuration a bit more generic
+because our team is planning to support multiple versions of the product and
+development will be done in separate branches!
+[Travis Build #5](https://travis-ci.org/kiwitcms/plugin-demo/builds/496228021) for
+[commit f1f2878](https://github.com/kiwitcms/plugin-demo/commit/f1f2878d80a7327b54c8e33d1c6d6f14153d6d12)
+still ends up with Version == master because we are still working on the `master`
+branch! That is to say, the product is in active mode of development.
+
+Results are reported in
+[TR-18](https://tcms.kiwitcms.org/runs/18/) which is again part of
+[TP-14](https://tcms.kiwitcms.org/plan/14/).
+
+```
+Product=kiwitcms/plugin-demo
+Version=master
+Build=5
+```
+
+[Travis Build #6](https://travis-ci.org/kiwitcms/plugin-demo/builds/496229819) for
+[commit df6153b](https://github.com/kiwitcms/plugin-demo/commit/df6153b2495bfc6825f25e544ae1806108aa490f)
+adds the new functionality *README badges* and reports test results in
+[TR-20](https://tcms.kiwitcms.org/runs/20/) which is again part of
+[TP-14](https://tcms.kiwitcms.org/plan/14/).
+
+
+More ENV overrides
+------------------
+
+While giving status reports back to stakeholders and developers the information that
+we have in the TestRun is Build number! This follows the numbering scheme in Travis CI
+(or Jenkins job number) and isn't very useful.
+
+Let's define `TCMS_BUILD` to be the first 7 characters of the commit hash! When QA
+tells devel that something isn't working and redirects them to the TestRun they can
+immediately use the Build information and git checkout the offending variant of the product
+for investigation.
+
+This results in
+[Travis Build #7](https://travis-ci.org/kiwitcms/plugin-demo/builds/496233565) for
+[commit bf75d0a](https://github.com/kiwitcms/plugin-demo/commit/bf75d0abe9695e3ee3b49b8944bab9db43bb25e6),
+[TR-22](https://tcms.kiwitcms.org/runs/22/),
+[TP-14](https://tcms.kiwitcms.org/plan/14/).
+
+```
+Product=kiwitcms/plugin-demo
+Version=master
+Build=bf75d0a
+```
+
+
+Report results in pre-existing TestRun
+--------------------------------------
+
+There are many reasons you may want to do this:
+
+* include both manual and automation tests for the same build;
+* mix results from multiple test suites for the same build,
+ e.g. unit, functional, performance
+* mix results from multiple but similar platforms in the same build,
+ e.g. cross-platform application for iOS and Android
+
+To do so I've created [TR-24](https://tcms.kiwitcms.org/runs/24/) beforehand and
+configured `TCMS_RUN_ID=24` in my CI environment. TR-24 also contains
+[TC-57: Verify we can report results from several plugins into the same TR](https://tcms.kiwitcms.org/case/57/).
+this was created and added via the web interface.
+
+**Note:** mixing additional test cases can be done either before or after
+automation results are reported with the plugin!
+
+**Important:** when reporting results to an existing TestRun Kiwi TCMS plugins
+don't care in which TestPlan this TR is! In theory it is possible to report
+the results for `Product=kiwitcms/plugin-demo` into any TP/TR pair! However we
+don't want to do this crazy thing and instead I've created TR-24 inside the already
+existing TP-14!
+
+**Note:** because I don't know what is the git commit beforehand I've configured
+TR-24 with `Build=unspecified`. If I wanted I could update this with the correct value
+once I know the commit hash for the related changes I am testing.
+
+**Important:** the plugin-demo repository uses both kiwitcms-tap-plugin and
+kiwitcms-junit.xml-plugin at the same time! They differ in the way test names
+are compiled! Both are reported in TR-24. See TC-57 text for information how to
+distinguish between the two.
+
+See
+[Travis Build #8](https://travis-ci.org/kiwitcms/plugin-demo/builds/496237911) for
+[commit 85ad939](https://travis-ci.org/kiwitcms/plugin-demo/builds/496237911),
+[TR-24](https://tcms.kiwitcms.org/runs/24/),
+[TP-14](https://tcms.kiwitcms.org/plan/14/).
+
+```
+Product=kiwitcms/plugin-demo
+Version=master
+Build=unspecified
+```
+
+Also check-out comments in TR executions to see when and who had executed the test case.
+
+So far there have been some tests which were failing (although Travis reports PASS) so
+I decided to fix them.
+[Travis Build #9](https://travis-ci.org/kiwitcms/plugin-demo/builds/496240713) for
+[commit a25b384](https://github.com/kiwitcms/plugin-demo/commit/a25b3841e656d47a7539c608e375cecbf3bed2ac)
+is still configured with `TCMS_RUN_ID=24`. This means results will be reported in
+TR-24, effectively overwriting previous results.
+
+Check-out *Change Log* under each individual execution and you will see several
+time stamps when status was updated! In other words, as long as `TCMS_RUN_ID` is
+pointing to an existing TestRun this TR will keep the results of the last test suite execution!
+
+
+Continue development, restore ENV configuration
+-----------------------------------------------
+
+[Travis Build #10](https://travis-ci.org/kiwitcms/plugin-demo/builds/496243124) for
+[commit c4f1ae5](https://github.com/kiwitcms/plugin-demo/commit/c4f1ae5ecadb249d39923cedbbf53a85e50420b3)
+removes `TCMS_RUN_ID`! Results are reported in
+[TR-25](https://tcms.kiwitcms.org/runs/25/),
+[TP-14](https://tcms.kiwitcms.org/plan/14/).
+
+```
+Product=kiwitcms/plugin-demo
+Version=master
+Build=c4f1ae5
+```
+
+Branch out for an LTS version
+-----------------------------
+
+Our team has decided to make the first LTS release of the product. We branch out into
+`lts-v0` branch in git and cut the first NVR. This results in
+[Travis Build #11](https://travis-ci.org/kiwitcms/plugin-demo/builds/496245067) for
+[commit 9f1ef71](https://github.com/kiwitcms/plugin-demo/commit/9f1ef717e3fb248d65535ed66b5c4e61e6f85a6e)
+[TR-27](https://tcms.kiwitcms.org/runs/27/),
+[TP-16](https://tcms.kiwitcms.org/plan/16/).
+
+```
+Product=kiwitcms/plugin-demo
+Version=lts-v0
+Build=9f1ef71
+```
+
+Because this is the first time we are running tests for this product version
+we end up with the newly created TP-16!
+
+**Note:** see how version was populated with the correct value for the git branch!
+This is because my CI config uses `TCMS_PRODUCT_VERSION=$TRAVIS_BRANCH` and no further
+changes were required! I made this change back in Travis Build #5 anticipating what
+will come in the future!
+
+
+The product is now live and customers have reported critical bugs for it:
+*URLs for the badges in README are wrong*! I fix those and add more tests of course, see:
+[Travis Build #12](https://travis-ci.org/kiwitcms/plugin-demo/builds/496247347) for
+[commit 2d72754](https://github.com/kiwitcms/plugin-demo/commit/2d72754d3f911ef4e25287f203471f4466b95d12),
+[TR-29](https://tcms.kiwitcms.org/runs/29/) for
+[TP-16](https://tcms.kiwitcms.org/plan/16/).
+
+```
+Product=kiwitcms/plugin-demo
+Version=lts-v0
+Build=2d72754
+```
+
+TR-29 contains the new [TC-58](https://tcms.kiwitcms.org/case/58/)!
+
+
+cherry-pick between branches
+----------------------------
+
+In the `lts-v0` branch customers have identified a serious issue. It doesn't exist on `master`
+but the test is still valid so I cherry-pick it! In git you can backport or forwardport very
+easily. Regardless of the direction Kiwi TCMS plugins will record the test results for you.
+
+See
+[Travis Build #13](https://travis-ci.org/kiwitcms/plugin-demo/builds/496252529) for
+[commit 31ae5b3](https://github.com/kiwitcms/plugin-demo/commit/31ae5b3358137fde7d2b5c3656b384acc7331d95),
+[TR-31](https://tcms.kiwitcms.org/runs/31/) for
+[TP-14](https://tcms.kiwitcms.org/plan/14/).
+
+We can see that TC-58, which was originally implemented on the `lts-v0` branch
+is now present!
+
+
+Summary
+-------
+
+This is a very basic example of how you can organize collection and reporting for
+your automation test suite results with Kiwi TCMS. The links here only refer to
+artifacts created by `kiwitcms-tap-plugin` while in the DB we keep others as well.
+
+There are feature requests for more ENV variables which will allow you to control
+TestPlan creation and child/parent relationship between test plans. See
+ and vote with a `:+1:` reaction
+to help us plan for these features.
+
+Kiwi TCMS automation framework plugins are nothing more than result parsers
+which talk back to a database. It is up to you to decide how to organize the
+collection of test results and how to report on them later, when the need arises.
+
+Future installments in this post series will take a look at workflows with
+feature branches and pull requests and discuss possible organization scenarios.
+You are welcome to share your ideas in the comments below.
+
+Happy testing!
diff --git a/content/2019-03-02-want-to-hack-open-source.markdown b/content/2019-03-02-want-to-hack-open-source.markdown
new file mode 100644
index 00000000..43b1399e
--- /dev/null
+++ b/content/2019-03-02-want-to-hack-open-source.markdown
@@ -0,0 +1,151 @@
+Title: Want to hack open source ?
+headline: Kiwi TCMS is looking for contributors
+date: 2019-03-02 19:40
+comments: true
+og_image: images/team/hiring.png
+twitter_image: images/team/hiring.png
+tags: community, team
+
+
+
+Have you ever wanted to be part of an open source team?
+Have you ever wanted to contribute back the open source community ?
+Have you ever wanted to see your code used by thousands of people ?
+
+If yes now you have the opportunity! Read on to learn how you can help
+Kiwi TCMS and how our team can help you.
+
+
+Inexperienced Python developer(s)
+---------------------------------
+
+It is fine not to have any experience at all! You will compensate with
+commitment and hard work. Initially you are going to work on refactoring,
+cleaning up pylint errors, removing duplicate code and other issues
+reported by [CodeClimate](https://codeclimate.com/github/kiwitcms/Kiwi).
+
+By doing this you will have the opportunity to learn git, Python, Django,
+some CSS, JavaScript and Patternfly HTML of course. We are going to provide
+you with all the learning materials plus help and guidance from existing team members.
+
+Everyone on the team has gone though the same training procedure and grueling tasks
+and so will you! Once you can demonstrate progress and learn the ropes you
+will continue working on more complicated tasks.
+
+
+Experienced Python developer(s)
+-------------------------------
+
+So you have some experience already, you've probably contributed code before and are
+now looking for more green stripes on your GitHub profile. We've got you covered!
+
+There are many areas to choose from: issue tracker integration, GitHub integration,
+GitLab integration, external API library, Kiwi TCMS plugins written in Python and
+customized pylint linters! This is going to be where you get your hands dirty and
+show your strengths. Our team is here to help if necessary but we expect you to
+show progress by yourself.
+
+A challenge for you will be to review pull requests from other contributors and
+be patient with less experienced contributors and team members. This is an excellent
+opportunity to work on your people skills as well.
+
+
+Experienced non-Python developer(s) (with Java)
+-----------------------------------------------
+
+Kiwi TCMS is primarily looking for Java developers who will own our test automation
+plugins. Currently we have a plugin for JUnit 5 and TestNG is in planning. Maybe
+there will be a plugin for Jenkins as well. You are going to own these components
+and work solely on them. Unless you decide to learn Python and Django that would
+be a very easy job!
+
+.NET, PHP, Ruby, JavaScript ? We don't have a lot of code written in these languages
+but you can help change this. The main thing we'd like you to know
+(or become familiar with) are the internals of popular test automation frameworks
+for these languages and how to create plugins for them.
+
+
+QA engineer with Python
+-----------------------
+
+You are going to test a lot! You are going to write test automation a lot! Ideally you
+already have a medium level of experience in the software testing field and
+want to improve your coding skills and/or get more experience into a different
+application domain. We also have Linux and Docker in the mix, just for fun!
+
+Your responsibility will be to design test scenarios for various features (new or existing),
+write test automation scripts and help improve overall test coverage and quality
+of Kiwi TCMS. You will also check-in on non-Python developers and
+help them with test design when necessary.
+
+
+There are other things that can be tested as well, for example Kiwi TCMS
+performance and scalability. Here you will have to get down to the nitty-gritty
+stuff and do some profiling to pin-point where the root cause of the problem is.
+
+
+Security freak
+--------------
+
+We've got [Coverity scan](https://scan.coverity.com/projects/kiwitcms-kiwi) and
+[Snyk](https://snyk.io/test/github/kiwitcms/Kiwi) automatically inspecting our
+code base. We do have some other tools as well and we know they can never be enough.
+
+You will be responsible for triaging the numerous issues being reported by these
+tools and help us decide if they are a real threat or a false positive. For example
+Coverity reports hundreds of issues mostly coming from our Python and Node.js dependency
+stack. We haven't had the time to classify them and work with upstream communities
+to fix them thus the majority of your contributions will be outside of the
+Kiwi TCMS code base.
+
+Graphics designer
+-----------------
+
+Your main job is going to be creating beautiful images for our website,
+blog posts and promotional material. All the images we use are licensed under
+Creative Commons which we then modify with the specific Kiwi TCMS look and
+feel. This is not going to change, your work will remain under a permissive
+license!
+
+
+Marketing specialist
+--------------------
+
+You will be directly responsible for driving more traffic to our website,
+interpreting Google Analytics metrics and coming up with creative ideas
+how to boost Kiwi TCMS popularity. This means, but not limited to blog posts,
+collaborations with other projects and/or bloggers, professional magazines, etc.
+You will also be in charge of events and conferences that we go to! Whenever
+possible you will be coming with us as well!
+
+A challenge for you will be to learn some technical jargon and learn more
+about the software testing profession and software testers in general!
+
+
+What's in it for you ?
+----------------------
+
+You will sharpen your skills! You will use Kiwi TCMS as a platform to
+improve your career. You will experience the gratification of our community of users.
+
+This blog is the medium where you can share tips
+and tricks and technical articles about interesting features in Kiwi TCMS.
+If you'd rather have your personal blog working on Kiwi TCMS will give you lots
+of topics to write about.
+
+We go to conferences and meetups too. If public speaking is your thing
+you will have plenty of topics to talk about. We can also help you
+deliver your first presentation! Everyone on the team has done it!
+
+Our existing team will help you learn and we will help you grow. Our personal time
+is the most expensive item we can offer to you! In return we expect you to
+fulfill your commitments and when you promise something will be done you will
+make sure it is done!
+
+
+How to apply ?
+--------------
+
+You can figure this out yourself.
+
+Happy testing!
diff --git a/content/2019-03-03-telemetry.markdown b/content/2019-03-03-telemetry.markdown
new file mode 100644
index 00000000..b202ea53
--- /dev/null
+++ b/content/2019-03-03-telemetry.markdown
@@ -0,0 +1,276 @@
+Title: Legacy reports become Telemetry
+headline: here's what is going to change
+date: 2019-03-03 21:27
+comments: true
+og_image: images/telemetry/social_image.png
+twitter_image: images/telemetry/social_image.png
+
+As we've [promised]({filename}2019-01-10-2019-mission.markdown) Kiwi TCMS is
+starting work on improving the legacy reports functionality.
+After analyzing your feedback in
+[Issue #657](https://github.com/kiwitcms/Kiwi/issues/657) here's what we came up
+with. *Note: screenshots below are mockups.*
+
+
+General tech specs
+------------------
+
+* Once a self-contained tarball is installed inside the Docker image (or inside local virtualenv)
+ Kiwi TCMS will be able to find it automatically and update the menu options. Aka plugins.
+ No further configuration should be necessary other than providing the source code implementing
+ the new functionality
+* Navigation menu will be able to support several layers of menus
+* Where possible Telemetry pages will reuse existing HTML templates
+* Telemetry data will be implemented as an RPC method that can be consumed by the front-end
+ via JSON-RPC
+* Charts will be rendered in the browser with c3/d3,
+ see [Data Visualization](https://www.patternfly.org/pattern-library/data-visualization/area-chart/)
+
+
+Feature: Rename TestCaseRun to TestExecution
+--------------------------------------------
+
+Inside Kiwi TCMS the term "test case" is used to refer to specific scenario of
+testing steps. A "test run" is the collection of multiple "test cases" which
+will be executed against a particular product build and environment.
+
+The specific results are kept into what is now called "test case run". This will
+be renamed to "test execution" (internally `TestExecution` class) to make it more
+clear and easier to distinguish among other artifacts.
+
+
+Feature: Better color coding for test execution status
+------------------------------------------------------
+
+As a webUI user I want to easily distinguish between PASSED, FAILED and other statuses
+when looking at charts and graphical visualizations.
+
+
+
+This feature request comes from the TestRun progress bar.
+Other charts should use the same 4 status categories and color coding standards:
+
+* IDLE - `pf-black-600`
+* PASSED - `pf-green-400`
+* FAILED - `pf-red-100`
+* OTHER - `pf-orange-400`. This includes other statuses which are not PASSED, FAILED and IDLE.
+
+Here the percent value will continue to mean *percent completed, aka non-IDLE*.
+
+Implementation wise the `TestCaseRunStatus` class defines methods for the actual icons to be used.
+The same can be done for colors and this can be used directly in the HTML templates.
+For color definitions see [Status Palette](https://www.patternfly.org/styles/color-palette/).
+
+
+Feature: Printable Test Execution Report
+----------------------------------------
+
+As a tester I want to have a nice looking TestRun execution report which I can present to
+my managers, stakeholders and/or customers. The page needs to be printer friendly for
+âPrint to PDFâ or print on paper!
+
+Kiwi TCMS already has this feature. Clicking the `[Report]` button
+in the progress widget at [TR-625](https://public.tenant.kiwitcms.org/runs/625/) presents
+TestRun execution information in a simplified format found at
+[TR-625/Report](https://public.tenant.kiwitcms.org/runs/625/report/).
+In order to improve the current implementation:
+
+* Convert TestRun page to Patternfly which generally prints better
+* Add bug list at the bottom of the page, below all test execution rows
+* Keep âView all in Issue Trackerâ link (supported only for some bug trackers)
+* The widget for TestRun progress must be kept
+* Tweak CSS classes to disable printing for visual elements that we don't need.
+ This will be decided after the entire page has been converted to Patternfly
+* Remove the existing `testruns.views.TestRunReportView` and associated templates,
+ JavaScript and CSS because they will not be needed anymore
+
+
+Feature: Individual or team performance telemetry
+-------------------------------------------------
+
+As a manager I want to know what the work-load/performance of individual teams and
+engineers is. I can use this information either for performance review or for
+capacity planning of future work.
+
+
+
+
+A new page will be available under TELEMETRY -> Management -> Performance which will:
+
+* Allow filtering by
+ * Group (multi-select)
+ * User (multi select, depends on Group)
+ * Start / Stop dates
+ * Product
+* Show results per User or per Group (if no users are selected)
+* Allow grouping per TestRun ID or calendar week number
+
+The backend will query `TestExecution.objects` and apply the selected
+filters and grouping logic!
+The returned data is the count of how many tests this person/team was able to execute.
+
+Further refinement:
+Aggregate count by statuses (executed vs. non-executed or PASSED vs. FAILED vs. OTHER).
+May be represented as a stacked bar chart if grouping of series is supported.
+
+
+
+Feature: Time-tracking telemetry
+--------------------------------
+
+As a manager I want to know how much time it took to complete previous testing activities.
+I can use this information for predicting future capacity.
+
+New page under TELEMETRY -> Management -> Time tracking.
+
+* Filtering will be the same as performance telemetry
+* Grouping will be the same as performance telemetry
+* **Unknown:** total execution time is calculated as
+ * the sum of duration for each TestExecution (not available ATM,
+ automation plugins not sending this info) or
+ * the total time for the entire TestRrun (not supported by automation plugins)
+
+Visually this will be a line chart with one line for each user/group which have
+been selected. It will be very good if the existing chart libraries allow for a
+stacked line chart or a stacked area chart here!
+
+
+Feature: Estimate TestRun completion time
+-----------------------------------------
+
+As a test lead I want to know approximately when testing is expected to complete.
+
+This feature will utilize time-tracking data from previous executions and
+display the approximated calculation in the web UI. The most obvious place for this
+is the TestRun progress widget (under the progress bar) or the Test Run page
+(near the Started at/Finished at fields).
+
+
+Example text:
+
+```
+Started at: YYYY-MM-DD 10:38
+Status: Running
+Duration: 1.2 / 3 hrs
+Estimated completion at: 13:30
+```
+
+**Unknown:** where does baseline duration come from? Either from the most recent TestRun
+or an average from all of the previous Test Runs. Note that cumulative TestRun duration
+is calculated between Start/Finish events while individual TestExecution records may
+sum up to a different value! This needs to be clarified.
+
+
+Feature: TestCase health telemetry
+----------------------------------
+
+As a tester and/or manager I want to be able to discover which TestCase(s) are the most
+common source of problems, that is they fail all the time or from time to time.
+This may indicate poor test design or bad practices when developing the product.
+This is also known as test stability or flaky tests!
+
+
+
+New page under TELEMETRY -> Testing -> Flaky tests
+
+* Allow filtering by
+ * Product
+ * Test plan (refined by product)
+ * Start / Stop dates
+* Show results in table form as shown in the image above
+* PASS/non-PASS stats will be calculated based on `TestExecution.objects`
+* 100% failing rate will be reported in the first table as ALWAYS FAILING
+* Executions where failing rate is >0% and <100% will be reported as FLAKY TESTS
+
+
+Feature: TestCase breakdown telemetry
+-------------------------------------
+
+As a tester and/or manager I want to see a breakdown of tests so that I have an
+idea how the existing tests for the product are distributed!
+
+
+
+New page under TELEMETRY -> Testing -> Breakdown
+
+* Allow filtering by
+ * Product
+ * Test plan (refined by product)
+ * Start / Stop dates
+
+Shows combined bar/line charts with information about test case priorities, categories,
+automation status and confirmed status.
+
+
+Feature: Individual TestCase health widget
+------------------------------------------
+
+As a test engineer I want to be able to quickly see health information about individual
+test case. This can help me visually locate TCs that need improvement so I can edit them
+or will help me visually judge the past history of the TC I am looking at.
+
+
+
+This depends on the previous feature. Possible places where health status can be shown:
+
+* Test Case page, Executions card: info per TP
+* Test Run page, Test Executions table - visual icon + % to hint the user
+ about expected TC stability
+
+
+Feature: Execution trends telemetry
+-----------------------------------
+
+As a test manager I want to see information if Product builds are getting better or worse.
+In other words what is the trend in TestExecution number and status!
+
+
+
+This is going to be a new page at TELEMETRY -> Testing -> Execution trends
+
+* Filter by
+ * Product
+ * Version (refined by Product)
+ * Build (refined by Version)
+ * Test Plan (refined by Product)
+ * Start / Stop dates
+* Shows total count of `TestExecution.objects` (stacked area chart) with color codes for status
+* Group by TestRun ID or calendar week
+
+You will be able to select TestRuns and/or weeks for detailed comparison.
+
+
+Feature: TestRun status matrix telemetry
+----------------------------------------
+
+As a test manager I want to see detailed information about testing status for
+specific test run(s) or a calendar period. I also want to be able to compare
+the results between various weeks and/or test runs.
+
+
+
+This is a continuation of Execution trends telemetry but can be used on its own as well.
+It will be accessible from TELEMETRY -> Testing -> Status matrix
+
+Filtering options are the same. Results are displayed in a table format where
+columns are the filtered (or previously selected) TestRun objects or calendar weeks.
+The rows are the names of individual test cases that have been executed. If a case
+is missing the cell will be empty.
+
+Cells contain color coded information about status, timestamp of execution,
+execution duration, links to the TestExecution object, latest comment in case
+of failure.
+
+Links to bugs will be shown in each cell with a summarized bug table below the
+charts.
+
+
+Feature: Search and compare TestRuns
+------------------------------------
+
+This is complimentary to the TestRun status matrix feature! While searching
+for TestRuns in SEARCH -> Test Runs the user will be able to select several
+rows and proceed to compare them as described above.
+
+
+Happy testing!
diff --git a/content/2019-03-13-openexpo.markdown b/content/2019-03-13-openexpo.markdown
new file mode 100644
index 00000000..624cbc2f
--- /dev/null
+++ b/content/2019-03-13-openexpo.markdown
@@ -0,0 +1,30 @@
+Title: Taking the lead at OpenExpo Europe CfP votes
+headline: please vote for our presentations
+date: 2019-03-13 07:27
+comments: true
+og_image: images/openexpo/vote_openexpo19.jpg
+twitter_image: images/openexpo/vote_openexpo19.jpg
+tags: community, events
+
+
+
+We are happy to announce that Anton Sankov and Alex Todorov are currently taking
+the lead at OpenExpo Europe's CfP votes!
+
+Going to OpenExpo will be huge boost for Kiwi TCMS so please help us make this happen!
+Voting is open until March 17th 2019! You can cast your vote via Facebook login
+but remember to confirm your email address!
+
+
+- Vote for Alex'es
+ [cyber security presentation](https://a.cstmapp.com/entries/29369/sort:votes/direction:desc)
+- Vote for Anton's
+ [micro-services tech talk](https://a.cstmapp.com/entries/30063/sort:votes/direction:desc)
+- Vote for Alex'es
+ [pylint plugins tech-talk](https://a.cstmapp.com/entries/30063/sort:votes/direction:desc):
+ currently 3rd in the Open Source Tech Talks category
+
+
+Thank you & happy testing!
diff --git a/content/2019-03-19-version-6.6.rst b/content/2019-03-19-version-6.6.rst
new file mode 100644
index 00000000..8d3af761
--- /dev/null
+++ b/content/2019-03-19-version-6.6.rst
@@ -0,0 +1,178 @@
+Kiwi TCMS 6.6
+#############
+
+:headline: medium security, improvements and bug fixes
+:date: 2019-03-19 22:40
+:comments: true
+:tags: releases
+
+We're happy to announce Kiwi TCMS version 6.6! This is a
+medium severity security update, improvement and bug-fix update.
+You can explore everything at
+`https://public.tenant.kiwitcms.org `_!
+
+Supported upgrade paths::
+
+ 5.3 (or older) -> 5.3.1
+ 5.3.1 (or newer) -> 6.0.1
+ 6.0.1 -> 6.1
+ 6.1 -> 6.1.1
+ 6.1.1 -> 6.2 (or newer)
+
+Docker images::
+
+ pub.kiwitcms.eu/kiwitcms/kiwi latest c4734f98ca37 971.3 MB
+ pub.kiwitcms.eu/kiwitcms/kiwi 6.2 7870085ad415 957.6 MB
+ pub.kiwitcms.eu/kiwitcms/kiwi 6.1.1 49fa42ddfe4d 955.7 MB
+ pub.kiwitcms.eu/kiwitcms/kiwi 6.1 b559123d25b0 970.2 MB
+ pub.kiwitcms.eu/kiwitcms/kiwi 6.0.1 87b24d94197d 970.1 MB
+ pub.kiwitcms.eu/kiwitcms/kiwi 5.3.1 a420465852be 976.8 MB
+
+
+Changes since Kiwi TCMS 6.5.3
+-----------------------------
+
+
+Security
+~~~~~~~~
+
+- Explicitly require marked v0.6.1 to fix medium severity ReDoS vulnerability. See
+ `SNYK-JS-MARKED-73637 `_
+
+
+Improvements
+~~~~~~~~~~~~
+
+- Update ``python-gitlab`` from 1.7.0 to 1.8.0
+- Update ``django-contrib-comments`` from 1.9.0 to 1.9.1
+- More strings marked as translatable (Christophe CHAUVET)
+- When creating new TestCase you can now change notification settings.
+ Previously this was only possible during editing
+- Document import-export approaches. Closes
+ `Issue #795 `_
+- Document available test automation plugins
+- Improve documentation around Docker customization and SSL termination
+- Add documentation example of reverse rroxy configuration for HAProxy (Nicolas Auvray)
+- ``TestPlan.add_case()`` will now set the sortkey to highest in plan + 10 (Rik)
+- Add ``LinkOnly`` issue tracker. Fixes
+ `Issue #289 `_
+- Use the same HTML template for both TestCase new & edit
+- New API methods for adding, removing and listing attachments. Fixes
+ `Issue #446 `_:
+
+ - TestPlan.add_attachment()
+ - TestCase.add_attachment()
+ - TestPlan.list_attachments()
+ - TestCase.list_attachments()
+ - Attachments.remove_attachment()
+
+
+Database migrations
+~~~~~~~~~~~~~~~~~~~
+
+- Populate missing ``TestCase.text`` history.
+ In version 6.5 the ``TestCase`` model was updated to store the text
+ into a single field called ``text`` instead of 4 separate fields.
+ During that migration historical records were updated to have
+ the new ``text`` field but values were not properly assigned.
+
+ The "effect" of this is that in TestCaseRun records you were not
+ able to see the actual text b/c it was None.
+
+ This change ammends ``0006_merge_text_field_into_testcase_model`` for
+ installations which have not yet migrated to 6.5 or later. We also
+ provide the data-only migration ``0009_populate_missing_text_history``
+ which will inspect the current state of the DB and copy the text to
+ the last historical record.
+
+
+Removed functionality
+~~~~~~~~~~~~~~~~~~~~~
+
+- Remove legacy reports. Closes
+ `Issue #657 `_
+- Remove "Save & Continue" functionality from TestCase edit page
+- Renamed API methods:
+
+ - ``TestCaseRun.add_log()`` -> ``TestCaseRun.add_link()``
+ - ``TestCaseRun.remove_log()`` -> ``TestCaseRun.remove_link()``
+ - ``TestCaseRun.get_logs()`` -> ``TestCaseRun.get_links()``
+
+ These methods work with URL links, which can be added or removed to
+ test case runs.
+
+
+Bug fixes
+~~~~~~~~~
+
+- Remove hard-coded timestamp in TestCase page template, References
+ `Issue #765 `_
+- Fix handling of ``?from_plan`` URL parameter in TestCase page
+- Make ``TestCase.text`` occupy 100% width when rendered. Fixes
+ `Issue #798 `_
+- Enable ``markdown.extensions.tables``. Fixes
+ `Issue #816 `_
+- Handle form erros and default values for TestPlan new/edit. Fixes
+ `Issue #864 `_
+- Tests + fix for failing TestCase rendering in French
+- Show color-coded statuses on dashboard page when seen with non-English
+ language
+- Refactor check for confirmed test cases when editting to work with
+ translations
+- Fix form values when filtering test cases inside TestPlan. Fixes
+ `Issue #674 `_ (@marion2016)
+- Show delete icon for attachments. Fixes
+ `Issue #847 `_
+
+
+Refactoring
+~~~~~~~~~~~
+
+- Remove unused ``.current_user`` instance attribute
+- Remove ``EditCaseForm`` and use ``NewCaseForm`` instead, References
+ `Issue #708 `_,
+ `Issue #812 `_
+- Fix "Select All" checkbox. Fixes
+ `Issue #828 `_ (Rady)
+
+
+Translations
+~~~~~~~~~~~~
+
+- Updated `Chinese Simplified translation `_
+- Updated `Chinese Traditional translation `_
+- Updated `German translation `_
+- Updated `French translation `_
+- Updated `Slovenian translation `_
+- Changed misspelled source string ``Requirments`` -> ``Requirements`` (@Prome88)
+
+
+How to upgrade
+---------------
+
+If you are using Kiwi TCMS as a Docker container then::
+
+ cd Kiwi/
+ git pull
+ docker-compose down
+ docker pull pub.kiwitcms.eu/kiwitcms/kiwi
+ docker pull centos/mariadb
+ docker-compose up -d
+ docker exec -it kiwi_web /Kiwi/manage.py migrate
+
+Don't forget to `backup <{filename}2018-07-30-docker-backup.markdown>`_
+before upgrade!
+
+**WARNING:** ``pub.kiwitcms.eu/kiwitcms/kiwi:latest`` and ``docker-compose.yml`` will
+always point to the latest available version! If you have to upgrade in steps,
+e.g. between several intermediate releases, you have to modify the above workflow::
+
+ # starting from an older Kiwi TCMS version
+ docker-compose down
+ docker pull pub.kiwitcms.eu/kiwitcms/kiwi:
+ edit docker-compose.yml to use pub.kiwitcms.eu/kiwitcms/kiwi:
+ docker-compose up -d
+ docker exec -it kiwi_web /Kiwi/manage.py migrate
+ # repeat until you have reached latest
+
+Happy testing!
diff --git a/content/2019-04-06-version-6.7.rst b/content/2019-04-06-version-6.7.rst
new file mode 100644
index 00000000..875862f6
--- /dev/null
+++ b/content/2019-04-06-version-6.7.rst
@@ -0,0 +1,132 @@
+Kiwi TCMS 6.7
+#############
+
+:headline: improvements and bug fixes
+:date: 2019-04-06 17:15
+:comments: true
+:tags: releases
+
+We're happy to announce Kiwi TCMS version 6.7!
+This is a small improvement and bug-fix update.
+You can explore everything at
+`https://public.tenant.kiwitcms.org `_!
+
+Supported upgrade paths::
+
+ 5.3 (or older) -> 5.3.1
+ 5.3.1 (or newer) -> 6.0.1
+ 6.0.1 -> 6.1
+ 6.1 -> 6.1.1
+ 6.1.1 -> 6.2 (or newer)
+
+Docker images::
+
+ pub.kiwitcms.eu/kiwitcms/kiwi latest 702a78976de7 993.5 MB
+ pub.kiwitcms.eu/kiwitcms/kiwi 6.2 7870085ad415 957.6 MB
+ pub.kiwitcms.eu/kiwitcms/kiwi 6.1.1 49fa42ddfe4d 955.7 MB
+ pub.kiwitcms.eu/kiwitcms/kiwi 6.1 b559123d25b0 970.2 MB
+ pub.kiwitcms.eu/kiwitcms/kiwi 6.0.1 87b24d94197d 970.1 MB
+ pub.kiwitcms.eu/kiwitcms/kiwi 5.3.1 a420465852be 976.8 MB
+
+
+Changes since Kiwi TCMS 6.6
+---------------------------
+
+Improvements
+~~~~~~~~~~~~
+
+- Update Django from 2.1.7 to 2.2
+- Update markdown from 3.0.1 to 3.1
+- Update psycopg2 from 2.7.7 to 2.8
+- Update pygithub from 1.43.5 to 1.43.6
+- Update bleach-whitelist from 0.0.9 to 0.0.10
+- Update marked(.js) to version 0.6.2
+- Support arbitrary depth for ``MENU_ITEMS`` setting
+- Support auto-discovery of 3rd party Telemetry plugins, see
+ `documentation `_
+
+
+Database migrations
+~~~~~~~~~~~~~~~~~~~
+
+- Rename ``TestCaseRun`` to ``TestExecution`` including renaming existing
+ permissions
+- Rename ``TestCaseRunStatus`` to ``TestExecutionStatus``
+
+
+API
+~~~
+
+- Rename ``TestCaseRun.*`` to ``TestExecution.*``
+- Rename ``TestCaseRunStatus.*`` to ``TestExecution.*``
+- This version keeps the old names for backwards compatibility reasons but they
+ will be removed in
+ `Issue #889 `_
+
+
+Bug fixes
+~~~~~~~~~
+
+- Prompt user before deleting attachments. Fixes
+ `Issue #867 `_ (Martin Jordanov)
+- ``email_case_deletion()`` format error fixed so notifications when
+ test cases are deleted are not sent (Rik)
+
+
+Refactoring
+~~~~~~~~~~~
+
+- Remove unused images
+- Install ``node_modules/`` under ``tcms/`` and include it inside PyPI tarball
+
+
+Translations
+~~~~~~~~~~~~
+
+- Updated `Slovenian translation `_
+
+
+Native JUnit 5 plugin
+---------------------
+
+Our team is happy to announce the availability of
+`kiwitcms-junit-plugin `_.
+This is a native JUnit 5 plugin which will read the results from your
+automated test suite and send them back to Kiwi TCMS.
+
+Version 1.0.3 and the latest changes in master branch are still to be considered
+Beta quality. They are available for early preview and feedback.
+
+Many thanks to `Aneta Petkova `_ who is the
+main contributor behind this plugin!
+
+
+How to upgrade
+---------------
+
+If you are using Kiwi TCMS as a Docker container then::
+
+ cd Kiwi/
+ git pull
+ docker-compose down
+ docker pull pub.kiwitcms.eu/kiwitcms/kiwi
+ docker pull centos/mariadb
+ docker-compose up -d
+ docker exec -it kiwi_web /Kiwi/manage.py migrate
+
+Don't forget to `backup <{filename}2018-07-30-docker-backup.markdown>`_
+before upgrade!
+
+**WARNING:** ``pub.kiwitcms.eu/kiwitcms/kiwi:latest`` and ``docker-compose.yml`` will
+always point to the latest available version! If you have to upgrade in steps,
+e.g. between several intermediate releases, you have to modify the above workflow::
+
+ # starting from an older Kiwi TCMS version
+ docker-compose down
+ docker pull pub.kiwitcms.eu/kiwitcms/kiwi:
+ edit docker-compose.yml to use pub.kiwitcms.eu/kiwitcms/kiwi:
+ docker-compose up -d
+ docker exec -it kiwi_web /Kiwi/manage.py migrate
+ # repeat until you have reached latest
+
+Happy testing!
diff --git a/content/2019-05-03-version-6.8.rst b/content/2019-05-03-version-6.8.rst
new file mode 100644
index 00000000..3ff1e25c
--- /dev/null
+++ b/content/2019-05-03-version-6.8.rst
@@ -0,0 +1,122 @@
+Kiwi TCMS 6.8
+#############
+
+:headline: GitHub Marketplace, improvements and bug fixes
+:date: 2019-05-03 13:45
+:comments: true
+:tags: releases
+
+
+We're happy to announce Kiwi TCMS version 6.8!
+This is a small improvement and bug-fix update.
+You can explore everything at
+`https://public.tenant.kiwitcms.org `_!
+
+Supported upgrade paths::
+
+ 5.3 (or older) -> 5.3.1
+ 5.3.1 (or newer) -> 6.0.1
+ 6.0.1 -> 6.1
+ 6.1 -> 6.1.1
+ 6.1.1 -> 6.2 (or newer)
+
+Docker images::
+
+ pub.kiwitcms.eu/kiwitcms/kiwi latest fca095f95475 994.8 MB
+ pub.kiwitcms.eu/kiwitcms/kiwi 6.2 7870085ad415 957.6 MB
+ pub.kiwitcms.eu/kiwitcms/kiwi 6.1.1 49fa42ddfe4d 955.7 MB
+ pub.kiwitcms.eu/kiwitcms/kiwi 6.1 b559123d25b0 970.2 MB
+ pub.kiwitcms.eu/kiwitcms/kiwi 6.0.1 87b24d94197d 970.1 MB
+ pub.kiwitcms.eu/kiwitcms/kiwi 5.3.1 a420465852be 976.8 MB
+
+
+Changes since Kiwi TCMS 6.7
+---------------------------
+
+Improvements
+~~~~~~~~~~~~
+
+- Update Django from 2.2 to 2.2.1
+- Update django-simple-history from 2.7.0 to 2.7.2
+- Update django-grappelli from 2.12.2 to 2.12.3
+- Update psycopg2 from 2.8 to 2.8.2
+- Update pygithub from 1.43.6 to 1.43.7
+- Upgrade pip and setuptools inside Docker image
+- Update documentation with newer screenshots and updated Tutotial. Fixes
+ `Issue #837 `_ (@Prome88)
+- Document how to enable public read-only views
+- Remove deprecated documentation section about Bugzilla authentication
+- Install PostgreSQL libraries in Docker image which makes it easier to
+ switch the DB backend without rebuilding the entire image
+- Remove npm, libxml2-devel and libxslt-devel from Docker image
+- Database engine configuration now respects the ``KIWI_DB_ENGINE`` environment
+ variable which defaults to ``django.db.backends.mysql``. This will make it
+ easier for admins to change DB engine by updating their ``docker-compose.yml``
+
+
+Bug fixes
+~~~~~~~~~
+
+- Pin bootstrap-switch to version 3.3.4 in ``package.json``. Fixes
+ `Issue #916 `_
+
+
+Translations
+~~~~~~~~~~~~
+
+- Updated `French translation `_
+- Updated `Slovenian translation `_
+- New language `Russian `_
+- New language `Czech `_
+
+
+Refactoring
+~~~~~~~~~~~
+
+- Don't use ``Site.objects.get_current()`` because it has an internal cache
+ and causes email notifications from tenants to use the wrong URL
+- More changes around renaming of TestCaseRun to TestExecution
+
+
+GitHub Marketplace
+------------------
+
+During the past week we have silently launched Kiwi TCMS on
+`GitHub Marketplace `_. Free plans
+will be redirected to
+`public.tenant.kiwitcms.org `_
+while paid plans will be hosted under ``*.tenant.kiwitcms.org`` sub-domains!
+
+Our team is still working on all requirements for GitHub integration and we will
+issue a formal statement when ready!
+
+
+How to upgrade
+---------------
+
+If you are using Kiwi TCMS as a Docker container then::
+
+ cd Kiwi/
+ git pull
+ docker-compose down
+ docker pull pub.kiwitcms.eu/kiwitcms/kiwi
+ docker pull centos/mariadb
+ docker-compose up -d
+ docker exec -it kiwi_web /Kiwi/manage.py migrate
+
+Don't forget to `backup <{filename}2018-07-30-docker-backup.markdown>`_
+before upgrade!
+
+**WARNING:** ``pub.kiwitcms.eu/kiwitcms/kiwi:latest`` and ``docker-compose.yml`` will
+always point to the latest available version! If you have to upgrade in steps,
+e.g. between several intermediate releases, you have to modify the above workflow::
+
+ # starting from an older Kiwi TCMS version
+ docker-compose down
+ docker pull pub.kiwitcms.eu/kiwitcms/kiwi:
+ edit docker-compose.yml to use pub.kiwitcms.eu/kiwitcms/kiwi:
+ docker-compose up -d
+ docker exec -it kiwi_web /Kiwi/manage.py migrate
+ # repeat until you have reached latest
+
+Happy testing!
diff --git a/content/2019-05-16-version-6.9.rst b/content/2019-05-16-version-6.9.rst
new file mode 100644
index 00000000..bd1ed4e1
--- /dev/null
+++ b/content/2019-05-16-version-6.9.rst
@@ -0,0 +1,117 @@
+Kiwi TCMS 6.9
+#############
+
+:headline: testing breakdown telemetry, improvements and bug fixes
+:date: 2019-05-16 16:20
+:comments: true
+:tags: releases
+
+
+We're happy to announce Kiwi TCMS version 6.9!
+This is a small improvement and bug-fix update which introduces
+our first telemetry report: testing breakdown. You can explore everything at
+`https://public.tenant.kiwitcms.org `_!
+
+Supported upgrade paths::
+
+ 5.3 (or older) -> 5.3.1
+ 5.3.1 (or newer) -> 6.0.1
+ 6.0.1 -> 6.1
+ 6.1 -> 6.1.1
+ 6.1.1 -> 6.2 (or newer)
+
+Docker images::
+
+ pub.kiwitcms.eu/kiwitcms/kiwi latest a01eaeddf213 1.001 GB
+ pub.kiwitcms.eu/kiwitcms/kiwi 6.2 7870085ad415 957.6 MB
+ pub.kiwitcms.eu/kiwitcms/kiwi 6.1.1 49fa42ddfe4d 955.7 MB
+ pub.kiwitcms.eu/kiwitcms/kiwi 6.1 b559123d25b0 970.2 MB
+ pub.kiwitcms.eu/kiwitcms/kiwi 6.0.1 87b24d94197d 970.1 MB
+ pub.kiwitcms.eu/kiwitcms/kiwi 5.3.1 a420465852be 976.8 MB
+
+
+Changes since Kiwi TCMS 6.8
+---------------------------
+
+Improvements
+~~~~~~~~~~~~
+
+- Update mysqlclient from 1.4.2 to 1.4.2.post1
+- Ship with prism.js so it can be used for syntax highlighting
+- Add Testing Breakdown telemetry
+- Mark more strings for translations
+- Add ``delete_user()`` function which can delete data across
+ Postgre schemas (if kiwitcms-tenants add-on is installed)
+
+
+API
+~~~
+
+- Remove deprecated ``TestCaseRun.`` API methods. Use the new
+ ``TestExecution.`` methods introduced in v6.7. Fixes
+ `Issue #889 `_
+
+
+Bug fixes
+~~~~~~~~~
+
+- Fix typos in documentation (@Prome88)
+- Fix ``TemplateParseError`` in email templates when removing test cases.
+ On-delete email notification is now sent properly
+
+
+Refactoring
+~~~~~~~~~~~
+
+- Add more tests around TestRun/TestExecution menu permissions
+- Minor pylint fixes
+
+
+Translations
+~~~~~~~~~~~~
+
+- Updated `French translation `_
+- Updated `Slovenian translation `_
+
+Join us at OpenExpo in Madrid
+-----------------------------
+
+Kiwi TCMS is exhibitor at `OpenExpo Europe `_
+on June 20th in Madrid. We will be hosting an info booth and 2 technical
+presentations delivered by Anton Sankov and Alex Todorov.
+
+Next week we are going to announce 100% discount tickets
+for our guests at the conference. If you are interested in coming
+`subscribe to our newsletter `_
+and don't miss the announcement!
+
+
+How to upgrade
+---------------
+
+If you are using Kiwi TCMS as a Docker container then::
+
+ cd Kiwi/
+ git pull
+ docker-compose down
+ docker pull pub.kiwitcms.eu/kiwitcms/kiwi
+ docker pull centos/mariadb
+ docker-compose up -d
+ docker exec -it kiwi_web /Kiwi/manage.py migrate
+
+Don't forget to `backup <{filename}2018-07-30-docker-backup.markdown>`_
+before upgrade!
+
+**WARNING:** ``pub.kiwitcms.eu/kiwitcms/kiwi:latest`` and ``docker-compose.yml`` will
+always point to the latest available version! If you have to upgrade in steps,
+e.g. between several intermediate releases, you have to modify the above workflow::
+
+ # starting from an older Kiwi TCMS version
+ docker-compose down
+ docker pull pub.kiwitcms.eu/kiwitcms/kiwi:
+ edit docker-compose.yml to use pub.kiwitcms.eu/kiwitcms/kiwi:
+ docker-compose up -d
+ docker exec -it kiwi_web /Kiwi/manage.py migrate
+ # repeat until you have reached latest
+
+Happy testing!
diff --git a/content/2019-05-25-pylint-workshop.markdown b/content/2019-05-25-pylint-workshop.markdown
new file mode 100644
index 00000000..fdb91622
--- /dev/null
+++ b/content/2019-05-25-pylint-workshop.markdown
@@ -0,0 +1,39 @@
+Title: Pylint workshop with Django Bulgaria user group
+headline: contributing more checkers for Kiwi TCMS
+date: 2019-05-25 14:27
+comments: true
+author: Alexander Todorov
+tags: community, events
+og_image: images/django_meetup.jpg
+twitter_image: images/django_meetup.jpg
+
+On Tuesday I hosted my pylint workshop during the regular
+[Django Bulgaria meetup](https://www.facebook.com/events/295673718035353/).
+This edition was the first which was practice based.
+
+Attendance numbers were low but participation was very good. We managed to
+create 4 new checkers for Kiwi TCMS:
+
+- [PR #949 - AutoField checker](https://github.com/kiwitcms/Kiwi/pull/949)
+- [PR #950 - OneToOneField checker](https://github.com/kiwitcms/Kiwi/pull/950)
+- [PR #951 - discover directories without \_\_init\_\_.py](https://github.com/kiwitcms/Kiwi/pull/951)
+- [PR #952 - empty class checker](https://github.com/kiwitcms/Kiwi/pull/952)
+- [PR #955 - function based view checker](https://github.com/kiwitcms/Kiwi/pull/955)
+
+
+Many thanks to all contributors. These new checkers have discovered quite a
+few new issues with Kiwi TCMS so this is an area which our team is going to improve.
+
+Those who missed the workshop will be able to catch up one of the next editions:
+
+- 26-29 August, GUADEC, Thessaloniki - TBC (presentation)
+- end of September, Python meetup, Zagreb - TBA
+- 03-05 October, PyCon Balkan, Belgrade - TBC
+- 11-13 October, HackConf, Sofia
+- 15-17 October, TestCon Europe, Vilnius - TBC (backup presentation)
+- 23-25 October, Testwarez, Ossa, Poland - TBC (presentation)
+- 14-15 November, Software Engineering Conference Russia, Saint-Petersburg - TBC
+- 20-22 November, ConTEST, New York - TBC (workshop and/or presentation)
+
+
+Happy testing!
diff --git a/content/2019-05-27-openexpo-openawards.markdown b/content/2019-05-27-openexpo-openawards.markdown
new file mode 100644
index 00000000..b9524a37
--- /dev/null
+++ b/content/2019-05-27-openexpo-openawards.markdown
@@ -0,0 +1,35 @@
+Title: Kiwi TCMS needs your help winning OpenAwards 2019
+headline: please vote for us
+date: 2019-05-27 16:15
+comments: true
+og_image: images/openexpo/openawards2019.jpg
+twitter_image: images/openexpo/openawards2019.jpg
+tags: community, events
+
+
+
+Thanks to you, our community supporters, Anton Sankov and Alex Todorov
+[took the lead at OpenExpo 2019 CfP votes]({filename}2019-03-13-openexpo.markdown).
+We need your help one more time. Our team has submitted participation in
+'Best Tech Community' and 'Best Success Story' categories.
+
+Unfortunately our submission into 'Best Success Story' has been pulled down!
+We used that category to share the story from a dead open source project into
+a thriving open source community with lots of users and contributors and to
+highlight some of our milestones. Here's the short version:
+
+- lots of technical updates and refactoring, latest everything, modern UI
+- the **only** open source test case management system on GitHub Marketplace
+- nearly 60000 downloads on Docker Hub
+- growing and active core team
+- active OSS contributors
+
+Please help us gain more recognition:
+
+- [Vote for Kiwi TCMS](https://a.cstmapp.com/voteme/31129/633186885)
+ in the Best Tech Community category!
+
+
+Thanks you & happy testing!
diff --git a/content/2019-06-18-version-6.10.rst b/content/2019-06-18-version-6.10.rst
new file mode 100644
index 00000000..2abc05d3
--- /dev/null
+++ b/content/2019-06-18-version-6.10.rst
@@ -0,0 +1,122 @@
+Kiwi TCMS 6.10
+##############
+
+:headline: medium security updates and few improvements
+:date: 2019-06-18 22:45
+:comments: true
+:tags: releases
+
+
+We're happy to announce Kiwi TCMS version 6.10!
+This is a small security and improvement update.
+You can explore everything at
+`https://public.tenant.kiwitcms.org `_!
+
+Supported upgrade paths::
+
+ 5.3 (or older) -> 5.3.1
+ 5.3.1 (or newer) -> 6.0.1
+ 6.0.1 -> 6.1
+ 6.1 -> 6.1.1
+ 6.1.1 -> 6.2 (or newer)
+
+Docker images::
+
+ pub.kiwitcms.eu/kiwitcms/kiwi latest bbb581d60ed1 1.005 GB
+ pub.kiwitcms.eu/kiwitcms/kiwi 6.2 7870085ad415 957.6 MB
+ pub.kiwitcms.eu/kiwitcms/kiwi 6.1.1 49fa42ddfe4d 955.7 MB
+ pub.kiwitcms.eu/kiwitcms/kiwi 6.1 b559123d25b0 970.2 MB
+ pub.kiwitcms.eu/kiwitcms/kiwi 6.0.1 87b24d94197d 970.1 MB
+ pub.kiwitcms.eu/kiwitcms/kiwi 5.3.1 a420465852be 976.8 MB
+
+
+Changes since Kiwi TCMS 6.9
+---------------------------
+
+
+Security
+~~~~~~~~
+
+- Update Django from 2.2.1 to 2.2.2 for medium severity
+ CVE-2019-12308 (XSS), CVE-2019-11358 (jQuery).
+ `More info `_
+- Add missing permission checks for menus in Test run page UI template.
+ Permission check added for TestExecution status and comment menu.
+ References `Issue #716 `_
+- Re-enable static analysis with ``bandit`` and ``Coverity Scan`` in
+ Travis CI (Svetlomir Balevski)
+
+
+Improvements
+~~~~~~~~~~~~
+
+- Update psycopg2 from 2.8.2 to 2.8.3
+- Update markdown from 3.1 to 3.1.1
+- Update patternfly to version 3.59.2
+- Override ``PasswordResetForm`` because ``Site.objects.get_current()``
+ didn't produce correct results when working with ``kiwitcms-tenants``
+- Show column ``is_active`` in user admin page
+
+
+Refactoring
+~~~~~~~~~~~
+
+- Add test for ``email_case_deletion()`` (Rik)
+- New linter to warn about usage of ``AutoField``. Fixes
+ `Issue #737 `_ (Ivo Donchev, HackSoft)
+- New linter to discover empty classed. Fixes
+ `Issue #739 `_ (Daniel Goshev)
+- New linter to warn about usage of ``OneToOneField``. Fixes
+ `Issue #735 `_ (George Goranov)
+- New linter to warn about usage of function based views. Fixes
+ `Issue #734 `_ (Yavor Lulchev, Uber)
+- New linter to discover Python files in directories without ``__init__.py``. Fixes
+ `Issue #790 `_
+
+
+Join us at OpenExpo in Madrid
+-----------------------------
+
+Kiwi TCMS is exhibitor at `OpenExpo Europe `_
+on June 20th in Madrid. We will be hosting an info booth and 2 technical
+presentations delivered by
+`Anton Sankov `_ and
+`Alex Todorov `_.
+
+Kiwi TCMS is also the leading finalist in the
+`Best Tech Community `_
+category at Open Awards 2019!
+
+Use **OE19SPEAKERINVITE** 100% discount code! Get your ticket
+`here `_!
+
+
+How to upgrade
+---------------
+
+If you are using Kiwi TCMS as a Docker container then::
+
+ cd Kiwi/
+ git pull
+ docker-compose down
+ docker pull pub.kiwitcms.eu/kiwitcms/kiwi
+ docker pull centos/mariadb
+ docker-compose up -d
+ docker exec -it kiwi_web /Kiwi/manage.py migrate
+
+Don't forget to `backup <{filename}2018-07-30-docker-backup.markdown>`_
+before upgrade!
+
+**WARNING:** ``pub.kiwitcms.eu/kiwitcms/kiwi:latest`` and ``docker-compose.yml`` will
+always point to the latest available version! If you have to upgrade in steps,
+e.g. between several intermediate releases, you have to modify the above workflow::
+
+ # starting from an older Kiwi TCMS version
+ docker-compose down
+ docker pull pub.kiwitcms.eu/kiwitcms/kiwi:
+ edit docker-compose.yml to use pub.kiwitcms.eu/kiwitcms/kiwi:
+ docker-compose up -d
+ docker exec -it kiwi_web /Kiwi/manage.py migrate
+ # repeat until you have reached latest
+
+Happy testing!
diff --git a/content/2019-06-24-openawards-winner.markdown b/content/2019-06-24-openawards-winner.markdown
new file mode 100644
index 00000000..e756928b
--- /dev/null
+++ b/content/2019-06-24-openawards-winner.markdown
@@ -0,0 +1,23 @@
+Title: Kiwi TCMS is OpenAwards 2019 Best Tech Community Winner
+headline: thank you, everyone
+date: 2019-06-24 13:10
+comments: true
+author: Alexander Todorov
+og_image: images/openexpo/award.jpg
+twitter_image: images/openexpo/award.jpg
+tags: community, events
+
+
+
+Kiwi TCMS is the winner at OpenAwards'19 category Best Tech Community!
+Big thanks to the jury, our contributors and core-team and the larger
+open source and quality assurance communities who voted for us and supported
+the project during all of those years.
+
+This award is the best present we could get to mark the 10th anniversary
+of the project. More news of how we are progressing with current roadmap will
+follow soon in a separate blog post.
+
+Thank you & happy testing!
diff --git a/content/2019-06-28-roadmap-update.markdown b/content/2019-06-28-roadmap-update.markdown
new file mode 100644
index 00000000..9c597438
--- /dev/null
+++ b/content/2019-06-28-roadmap-update.markdown
@@ -0,0 +1,194 @@
+Title: Mid-year roadmap status report
+headline: tough progress, a bit behind schedule
+date: 2019-06-28 15:50
+comments: true
+og_image: images/roadmap.jpg
+twitter_image: images/roadmap.jpg
+author: Alexander Todorov
+tags: community, roadmap
+
+Hello everyone, in this article I will outline the progress that the Kiwi TCMS
+team has made towards achieving the goals on our
+[2019 mission and roadmap]({filename}2019-01-10-2019-mission.markdown).
+TL,DR: Kiwi TCMS has made progress since January, it's been tough and may not have been
+very visible. I feel like we've been behind schedule till now! The greatest
+positive thing has been community and team development!
+
+
+Complete the internal refactoring
+---------------------------------
+
+*Status: minimal progress, needs help*
+
+[CodeClimate](https://codeclimate.com/github/kiwitcms/Kiwi) progress is:
+
+* -30 code smells
+* -40 duplications
+* -30 other issues
+* 4% technical debt improvement
+* -200 hrs remaining until issues are fixed
+
+This is mostly the result of code reviews and minor fixes, not targeted work.
+
+We have not done any targeted work to resolve other issues reported by Scrutinizer,
+Pylint, remove vendored-in JavaScript libraries, JavaScript refactoring or
+classification of issues in 3rd party dependencies.
+
+There are new people onboarding in the team right now and our plan is for
+them to start grinding at these issues very soon!
+
+
+Redesign the UI templates with the help of Patternfly
+-----------------------------------------------------
+
+*Status: 50% done, needs help*
+
+There are 27 HTML templates remaining to be redesigned (from 59). That's mostly
+due to internal cleanup than targeted refactoring. More work on this item
+will probably follow towards the end of the year after we get more priority items out of
+the way and get more of the new team members rolling!
+
+
+Modernize reporting aka Telemetry
+---------------------------------
+
+*Status: in progress, a bit behind schedule*
+
+The specs for the new [Telemetry]({filename}2019-03-03-telemetry.markdown) system
+have been defined after taking into account feedback on GitHub issues. Anton Sankov is
+the leading developer for this feature. So far we have 2 telemetry reports merged:
+testing break-down and status matrix. The next one will be execution trends.
+
+There are lots of minor issues or missing functionality in these first iterations
+(compared to specification). Our plan is to have the major use-cases satisfied first
+and then work to refine all of the existing telemetry pages.
+
+
+Plugins for 3rd party test automation frameworks
+------------------------------------------------
+
+*Status: good, needs help*
+
+Until now we have released TAP, junit.xml and native JUnit 5 plugins. There's also
+a PHPUnit plugin which is more or less complete but unreleased yet. Both JUnit 5
+and PHPUnit plugins are developed by external contributors!
+
+We often get asked for plugins for languages and frameworks we don't use or don't
+even know! Given that our expertise is mostly in Python we will gladly accept your
+pull requests if you decide to maintain or contribute to one of the plugins. This
+will also help us get insight into what automation frameworks people are using
+and how exactly you structure a test automation workflow around Kiwi TCMS.
+
+Checkout the
+[documentation](https://kiwitcms.readthedocs.io/en/latest/plugins.html) for links
+and more info.
+
+
+Redefine bug-tracker integration
+--------------------------------
+
+*Status: no progress*
+
+Last week, right after OpenExpo, we did a check-up session and this was one of the
+areas identified with zero amount of progress. I have a strong preference to work
+on this feature myself but have not been able to due to various other items that
+need my attention.
+
+The short version is that I'd prefer to remove all issue tracker specific code
+and allow the tester to add arbitrary URLs to link to existing bugs. How to do
+integration (even as simple as publishing a comment in the bug tracker) over
+a generic interface still eludes me. In the next few weeks I will kick-off this
+topic with a separate blog post/issue for everyone to comment on.
+
+
+GitHub flow integration
+-----------------------
+
+*Status: no progress*
+
+Our team spent some time making Kiwi TCMS the first open source TCMS available
+on the [GitHub Marketplace](https://github.com/marketplace/kiwi-tcms). We will
+continue this integration effort and flow integration will emerge from that.
+There's also many things that need to be done to satisfy GitHub's .
+
+
+Agile integration with Trello
+-----------------------------
+
+*Status: no progress*
+
+
+Improve engineering productivity
+--------------------------------
+
+*Status: no progress*
+
+Our mission is to transform testing in your organization by providing
+the tools for that via Kiwi TCMS. It is astonishing that so far nobody has provided
+any kind of feedback in [Issue #703](https://github.com/kiwitcms/Kiwi/issues/703)
+wrt improving productivity in their teams!
+
+We have some ideas which have been blocked by lack of resources on the team and
+refactoring tasks. Because we've adopted this as our mission this is an important
+item for us and we'll continue working on it as resources allow.
+Progress is to be expected towards the end of the year.
+
+
+Community
+---------
+
+*Status: great, on track, needs work*
+
+This is our strongest area during the year so far. We have a strong presence in
+several communities, our event schedule is busy enough and we are gaining more
+recognition every day!
+
+- Hosted project stand at 3/5 conferences with 2 more on-track
+- Won the OpenAward for [Best Tech Community](2019-06-24-openawards-winner.markdown)
+- Hosted several presentations and workshops with few more on track
+- Found new talent to join the core team: 2 just ready to start contributing, 5 more in training
+ + 1 more senior engineer as a mentor. We also have a few independent wanna-be contributors
+ and will be hosting qualification interviews for marketing assistant very soon
+- There are contributions and pull requests coming from users of Kiwi TCMS as well.
+ We'd like to see more of course.
+- There are a couple of open source projects and companies using Kiwi TCMS who
+ are friendly towards the project. We are working with them to get a public
+ endorsement on the website and engage in more technical work together. Of course
+ everyone has limited resources and is very busy :-(
+- Sponsors on [OpenCollect](https://opencollective.com/kiwitcms#contributors) are just
+ a few but we didn't have any previously so this is a good sign.
+
+
+This is the moment to mention that not all is honey and roses in open source land.
+Kiwi TCMS suffers from the problem that many of our users can't be contributors
+or simply don't want to!
+
+Manual testers can't program. This is a fact and a good sized chunk of our user base
+actually performs manual testing. Those that can write automation and probably
+code decently well may not be familiar with Python and Django. At least in Bulgaria
+these two aren't very popular, definitely not among testers. That is to say this part
+of the user-base simply doesn't have the necessary skills to contribute and the majority
+of what we need is code contribution!
+
+Another (fairly big IMO) group of users are coming from proprietary companies who
+view open source and Kiwi TCMS as a zero cost option. Something that they take free
+of charge and use it without ever contributing back. They don't understand nor really
+care about the open source culture.
+
+To make things worse we receive requests every single day via
+our private email addresses or questions via IM despite our website clearly stating
+community engagement rules. On a few occasions we have received very rude comments
+of the sort "our company demands you fix this", "is this going to be ready this year"
+(context implying entitlement), etc. To make things more ridiculous we've even received
+support requests (via contact form) from companies and start-up
+who get their return address wrong so we can't get in touch directly!
+
+
+In short: don't demand anything from us unless you are ready to pay for it, work for it
+yourself or propose a mutually beneficial scenario. We do try to keep the community
+happy but more importantly follow our mission and develop our core team!
+
+
+
+
+Happy testing!
diff --git a/content/2019-07-05-contributor-profile-primoz.markdown b/content/2019-07-05-contributor-profile-primoz.markdown
new file mode 100644
index 00000000..45dbd907
--- /dev/null
+++ b/content/2019-07-05-contributor-profile-primoz.markdown
@@ -0,0 +1,110 @@
+Title: Contributor profile: PrimoĆŸ Klemen
+headline: Kiwi TCMS converted me from an open source user to open source contributor
+date: 2019-07-05 11:10
+og_image: images/team/hiring.png
+twitter_image: images/team/hiring.png
+comments: true
+tags: community
+
+
+In this new [series](/blog/tags/community/) we are going to introduce the contributors behind Kiwi TCMS.
+This is our community and these are their stories.
+
+
+
+

+
PrimoĆŸ Klemen -
+
QA tester, full time dad, Manchester United F.C. supporter
+
+
+ PrimoĆŸ is an early adopter and our Slovenian translator. He's been actively engaging
+ in GitHub issues, posted pull requests for improving documentation and follows us on
+ StackOverflow as well.
+
+
+
+
+
+
+
+
+
+
+
+
+What is your professional background
+------------------------------------
+
+I've started working in IT as tech support for the 2nd largest Slovenian ISP at the time.
+Then I've been at leading software provider for fintech in the Balkans region in the same
+role and gradually transitioned into QA role. Currently, I'm working as a QA tester for
+[Better (by Marand)](http://better.care) and ensure, with help of my colleagues of course,
+proper quality of administration application for health care sector.
+
+
+When did you use open source for the first time
+-----------------------------------------------
+
+If I recall correctly that would be some 14 years ago when I ditched dreaded
+Internet Explorer in favor of Mozilla Firefox browser. The whole Internet got better in
+a matter of seconds.
+
+
+What are your contributions to Kiwi TCMS
+----------------------------------------
+
+I mainly contribute via translating the application into my native language, Slovenian.
+Currently there are
+[7 languages available](https://crowdin.com/project/kiwitcms) for Kiwi TCMS so you are
+more than welcome to join and add another one.
+[Translating via Crowdin](https://kiwitcms.readthedocs.io/en/latest/contribution.html#translation)
+is very simple and requires no additional technical skills. I've also dabbled into project
+documentation and proposed a few updates to it. I'm also the culprit for some
+[32 issues](https://github.com/kiwitcms/Kiwi/issues/Prome88) and counting,
+the majority of them being proposals for future application enhancements and few UX/UI bugs
+(déformation professionnelle :-)).
+
+Why did you decide to contribute to Kiwi TCMS
+---------------------------------------------
+
+> The guys and gals from the Kiwi TCMS team provided us with an application which solved
+> our pain about building, maintaining and running manual regression tests.
+
+They did all of that for free in their spare time! So I've decided to give something back to
+the whole community. This was indeed my first
+contribution to the open source world but not the last. Since then I've also
+contributed to other projects which I use on a regular basis.
+
+> In hindsight, Kiwi TCMS converted me from an open source user to open source contributor!
+
+
+Was there something which was hard for you during the contribution process
+--------------------------------------------------------------------------
+
+Contributing to the project, as a non-developer, is very easy and intuitive by
+either opening issues on GitHub or translating via Crowdin or even committing
+updated documentation to git repository through GitHub Desktop client.
+All of the aforementioned was new to me and I've learned in depth how to use
+these tools. I've also had the pleasure to familiarize myself with project documentation
+- Sphinx and reStructuredText are my two new best friends.
+
+
+Which is the best part of contributing to Kiwi TCMS
+---------------------------------------------------
+
+Being able to actively improve an application that we use on a daily basis in our
+development process. Getting to know more people from all around the globe and see their
+insights about software quality assurance thus learning something new every day.
+
+What is next for you in professional and open source plan
+---------------------------------------------------------
+
+Professionally I'm 100% committed to [Better (by Marand)](http://better.care) and helping us achieve
+the best standard of quality for health care applications which also incorporates
+using the knowledge gathered by following and/or contributing to open source.
+I'm going to continue contributing to Kiwi TCMS and
+Captura and if time allows maybe involve myself with some other interesting projects.
+
+
+
+*Thank you, PrimoĆŸ! Happy testing!*
diff --git a/content/2019-07-08-contributor-profile-aneta.markdown b/content/2019-07-08-contributor-profile-aneta.markdown
new file mode 100644
index 00000000..d693edaa
--- /dev/null
+++ b/content/2019-07-08-contributor-profile-aneta.markdown
@@ -0,0 +1,112 @@
+Title: Contributor profile: Aneta Petkova
+headline: I learned I can build software, not just test it
+date: 2019-07-08 17:53
+og_image: images/team/hiring.png
+twitter_image: images/team/hiring.png
+comments: true
+tags: community
+
+
+Happy Monday, testers!
+In this [series](/blog/tags/community/) we are introducing the contributors behind Kiwi TCMS.
+This is our community and these are their stories.
+
+
+
+

+
Aneta Petkova - QA Chapter Lead at SumUp
+
+
+
+ Aneta is a software engineer navigating the complex field of QA
+ since her first "grownup" job. She's been working in the area of
+ test automation for web applications using different programming languages and tools.
+
+ Her mission is to inspire people to think about quality from the
+ very inception of ideas and to blur the line between developers and
+ QA specialists.
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+What is your professional background
+------------------------------------
+
+I have an engineering degree in computer science and I've spend the last 8 years in Quality Assurance.
+Java, TestNG and UI automation with Selenium WebDriver are my strongest technical skills but
+I use different programming languages and tools.
+
+> I believe languages and tools should only support an engineer and never define them.
+
+Currently I am the QA Chapter Lead at [SumUp](https://sumup.com/),
+where I can work towards achieving my goals in an amazing team of people that do what they love.
+
+
+When did you use open source for the first time
+-----------------------------------------------
+
+The first time I remember was in 2011, but I've probably used it before and just didn't pay attention.
+To me it seemed the same as proprietary, and I guess that means it was good.
+
+
+Describe your contributions to the project
+------------------------------------------
+
+I created [kiwitcms-junit-plugin](https://github.com/kiwitcms/junit-plugin/).
+This is a native Java library which you can install via Maven Central. It
+will discover your automated test suite and publish test execution results in
+Kiwi TCMS. This plugin is very simple and requires only minimal configuration
+before it is ready to work.
+Check-out the example in [TP-25](https://tcms.kiwitcms.org/plan/25/)!
+
+*editor comment:* Aneta and Ivo (Kiwi TCMS) hosted the
+["Git crash course" workshop at HackConf 2018](https://www.youtube.com/watch?v=r5sp0e7LsDc).
+Kiwi TCMS will be hosting 2 workshops this year so stay tuned!
+
+
+Why did you decide to contribute to Kiwi TCMS
+---------------------------------------------
+
+I had recently switched Java for Ruby and I was feeling nostalgic.
+Also, I had spent my entire career so far in QA and I wanted to slip on
+the developer shoes for at least a little bit.
+
+
+Was there something which was hard for you during the contribution process
+--------------------------------------------------------------------------
+
+I'm used to working in a team and when I started working on this project
+I was the only active Java developer. Luckily for me, I live in the time of StackOverflow,
+so I managed to get most of my questions answered by strangers on the Internet.
+
+> I learned tons of stuff, but mostly I learned I can build software, not just test it!
+
+
+Which is the best part of contributing to Kiwi TCMS
+---------------------------------------------------
+
+Doing something that has the potential to help others and that could be improved upon.
+
+
+What is next for you in professional and open source plan
+---------------------------------------------------------
+
+My current focus is moving slightly into DevOps direction and I am really overwhelmed
+by the amount of things to learn. I feel there is so much I want to experiment with.
+I am not really planning anything related to open source - it has never been a goal for me -
+but when I come across a project I feel strongly about, I'd probably be tempted to contribute.
+
+
+*Thank you, Aneta! Happy testing!*
diff --git a/content/2019-08-02-version-6.11.rst b/content/2019-08-02-version-6.11.rst
new file mode 100644
index 00000000..b6cb359f
--- /dev/null
+++ b/content/2019-08-02-version-6.11.rst
@@ -0,0 +1,158 @@
+Kiwi TCMS 6.11
+##############
+
+:headline: security updates, new telemetry, improvements and bug-fixes
+:date: 2019-08-02 09:40
+:comments: true
+:tags: releases
+
+
+We're happy to announce Kiwi TCMS version 6.11!
+This is a security and improvement release which updates
+many internal dependencies, adds 2 new Telemetry reports, updates
+TestPlan and TestCase cloning pages and provides several other
+improvements and bug fixes. You can explore everything at
+`https://public.tenant.kiwitcms.org `_!
+
+Supported upgrade paths::
+
+ 5.3 (or older) -> 5.3.1
+ 5.3.1 (or newer) -> 6.0.1
+ 6.0.1 -> 6.1
+ 6.1 -> 6.1.1
+ 6.1.1 -> 6.2 (or newer)
+
+Docker images::
+
+ pub.kiwitcms.eu/kiwitcms/kiwi latest 6a8249d23a67 1.011 GB
+ pub.kiwitcms.eu/kiwitcms/kiwi 6.2 7870085ad415 957.6 MB
+ pub.kiwitcms.eu/kiwitcms/kiwi 6.1.1 49fa42ddfe4d 955.7 MB
+ pub.kiwitcms.eu/kiwitcms/kiwi 6.1 b559123d25b0 970.2 MB
+ pub.kiwitcms.eu/kiwitcms/kiwi 6.0.1 87b24d94197d 970.1 MB
+ pub.kiwitcms.eu/kiwitcms/kiwi 5.3.1 a420465852be 976.8 MB
+
+
+Changes since Kiwi TCMS 6.10
+----------------------------
+
+
+Security
+~~~~~~~~
+
+- Update Django
+ `from 2.2.2 to 2.2.4 `_
+- Update marked to version 0.7.0, see
+ `release notes `_
+
+
+Improvements
+~~~~~~~~~~~~
+
+- Update python-gitlab from 1.8.0 to 1.10.0
+- Update django-grappelli from 2.12.3 to 2.13.1
+- Update django-simple-history from 2.7.2 to 2.7.3
+- Update django-attachments to 1.4.1
+- Update PyGithub from 1.43.7 to 1.43.8
+- Update patternfly to version 3.59.3
+- Update prismjs to version 1.17.0
+- Add Testing Status Matrix telemetry
+- Add Testing Execution Trends telemetry
+- Make it possible to attach files directly inside Test Plan page
+- Make it possible to attach files directly inside Test Execution widget
+- Convert Clone TestPlan page to Patternfly, greatly simplify the UI
+ and update behavior:
+
+ - Cloned TP author will always be set to the current user
+ - Cloned TC author will always be set to the current user
+ - Always keep the original default tester for test cases when cloning
+ - Refactor to class based view
+ - Fix a problem where Version values failed form validation b/c
+ we've been trying to filter based on non-existing field
+ ``product_id`` instead of just ``product``
+ - Fixes a problem where erroneous Version value was shown in the UI
+
+- Convert Clone TestCase page to Patternfly, greatly simplify the UI
+ and update behavior. Fixes
+ `Issue #838 `_:
+
+ - Allow cloning into multiple test plans
+ - Remove 'Filter another plan' option. Will be replaced by
+ 'Add TP to TC', see
+ `Issue #1021 `_
+ - Always update sortkey. Cloned TC will show at the bottom of the
+ TestPlan
+ - Cloned TC author will always be set to the current user
+ - Always keep the original default tester
+
+
+API
+~~~
+
+- First parameter of RPC method ``Bug.report()``
+ has been renamed from ``test_case_run_id`` to ``execution_id``. This may
+ break existing API scripts which try to pass this argument by name
+ instead of by position!
+
+
+Settings
+~~~~~~~~
+
+- Allow ENV variables ``KIWI_USE_TZ`` and ``KIWI_TIME_ZONE`` to control
+ settings ``USE_TZ`` and ``TIME_ZONE``. Fixes
+ `Issue #982 `_ (Jason Yi)
+
+
+Bug fixes
+~~~~~~~~~
+
+- Fix wrong permission label when deleting comments. Fixes
+ `Issue #1010 `_
+
+
+Refactoring
+~~~~~~~~~~~
+
+- Disable unnecessary pylint messages for missing-permission-required
+ checker (Svetlomir Balevski)
+- Remove unnecessary ``from_plan`` URL variable making cleaner URLs
+- kiwi_lint: Don't check nested functions for permissions
+- Remove and regroup JavaScript functions
+- Instruct pyup-bot to monitor ``requirements/tarballs.txt`` for updates
+
+
+Translations
+~~~~~~~~~~~~
+
+- Updated `French translation `_
+- Updated `Slovenian translation `_
+
+
+How to upgrade
+---------------
+
+`Backup <{filename}2018-07-30-docker-backup.markdown>`_ first!
+If you are using Kiwi TCMS as a Docker container then::
+
+ cd path/containing/docker-compose/
+ docker-compose down
+ docker pull pub.kiwitcms.eu/kiwitcms/kiwi
+ docker pull centos/mariadb
+ docker-compose up -d
+ docker exec -it kiwi_web /Kiwi/manage.py migrate
+
+**WHERE:** ``docker-compose.yml`` has been updated from your private git repository!
+The file provided in our GitHub repository is an example. Not for production use!
+
+**WARNING:** ``pub.kiwitcms.eu/kiwitcms/kiwi:latest`` and ``docker-compose.yml`` will
+always point to the latest available version! If you have to upgrade in steps,
+e.g. between several intermediate releases, you have to modify the above workflow::
+
+ # starting from an older Kiwi TCMS version
+ docker-compose down
+ docker pull pub.kiwitcms.eu/kiwitcms/kiwi:
+ edit docker-compose.yml to use pub.kiwitcms.eu/kiwitcms/kiwi:
+ docker-compose up -d
+ docker exec -it kiwi_web /Kiwi/manage.py migrate
+ # repeat until you have reached latest
+
+Happy testing!
diff --git a/content/2019-08-09-autumn-conferences.markdown b/content/2019-08-09-autumn-conferences.markdown
new file mode 100644
index 00000000..14cdd78b
--- /dev/null
+++ b/content/2019-08-09-autumn-conferences.markdown
@@ -0,0 +1,45 @@
+Title: Kiwi TCMS conference presence, AW2019
+headline: 11 events, 5 countries during Aug-Nov
+date: 2019-08-09 10:55
+comments: true
+og_image: images/roadtrip.png
+twitter_image: images/roadtrip.png
+tags: community, events
+
+Your favorite open source test case management system is going on tour again.
+During the next several months we will be at:
+
+* [DEV.BG All in One, Aug 24, Sofia](https://www.facebook.com/events/647230689047274/)
+ where we will have an info booth
+* [Tabara de Testare Meetup, Sept 25, Bucharest](https://www.facebook.com/Tabara.de.Testare/)
+ where Alex Todorov will join a discussion panel. To be confirmed!
+* [SEETEST, Sept 26-27, Bucharest](https://seetest.org/) -
+ where you can meet with Alex Todorov and some of our community friends and contributors
+* [RuseConf, Sept 28, Ruse](https://ruseconf.com/) -
+ where Alex Todorov and our friend Gjore Zaharchev (Seavus, Macedonia) will host
+ 2 presentations
+* [Testival Meetup, Oct 1-2, Zagreb](https://www.meetup.com/testival/)
+* [PyCon Balkan, Oct 3-5, Belgrade](https://pyconbalkan.com/) where:
+ - Alex Todorov will present *Extending your static analysis for fun and profit*
+ - Kiwi TCMS team will host open source prints for 1 or 2 days (more info soon)
+* [Quality Assurance According to Einstein, Oct 6, Kikinda](https://pionir.zamphyr.com/)
+ where Alex Todorov will be meeting up with the local technical community as part of our
+ joint work with Zamphyr
+* [HackConf, Oct 11-13, Sofia](https://www.hackconf.bg/bg/) where:
+ - Rayna Stankova & Ivaylo Ivanov will be hosting *Git for beginners* workshop
+ - Anton Sankov & Alex Todorov will be hosting *Python for beginners* workshop
+ - you can use **KIWITCMS** discount code
+* [TestCon Europe, Oct 15-17, Vilnius](https://www.testcon.lt/)
+ where Alex Todorov will present *Finding security issues in open source*
+ and *Extend your static analysis for fun and profit* (backup presentation
+ in case other speakers don't show up)
+* [TestWarez, Oct 24-25, Ossa (near Warsaw)](https://2019.testwarez.pl/).
+* [OpenFest, Nov 2-3, Sofia](http://www.openfest.org/)
+ where we will have an info booth
+* [ISTA Conference, Nov 14-15, Sofia](https://www.istacon.org/)
+ where you can meet with Alex Todorov and some of our contributors and
+ customers
+
+
+Feel free to ping us at [@KiwiTCMS](https://twitter.com/KiwiTCMS) or look for the
+kiwi bird logo and come to say hi. Happy testing!
diff --git a/content/2019-09-03-oss-sprint-belgrade.markdown b/content/2019-09-03-oss-sprint-belgrade.markdown
new file mode 100644
index 00000000..4ad5f03b
--- /dev/null
+++ b/content/2019-09-03-oss-sprint-belgrade.markdown
@@ -0,0 +1,199 @@
+Title: Open source sprints at PyCon Balkan in Belgrade
+headline: join us, learn and contribute to Kiwi TCMS
+date: 2019-09-03 12:46
+comments: true
+tags: community, events
+
+
+Next month our team will be at
+[PyCon Balkan, Oct 3-5](https://pyconbalkan.com/) in Belgrade. Together with
+presentation and a workshop we are going to host open source sprints!
+These will be an informal gathering where participants will be able to
+learn more about how open source works and go through their first
+contributions. This is ideal for students and less experienced people
+but we welcome everyone. There will be tasks ranging from easy to very hard!
+
+
+**Who:** 4 mentors from Kiwi TCMS and you!
+
+**What:** full day of peer programming and contributing to Kiwi TCMS
+
+**Where:** room will be announced on the days of the conference,
+ follow [@KiwiTCMS](https://twitter.com/KiwiTCMS) for more info
+
+**Why:** up your tech skills, build your GitHub profile and have fun together
+
+
+Translate Kiwi TCMS
+-------------------
+
+Difficulty: easy
+
+We have enabled Serbian language in our translation system. To get started
+checkout our
+[translation contribution](https://kiwitcms.readthedocs.io/en/latest/contribution.html#translation)
+page.
+Once strings are translated `kiwitcms-bot` will automatically open a pull
+request with the new text.
+
+
+Find unused CSS classes
+-----------------------
+
+Difficulty: easy
+
+This should be relatively easy. For each class/selector defined in our CSS files
+search (grep) if any of the HTML templates use it. If it is not in use then remove
+it.
+
+
+Find unused JavaScript code
+---------------------------
+
+Difficulty: easy
+
+Similar to the above. We're not 100% certain but there could be legacy JavaScript
+functions which are no longer in use. Find them and remove them! At the very least
+you have confirmed that all functions are in use!
+
+
+CodeClimate Minor severity issues
+---------------------------------
+
+Difficulty: easy to moderate
+
+Check-out the
+[list of Minor severity issues](https://codeclimate.com/github/kiwitcms/Kiwi/issues?severity%5B%5D=minor&status%5B%5D=&status%5B%5D=open&status%5B%5D=confirmed&engine_name%5B%5D=structure&engine_name%5B%5D=duplication&engine_name%5B%5D=bandit&engine_name%5B%5D=csslint&engine_name%5B%5D=fixme&engine_name%5B%5D=radon&engine_name%5B%5D=sonar-python).
+There are many of them:
+
+- CSS lint issues (we suggest you start with this one)
+- functions longer than 25 lines of code
+- functions with bigger cognitive and cyclomatic complexity
+- modules longer than 250 LOC
+
+Try fixing a few to see how it goes and continue if you feel confident.
+Not everything may be an issue so if you have any questions ask someone from our team.
+
+
+CodeClimate Major severity issues
+---------------------------------
+
+Difficulty: moderate to hard
+
+Check-out the
+[list of Major severity issues](https://codeclimate.com/github/kiwitcms/Kiwi/issues?severity%5B%5D=major&status%5B%5D=&status%5B%5D=open&status%5B%5D=confirmed&engine_name%5B%5D=structure&engine_name%5B%5D=duplication&engine_name%5B%5D=bandit&engine_name%5B%5D=csslint&engine_name%5B%5D=fixme&engine_name%5B%5D=radon&engine_name%5B%5D=sonar-python).
+There are around 150 of them:
+
+- identical and similar code blocks
+- big modules
+- big functions
+
+Most of these require some sort of refactoring, either splitting snippets
+of code into smaller pieces (functions or sub-modules) or using one function
+in several places instead of 2 very similar but different functions, etc.
+Ask our team members about which approach they prefer for fixing these issues
+to minimize the effort spent here.
+
+
+CodeClimate Critical severity issues
+------------------------------------
+
+Difficulty: hard
+
+Check-out the
+[list of Critical severity issues](https://codeclimate.com/github/kiwitcms/Kiwi/issues?severity%5B%5D=critical&status%5B%5D=&status%5B%5D=open&status%5B%5D=confirmed&engine_name%5B%5D=structure&engine_name%5B%5D=duplication&engine_name%5B%5D=bandit&engine_name%5B%5D=csslint&engine_name%5B%5D=fixme&engine_name%5B%5D=radon&engine_name%5B%5D=sonar-python).
+All of these are functions with high cognitive complexity and
+the recommended way to deal with them is refactoring into
+[class based views](https://docs.djangoproject.com/en/2.2/topics/class-based-views/).
+
+
+Improve pylint health
+---------------------
+
+Difficulty: easy
+
+Execute pylint against the latest sources and start fixing the issues.
+Looking at [pylint logs](https://travis-ci.org/kiwitcms/Kiwi/jobs/579167487) the
+following items are relatively easy to work on:
+
+- Everything in module tcms.urls
+- Everything in module tcms.telemetry.api
+- Everything in module tcms.testruns.tests.test_views
+- Everything in module tcms.xmlrpc.forms
+- Everything in module tcms.testcases.tests.test_models
+- Everything in module tcms.core.forms.fields
+- Everything in module tcms.settings.common
+- Everything in module tcms.settings.test
+- All `module-in-directory-without-init` errors reported for module tcms.tests.\_\_init\_\_
+
+
+Note: `fixme`, `missing-permission-required` and `avoid-auto-field` errors are usually harder
+to resolve and will require more work/refactoring. If you feel confident go ahead and
+fix them, if not skip to the next error message.
+
+We also use a custom pylint checker which reports function based views.
+If you are looking for something harder to work on, then give it a try
+(see 3rd pylint line in `Makefile`) and refactor some of the existing
+view functions into class based views.
+
+
+Fix 3rd party security issues discovered by Bandit
+--------------------------------------------------
+
+Difficulty: moderate to hard
+
+Bandit is a static analysis tool similar to pylint. It focuses on discovering
+issues which may lead to security vulnerabilities. We have resolved all such
+issues in our own source code but we also execute Bandit against the entire
+Python dependency stack. There it finds thousands of issues, so much so that
+the reporter crashes.
+
+[In CI](https://travis-ci.org/kiwitcms/Kiwi/jobs/579167486) there are around
+130 issues reported. The best course of action here is to execute Bandit locally
+against the offending library and then figure out what to do:
+
+- report an issue upstream
+- send a pull request upstream
+- if these are test files maybe exclude them from the package (e.g. don't ship them for production)
+
+
+Note: inside Travis CI we have all runtime and testing dependencies which is more
+than what we have inside the official Docker image for Kiwi TCMS.
+
+
+Work on reported issues
+-----------------------
+
+The following issues look suitable for a sprint and don't require lots of
+background knowledge. You can also find them using the
+[`PyConBalkan`](https://github.com/kiwitcms/Kiwi/labels/PyConBalkan) label on
+GitHub:
+
+- [#212](https://github.com/kiwitcms/Kiwi/issues/212) - moderate - Convert jQ to $ -
+ this is an easy search & rename but will require more extensive manual testing
+- [#431](https://github.com/kiwitcms/Kiwi/issues/431) - moderate to hard - Remove JavaScript fireEvent() -
+ 17 matches in `static/js/`. Must be replaced with direct function calls
+- [#652](https://github.com/kiwitcms/Kiwi/issues/652) - easy - Removal of labels from form fields -
+ all labels must be included in the HTML template and marked for translation
+- [#681](https://github.com/kiwitcms/Kiwi/issues/681), [#682](https://github.com/kiwitcms/Kiwi/issues/682) - moderate -
+ Move API modules & their tests from `xmlrpc/api/.py` to `/api.py`. These have good test
+ coverage so you have to make sure you don't break anything
+- [#971](https://github.com/kiwitcms/Kiwi/issues/971) - moderate - manage.py command for changing Site URL -
+ will help with automatic provisioning, e.g. Ansible. For howto see
+ [Django docs](https://docs.djangoproject.com/en/2.2/howto/custom-management-commands/)
+- [#1021](https://github.com/kiwitcms/Kiwi/issues/1021) - moderate - Update TestCase page UI to allow adding TestPlans to cases -
+ use `TestPlan.add_case()` API method and refresh the widget. See how Tags and Components cards work
+ in the same page
+- [#1070](https://github.com/kiwitcms/Kiwi/issues/1070) - moderate - manage.py command for checking email settings -
+ will help with troubleshooting misconfigured email. Must raise exceptions if something fails.
+ For howto see
+ [Django docs](https://docs.djangoproject.com/en/2.2/howto/custom-management-commands/)
+- [#733](https://github.com/kiwitcms/Kiwi/issues/733),
+ [#736](https://github.com/kiwitcms/Kiwi/issues/736),
+ [#738](https://github.com/kiwitcms/Kiwi/issues/738),
+ [#883](https://github.com/kiwitcms/Kiwi/issues/883),
+ [#1089](https://github.com/kiwitcms/Kiwi/issues/1089) - hard to very hard - New checkers for pylint -
+ Kiwi TCMS uses customized pylint checkers to discover various conditions. We need a few more
+ of them and/or update of the existing ones
+
+We hope to see you in Belgrade. Until then: Happy testing!
diff --git a/content/2019-09-24-version-7.0.rst b/content/2019-09-24-version-7.0.rst
new file mode 100644
index 00000000..835e4532
--- /dev/null
+++ b/content/2019-09-24-version-7.0.rst
@@ -0,0 +1,310 @@
+Kiwi TCMS 7.0
+#############
+
+:headline: major release with security updates & many changes
+:date: 2019-09-24 10:30
+:comments: true
+:tags: releases
+
+
+We're happy to announce Kiwi TCMS version 7.0!
+This is a major release which includes security updates,
+significant database schema and API changes, many improvements,
+removed functionality, bug fixes, substantial internal refactoring and
+several new languages. You can explore everything at
+`https://public.tenant.kiwitcms.org `_!
+
+The 7.0 version number happily coincides with the fact that we've surpassed
+70000 downloads from `Docker Hub `_.
+
+Supported upgrade paths::
+
+ 5.3 (or older) -> 5.3.1
+ 5.3.1 (or newer) -> 6.0.1
+ 6.0.1 -> 6.1
+ 6.1 -> 6.1.1
+ 6.1.1 -> 6.2 (or newer)
+
+Docker images::
+
+ pub.kiwitcms.eu/kiwitcms/kiwi latest d34dc6d896bf 584 MB
+ pub.kiwitcms.eu/kiwitcms/kiwi 6.2 7870085ad415 957 MB
+ pub.kiwitcms.eu/kiwitcms/kiwi 6.1.1 49fa42ddfe4d 955 MB
+ pub.kiwitcms.eu/kiwitcms/kiwi 6.1 b559123d25b0 970 MB
+ pub.kiwitcms.eu/kiwitcms/kiwi 6.0.1 87b24d94197d 970 MB
+ pub.kiwitcms.eu/kiwitcms/kiwi 5.3.1 a420465852be 976 MB
+
+
+Changes since Kiwi TCMS 6.11
+----------------------------
+
+
+Security
+~~~~~~~~
+
+- API method ``BugSystem.filter()`` has been removed (now unused) but
+ it was possible to use this method to steal passwords or keys used for
+ Issue Tracker integration. This vulnerability could be exploited by
+ users logged into Kiwi TCMS and is classified as medium severity!
+ We advise you to change your integration API keys and passwords
+ immediately!
+
+
+Improvements
+~~~~~~~~~~~~
+
+- Update Django from 2.2.4 to 2.2.5
+- Update django-uuslug from 1.1.8 to 1.1.9
+- Update mysqlclient from 1.4.2.post1 to 1.4.4
+- Update python-bugzilla from 2.2.0 to 2.3.0
+- Update python-gitlab from 1.10.0 to 1.11.0
+- Update patternfly from 3.59.3 to 3.59.4
+- Reduce docker image size from 1.01 GB to under 600 MB
+- Add TestCase Health telemetry
+- Add support for Redmine issue tracker. Fixes
+ `Issue #41 `_ (Jesse C. Lin)
+- Add breathing room around HTML form's submit buttons (Rady Madjev)
+- New TestRun page action: bulk-add hyperlinks to TestExecution(s)
+- Make it possible to disable HTTPS by specifying the
+ ``KIWI_DONT_ENFORCE_HTTPS`` environment variable! Fixes
+ `Issue #1036 `_ (Marco Descher)
+- Documentation updates, including internal style checker. Fixes
+ `Issue #1000 `_ (Prome88)
+- When linking a TestExecution to a defect and choosing to update the
+ Issue Tracker Kiwi TCMS will not add a comment pointing back to
+ TR ID/summary/URL and TE ID/summary. This provides more detailed information
+ about the reproducer instead of just linking to a TestCase without any
+ specific execution details like we did in the past
+- Display additional defect information via Issue Tracker integration.
+ On Patternfly pages which show defect URLs this is accessible via a
+ small info icon. Fixes
+ `Issue #117 `_
+- Add minimalistic defect tracker functionality. Fixes
+ `Issue #699 `_
+
+ - integrated with Issue Tracker integration layer as if it was
+ an external system
+ - when adding hyperlink to TestExecition (also via API method
+ ``TestExecution.add_link()``) this is special cased and the
+ references between ``Bug`` and ``TestExecution`` are always updated
+ - when clicking 'Report bug' from inside Test Execution the new
+ defect is reported automatically and a new browser window opens to
+ display the information
+
+
+Database migrations
+~~~~~~~~~~~~~~~~~~~
+
+- Tell the migration planner to apply
+ ``testruns.0006_rename_test_case_run_to_test_execution`` after
+ ``linkreference.0001_squashed``. This enables subsequent migrations
+ and new functionality to be applied without crashing.
+
+ .. warning::
+
+ Django should be able to handle this automatically both for
+ existing installations and for new ones. In any case make sure
+ you backup your data first and make a dry-run to verify that
+ nothing breaks!
+
+- Remove fields ``url_reg_exp``, ``validate_reg_exp`` and ``description`` from
+ ``BugSystem`` model
+- Update the following fields in ``LinkReference`` model:
+
+ - rename ``test_case_run`` to ``execution``
+ - add indexing for ``created_on`` and ``url``
+ - add ``is_defect`` field
+
+- Apply ``LinkReference`` permissions to default group ``Tester``. Fixes
+ `Issue #881 `_
+
+ .. warning::
+
+ Administrators of existing applications will need to
+ apply these permissions by hand via the Admin section.
+
+- Remove ``testcases.Bug`` model, replaced with ``LinkReference``.
+ Closes `Issue #1029 `_ and
+ obsoletes `Issue #320 `_.
+
+ .. note::
+
+ Linking bugs to TestExecution is now performed via URLs instead of
+ keeping a reference to BUG-ID and trying to reconstruct the URL
+ on the fly.
+
+ .. warning::
+
+ The model named ``Bug`` which is added by subsequent migrations
+ refers to defects reported into Kiwi TCMS minimalistic defect tracker!
+
+- New model ``bugs.Bug`` is now available. Permissions of type
+ ``bugs | bug | Can ...`` will be applied to the default group named
+ ``Tester`` only for new installations.
+
+ .. warning::
+
+ Administrators of existing applications will need to
+ apply these permissions by hand via the Admin section.
+
+
+API
+~~~
+
+- ``TestExecution.add_link()`` method now returns serialized
+ ``LinkReference`` object.
+- ``TestExecution.remove_link()`` method now accepts one parameter of type
+ ``dict`` used to filter the objects which to remove
+- ``TestExecution.get_links()`` method now accepts one parameter of type
+ ``dict`` instead of ``int``
+- ``TestExecution.add_link()`` method signature changed from
+ (int, str, str) to (dict), where the single parameter holds field values for
+ the ``LinkReference`` model
+- Remove ``TestExecution.add_bug()`` method, use ``TestExecution.add_link()``
+- Remove ``TestExecution.remove_bug()`` method, use
+ ``TestExecution.remove_link()``
+- Remove ``TestCase.add_bug()`` method
+- Remove ``TestCase.remove_bug()`` method
+- Remove ``Bug.remove()`` method, use ``TestExecution.remove_link()``
+- Remove ``Bug.create()`` method, use ``TestExecution.add_link()``
+- Add method ``Bug.details()`` which together with the underlying
+ ``IssueTracker.details()`` is the foundation of how Kiwi TCMS fetches
+ extra details from the issue tracking system. The default implementation
+ uses OpenGraph protocol to collect the data that will be shown. You may
+ override ``.details()`` for each issue tracker (or add your own IT) to
+ extend this functionality. Information is cached for 1 hour by default.
+ References
+ `Issue #117 `_
+- Add methods ``Bug.add_tag()`` and ``Bug.remove_tag()``
+- Existing method with name ``Bug.filter()`` has changed behavior. It is
+ now used to query objects from Kiwi TCMS minimalistic defect tracker
+
+
+Removed functionality
+~~~~~~~~~~~~~~~~~~~~~
+
+- Remove ``IssueTrackerType.all_issues_link()`` method. This was used in
+ TestRun Report page to show a single link that will open all bugs in the
+ Issue Tracker. Most trackers don't support this and the UI portion has
+ been rewritten
+- Remove ``LinkOnly`` issue tracker - obsolete because all defects are
+ now added to TestExecutions via their URLs
+- Remove bulk-add/bulk-remove of bugs in TestRun page, replaced by bulk-add
+ for hyperlinks
+
+
+Settings
+~~~~~~~~
+
+- Respect the ``CACHES`` setting, see
+ `Django docs `_
+ for more info. Initially this setting is used to cache defect details received
+ via Issue Tracker integration. See
+ `Issue #117 `_
+
+
+Bug fixes
+~~~~~~~~~
+
+- Don't auto-download FontAwesome for SimpleMDE. Resolves icons disappearing
+ on pages which have the markdown editor. Fixes
+ `Issue #905 `_
+- Reorder HTML elements so Delete button is still visible in TestCase review
+ comment section. Fixes
+ `Issue #1013 `_ (Rady Madjev)
+- Remove section that displays bugs in TestExecution container. Bugs are now
+ denoted by a small icon next to their hyperlink. Closes
+ `Issue #475 `_
+- Cache Issue Tracker connections per ``base_url``. Fixes
+ `Issue #290 `_
+
+
+Refactoring
+~~~~~~~~~~~
+
+- Lots of refactoring from function based views to class based views (Rady Madjev)
+- Use JavaScript and the API to remove case execution instead of dedicated
+ backend function (Rady Madjev)
+- Update pylint directives around missing permissions (Svetlomir Balevski)
+- Fix typo in identifier. Fixes
+ `CID 344186 `_
+- Use ``TestExecution.add_link()`` and ``TestExecution.remove_link()`` in UI
+ instead of dedicated backend function.
+- Remove unused LinkReference views, forms and tests modules
+
+
+Translations
+~~~~~~~~~~~~
+
+- Introduce a translation mode where you can translate the interface via
+ in-context editor. For more information see
+ `Translation guide `_.
+ Fixes `Issue #1098 `_
+- Updated `Albanian translation `_
+- Updated `Bulgarian translation `_
+- Updated `Chinese Traditional translation `_
+- Updated `French translation `_
+- Updated `Greek translation `_
+- Updated `Italian translation `_
+- Updated `Slovenian translation `_
+- Updated `Turkish translation `_
+
+For more information check-out
+`all supported languages `_.
+To request new language
+`click here `_!
+
+
+junit.xml-plugin v0.4
+---------------------
+
+A few days ago we have also released
+`kiwitcms-junit.xml-plugin `_
+v0.4 with the following changes:
+
+- Update junitparser from 1.3.2 to 1.3.4
+- Also support XML files with root tag (Katalon Studio). Fixes
+ `Issue #9 `_
+
+
+tap-plugin v0.4
+---------------
+
+We have also released
+`kiwitcms-tap-plugin `_
+v0.4 with the following changes:
+
+- Include traceback from TAP file as TestExecution comment. Fixes
+ `Issue #7 `_
+ (Christophe CHAUVET)
+
+
+How to upgrade
+---------------
+
+`Backup <{filename}2018-07-30-docker-backup.markdown>`_ first!
+If you are using Kiwi TCMS as a Docker container then::
+
+ cd path/containing/docker-compose/
+ docker-compose down
+ docker pull pub.kiwitcms.eu/kiwitcms/kiwi
+ docker pull centos/mariadb
+ docker-compose up -d
+ docker exec -it kiwi_web /Kiwi/manage.py migrate
+
+**WHERE:** ``docker-compose.yml`` has been updated from your private git repository!
+The file provided in our GitHub repository is an example. Not for production use!
+
+**WARNING:** ``pub.kiwitcms.eu/kiwitcms/kiwi:latest`` and ``docker-compose.yml`` will
+always point to the latest available version! If you have to upgrade in steps,
+e.g. between several intermediate releases, you have to modify the above workflow::
+
+ # starting from an older Kiwi TCMS version
+ docker-compose down
+ docker pull pub.kiwitcms.eu/kiwitcms/kiwi:
+ edit docker-compose.yml to use pub.kiwitcms.eu/kiwitcms/kiwi:
+ docker-compose up -d
+ docker exec -it kiwi_web /Kiwi/manage.py migrate
+ # repeat until you have reached latest
+
+Happy testing!
diff --git a/content/2019-10-29-version-7.1.rst b/content/2019-10-29-version-7.1.rst
new file mode 100644
index 00000000..434e3392
--- /dev/null
+++ b/content/2019-10-29-version-7.1.rst
@@ -0,0 +1,201 @@
+Kiwi TCMS 7.1
+#############
+
+:headline: improvement release with DB, API and translation changes
+:date: 2019-10-29 13:40
+:comments: true
+:tags: releases
+
+
+We're happy to announce Kiwi TCMS version 7.1!
+This is a small improvement update which includes
+database schema and API changes, several other improvements,
+internal refactoring and updated translations.
+You can explore everything at
+`https://public.tenant.kiwitcms.org `_!
+
+
+Supported upgrade paths::
+
+ 5.3 (or older) -> 5.3.1
+ 5.3.1 (or newer) -> 6.0.1
+ 6.0.1 -> 6.1
+ 6.1 -> 6.1.1
+ 6.1.1 -> 6.2 (or newer)
+
+Docker images::
+
+ pub.kiwitcms.eu/kiwitcms/kiwi latest c8cf36ac5ca5 602 MB
+ pub.kiwitcms.eu/kiwitcms/kiwi 6.2 7870085ad415 957 MB
+ pub.kiwitcms.eu/kiwitcms/kiwi 6.1.1 49fa42ddfe4d 955 MB
+ pub.kiwitcms.eu/kiwitcms/kiwi 6.1 b559123d25b0 970 MB
+ pub.kiwitcms.eu/kiwitcms/kiwi 6.0.1 87b24d94197d 970 MB
+ pub.kiwitcms.eu/kiwitcms/kiwi 5.3.1 a420465852be 976 MB
+
+
+Changes since Kiwi TCMS 7.0
+---------------------------
+
+
+Improvements
+~~~~~~~~~~~~
+
+- Update django from 2.2.5 to 2.2.6
+- Update python-gitlab from 1.11.0 to 1.12.1
+- Update pygithub from 1.43.8 to 1.44
+- Update psycopg2 from 2.8.3 to 2.8.4
+- Add help tooltips in all telemetry pages
+- Better styling for checkboxes in 'Add hyperlink' dialog,
+ part of TestRun page
+- Add hyperlink validation. Fixes
+ `Issue #1147 `_
+
+
+Database migrations
+~~~~~~~~~~~~~~~~~~~
+
+- Add ``bugs`` permissions to ``Tester`` group. Will make any difference
+ only if upgrading from existing installation
+
+
+API
+~~~
+
+- New method ``Bug.remove()``
+
+
+Bug fixes
+~~~~~~~~~
+
+- Always build with the latest versions of translations
+- Add 'Delete' menu item in Bugs page. Fixes #1153
+ `Issue #1153 `_
+- When deleting hyperlink from TestExecution hide the actual UI
+ elements from the page
+- Fix failure to delete TCs when the number of TCs inside TP is greater
+ than 100. Fixes
+ `Issue #1149 `_ and
+ `Sentry KIWI-TCMS-8F `_
+
+
+Refactoring
+~~~~~~~~~~~
+
+- Rename directory ``xmlrpc`` to ``rpc`` and pylint updates. Refs
+ `Issue #682 `_
+ (Matej Aleksandrov, Sinergise)
+- Remove labels from form fields, Refs
+ `Issue #652 `_ (Azmi YĂKSEL)
+- New base class for tests around permissions (Svetlomir Balevski)
+- New "blueprint" test case around permissions to make testing in this area more
+ robust
+- Refactor many views from function based to class based
+- Update stale tests in ``tcms/core/tests/`` and make sure they aren't ignored
+ by the test runner
+- Remove empty class ``XMLRPCBaseCaseForm``
+- Remove ``XMLRPCNewCaseForm``, duplicate of ``NewCaseForm``
+- Remove ``rpc.forms.UpdateCaseForm`` in favor of ``XMLRPCUpdateCaseForm``
+- Update only English sources with new strings as a temporary workaround b/c
+ Crowdin uses different formatting heuristics than gettext. This will minimize
+ the number of .po format changes
+- A few pylint fixes
+
+
+Translations
+~~~~~~~~~~~~
+
+- Updated `Albanian translation `_ - 97%
+- Updated `Bulgarian translation `_ - 91%
+- Updated `Chinese Simplified `_ - 71%
+- Updated `Greek translation `_ - 44%
+- Updated `Italian translation `_ - 97%
+- Updated `Japanese translation `_ - 0%
+- Updated `Macedonian translation `_ - 11%
+- Updated `Russian translation `_ - 97%
+- Updated `Slovenian translation `_ - 100%
+- Updated `Spanish translation `_ - 96%
+- Updated `Turkish translation `_ - 97%
+
+
+Acknowledgments
+----------------
+
+A special "thank you" goes to our friends from
+`PyCon Balkan `_ in Belgrade who allowed us to host
+an open source coding sprint in Belgrade during the conference!
+
+A second "thank you" goes to
+`Open Labs Hackerspace `_ who hosted a localization
+sprint in Tirana and contributed to several different languages!
+
+Thank you for being part of our community. Version 7.1 includes all of your
+contributions.
+
+
+Website updates
+---------------
+
+We're using the opportunity to share that website is now serving via SSL courtesy
+of GitHub and Let's encrypt.
+
+Our main page has also been updated to showcase some of our customers:
+Better (Slovenia), Minds, Inc. (USA), Musala Soft (Bulgaria). If you would like to
+feature your corporate logo and tell us how you use Kiwi TCMS then
+drop us an email!
+
+
+Upcoming conferences
+--------------------
+
+The next two events we are going to participate are:
+
+* `OpenFest, Nov 2-3, Sofia `_
+ where we will have an info booth
+* `ISTA Conference, Nov 14-15, Sofia `_
+ where you can meet with Alex Todorov and some of our contributors and
+ customers
+
+If you are around come and say "Happy testing"!
+
+
+Upcoming FOSDEM 2020
+--------------------
+
+We are happy to announce that our team, together with SUSE and Linaro will be
+hosting the
+`Testing and Automation Developer Room `_
+at FOSDEM in Brussels next February.
+
+Call for papers is open until December 10th 2019. Anything related to
+software testing and open source is welcome. Apply from the link above.
+
+
+How to upgrade
+---------------
+
+`Backup <{filename}2018-07-30-docker-backup.markdown>`_ first!
+If you are using Kiwi TCMS as a Docker container then::
+
+ cd path/containing/docker-compose/
+ docker-compose down
+ docker pull pub.kiwitcms.eu/kiwitcms/kiwi
+ docker pull centos/mariadb
+ docker-compose up -d
+ docker exec -it kiwi_web /Kiwi/manage.py migrate
+
+**WHERE:** ``docker-compose.yml`` has been updated from your private git repository!
+The file provided in our GitHub repository is an example. Not for production use!
+
+**WARNING:** ``pub.kiwitcms.eu/kiwitcms/kiwi:latest`` and ``docker-compose.yml`` will
+always point to the latest available version! If you have to upgrade in steps,
+e.g. between several intermediate releases, you have to modify the above workflow::
+
+ # starting from an older Kiwi TCMS version
+ docker-compose down
+ docker pull pub.kiwitcms.eu/kiwitcms/kiwi:
+ edit docker-compose.yml to use pub.kiwitcms.eu/kiwitcms/kiwi:
+ docker-compose up -d
+ docker exec -it kiwi_web /Kiwi/manage.py migrate
+ # repeat until you have reached latest
+
+Happy testing!
diff --git a/content/2019-11-11-override-bug-details.markdown b/content/2019-11-11-override-bug-details.markdown
new file mode 100644
index 00000000..015bed99
--- /dev/null
+++ b/content/2019-11-11-override-bug-details.markdown
@@ -0,0 +1,154 @@
+Title: How to override bug details in Kiwi TCMS
+date: 2019-11-11 11:11
+comments: true
+og_image: images/customization.png
+twitter_image: images/customization.png
+author: Alexander Todorov
+tags: customization
+
+
+Starting with version 7.0 Kiwi TCMS pages displaying URLs to bugs also
+contain an info icon which shows additional information as tooltip. These
+are designed to provide more contextual information about the bug. By default
+the tooltip shows the OpenGraph metadata for that URL. This article
+will explain how to override this in 2 different ways.
+
+
+
+
+Option #1: using the caching layer
+----------------------------------
+
+Additional bug information is cached on the application layer. The cache
+key is the bug URL! By default Kiwi TCMS uses local-memory caching which
+isn't accessible for external processes but can be reconfigured very easily.
+This example changes the `CACHES` setting to use a directory on the
+file system like so
+
+ :::python
+ CACHES = {
+ 'default': {
+ 'BACKEND': 'django.core.cache.backends.filebased.FileBasedCache',
+ 'LOCATION': '/tmp/kiwi-cache',
+ 'TIMEOUT': 3600,
+ }
+ }
+
+Then you need to poll your 3rd party bug tracker (and/or other systems) and
+update the cache for each URL
+
+ :::python
+ from django.core.cache import cache
+ from tcms.core.contrib.linkreference.models import LinkReference
+
+ for reference in LinkReference.objects.filter(is_defect=True):
+ # possibly filter objects coming only from your own bug tracker
+ # in case there are multiple trackers in use
+
+ # custom methods to grab more information. Must return strings
+ title = fetch_title_from_bug_tracker(reference.url)
+ description = fetch_description_from_bug_tracker(reference.url)
+
+ # store the information in Kiwi TCMS cache
+ cache.set(reference, {'title': title, 'description': description})
+
+Then execute the Python script above regularly. For example use the following
+as your cron script
+
+ :::shell
+ #!/bin/bash
+ export VIRTUAL_ENV=/venv
+ export PATH=/venv/bin:${PATH}
+ cat /path/to/cache_updater.py | /Kiwi/manage.py shell
+
+
+
+
+
+
+**IMPORTANT**
+
+- Kiwi TCMS expires cache entries after an hour. Either change
+ the `TIMEOUT` setting shown above or run your script more frequently
+- How to modify default Kiwi TCMS settings is documented
+ [here](https://kiwitcms.readthedocs.io/en/latest/installing_docker.html#customization)
+- The Python + Bash scripts above don't need to be on the same system where Kiwi TCMS
+ is hosted. However they need the same Python 3 virtualenv and cache settings as
+ Kiwi TCMS does
+- Information about Django's cache framework and available backends
+ can be found [here](https://docs.djangoproject.com/en/2.2/topics/cache/)
+- `memcached` is a supported cache backend option, see
+ [here](https://docs.djangoproject.com/en/2.2/topics/cache/#memcached)
+- [django-elasticache](https://pypi.org/project/django-elasticache/) is a
+ backend for Amazon ElastiCache which provides several configuration examples
+- Both [django-redis](https://github.com/niwinz/django-redis) and
+ [django-redis-cache](https://github.com/sebleier/django-redis-cache) are good
+ libraries which support Redis
+- Any 3rd party libraries must be `pip3 install`-ed into your own docker image
+
+
+Option #2: extend bug tracker integration
+-----------------------------------------
+
+Let's say you are already running a customized Docker image of Kiwi TCMS. Then
+you may opt-in to extend the existing bug tracker integration code which provides
+the information shown in the tooltip. In this example I've extended the
+`KiwiTCMS` bug tracker implementation but you can even provide your own from
+scratch
+
+ :::python
+ class ExtendedBugTracker(KiwiTCMS):
+ def details(self, url):
+ result = super().details(url)
+
+ result['title'] = 'EXTENDED: ' + result['title']
+ result['description'] += 'IMPORTANT
'
+
+ return result
+
+Then import the new `ExtendedBugTracker` class inside
+`tcms/issuetracker/types.py` like so
+
+ :::diff
+ index 9ad90ac..2c76621 100644
+ --- a/tcms/issuetracker/types.py
+ +++ b/tcms/issuetracker/types.py
+ @@ -17,6 +17,9 @@ from django.conf import settings
+
+ from tcms.issuetracker.base import IssueTrackerType
+ from tcms.issuetracker.kiwitcms import KiwiTCMS # noqa
+ +from tcms.issuetracker.kiwitcms import ExtendedBugTracker
+
+and change the bug tracker type, via https://tcms.example.com/admin/testcases/bugsystem/,
+to *ExtendedBugTracker*.
+
+
+
+**IMPORTANT**
+
+- *ExtendedBugTracker* may live anywhere on the filesystem but Python must be
+ able to import it
+- It is best to bundle all of your customizations into a Python package and
+ `pip3 install` it into your customized docker image
+- *ExtendedBugTracker* must be imported into `tcms/issuetracker/types.py` in order
+ for the admin interface and other functions to find it. You may also place the
+ import at the bottom of `tcms/issuetracker/types.py`
+- API documentation for bug tracker integration can be found
+ [here](https://kiwitcms.readthedocs.io/en/latest/modules/tcms.issuetracker.html)
+- Rebuilding the docker image is outside the scope of this article. Have a look
+ at this
+ [Dockerfile](https://github.com/MrSenko/kiwitcms-enterprise/blob/master/Dockerfile)
+ for inspiration
+
+
+**NOTE:** starting with [Kiwi TCMS v8.5]({filename}2020-07-10-version-8.5.rst)
+external bug tracker integration classes are listed in the `EXTERNAL_BUG_TRACKERS`
+setting. If you are using v8.5 or newer instead of
+importing `ExtendedBugTracker` in `tcms/issuetracker/types.py` you should
+override the list of available bug tracker integrations:
+
+ :::python
+ EXTERNAL_BUG_TRACKERS.append('mymodule.ExtendedBugTracker')
+
+
+Happy testing!
diff --git a/content/2019-11-26-fosdem2020.markdown b/content/2019-11-26-fosdem2020.markdown
new file mode 100644
index 00000000..f485a948
--- /dev/null
+++ b/content/2019-11-26-fosdem2020.markdown
@@ -0,0 +1,35 @@
+Title: Kiwi TCMS is going to FOSDEM 2020
+headline: Testing and Automation devroom & Open Source Test Management stand
+date: 2019-11-26 13:40
+og_image: images/fosdem/oss_tm_19_card.jpg
+twitter_image: images/fosdem/oss_tm_19_card.jpg
+comments: true
+tags: community, events
+
+
+
+Hello testers, Kiwi TCMS is going to [FOSDEM 2020](http://fosdem.org/).
+This is where you can find us:
+
+
+* Fri Jan 31st: [after 18:00 @ Delirium Café](https://fosdem.org/2020/beerevent/) -
+ we are taking part of the FOSDEM Beer Event where all participants are invited.
+ `Shout out with #KiwiTCMS` on Twitter if you can't find us in the crowd
+* Sat Feb 1st:
+ [Testing and Automation devroom](https://fosdem.org/2020/schedule/track/testing_and_automation/) -
+ we are proud to be co-hosting this devroom together with Linaro and SUSE.
+ CfP is open until Dec 10th 2019. Apply [here](https://fosdem-testingautomation.github.io/)!
+* Sun Feb 2nd: [Open Source Test Management stand](https://fosdem.org/2020/stands/) -
+ we will be together with our friends from SystemTestPortal and we are preparing
+ some real black-box testing for you!
+
+We would like to meet with all of you and talk about software testing, test management and
+test process organization. In case you are stuck for crazy ideas checkout
+[our project mission]({filename}2019-01-10-2019-mission.markdown) for inspiration.
+
+
+*Picture: FOSDEM'19 with Kiwi TCMS, ReportPortal & SystemTestPortal*
+
+Happy testing!
diff --git a/content/2019-12-09-version-7.2.rst b/content/2019-12-09-version-7.2.rst
new file mode 100644
index 00000000..83bac79e
--- /dev/null
+++ b/content/2019-12-09-version-7.2.rst
@@ -0,0 +1,183 @@
+Kiwi TCMS 7.2
+#############
+
+:headline: improvement and bug-fix release
+:date: 2019-12-09 10:25
+:comments: true
+:tags: releases
+
+
+We're happy to announce Kiwi TCMS version 7.2!
+This is an improvement & bug fix release which includes
+new database migrations and API methods, internal refactoring and updated
+translations.
+You can explore everything at
+`https://public.tenant.kiwitcms.org `_!
+
+
+Supported upgrade paths::
+
+ 5.3 (or older) -> 5.3.1
+ 5.3.1 (or newer) -> 6.0.1
+ 6.0.1 -> 6.1
+ 6.1 -> 6.1.1
+ 6.1.1 -> 6.2 (or newer)
+
+Docker images::
+
+ pub.kiwitcms.eu/kiwitcms/kiwi latest f9a8a044c34e 537 MB
+ pub.kiwitcms.eu/kiwitcms/kiwi 6.2 7870085ad415 957 MB
+ pub.kiwitcms.eu/kiwitcms/kiwi 6.1.1 49fa42ddfe4d 955 MB
+ pub.kiwitcms.eu/kiwitcms/kiwi 6.1 b559123d25b0 970 MB
+ pub.kiwitcms.eu/kiwitcms/kiwi 6.0.1 87b24d94197d 970 MB
+ pub.kiwitcms.eu/kiwitcms/kiwi 5.3.1 a420465852be 976 MB
+
+
+Changes since Kiwi TCMS 7.1
+---------------------------
+
+
+Improvements
+~~~~~~~~~~~~
+
+- Base docker image to new CentOS 8
+- Update Django from 2.2.6 to 2.2.8
+- Update django-contrib-comments from 1.9.1 to 1.9.2
+- Update django-grappelli from 2.13.1 to 2.13.2
+- Update django-modern-rpc from 0.11.1 to 0.12.0
+- Update django-simple-history from 2.7.3 to 2.8.0
+- Update mysqlclient from 1.4.4 to 1.4.6
+- Update pygithub from 1.44 to 1.44.1
+- Update python-gitlab from 1.12.1 to 1.13.0
+- Several documentation updates
+
+
+Database migrations
+~~~~~~~~~~~~~~~~~~~
+
+- Add new database fields ``weight``, ``icon`` and ``color`` to
+ ``TestExecutionStatus`` and adjust existing code to work with them.
+ This is a necessary step before allowing customization of test execution
+ statuses, see
+ `Issue #236 `_
+
+
+API
+~~~
+
+- RPC method ``TestExecution.add_comment()`` now requires
+ ``django_comments.add_comment`` permission
+- Add new RPC method ``TestExecution.remove_comment()``
+- Add new RPC method ``TestCase.add_comment()``
+- Add new RPC method ``TestCase.remove_comment()``
+
+
+Bug fixes
+~~~~~~~~~
+
+- ``testplans.views.DeleteCasesView`` now requires ``testplans.change_testplan``
+ permission (Svetlomir Balevski)
+- ``testplans.views.ReorderCasesView`` now requires ``testplans.change_testplan``
+ permission (Svetlomir Balevski)
+- Fix counting bug in execution trends telemetry
+- Fix several telemetry queries to still show data in the corner case
+ where test cases have been deleted from a TestPlan but test runs
+ are still available
+- Fix broken bulk menu in TestRun page when (translated) status names
+ are too long
+- Automatically expand TestExecution comment history if there are comments
+ present. Fixes
+ `Issue #349 `_ (Matt Porter)
+- Document timezone settings and show current server time in navbar. Fixes
+ `Issue #1206 `_
+- Check for permissions in HTML template. Closes
+ `Issue #961 `_
+- Document bug tracker integration support. Fixes
+ `Issue #698 `_
+- Delete comments when TestCase and TestExecution are removed. Closes
+ `Issue #1028 `_
+
+
+Refactoring
+~~~~~~~~~~~
+
+- Pylint fixes (Mariyan Garvanski)
+- Use ``django.utils.timezone.now()`` instead of ``datetime.now()``. Closes
+ `Issue #545 `_
+- Use JSON-RPC instead of backend views when working with comments. Resolves
+ `Issue #960 `_
+- Remove ``tcms.core.contrib.comments`` module. Closes
+ `Issue #959 `_
+- Remove ``label=`` attribute from form field. Fixes
+ `Issue #652 `_
+- Move and rename XML-RPC forms. Resolves
+ `Issue #681 `_
+- Convert ``testplans.views.DeleteCasesView`` to JSON-RPC
+- Refactor more views from function based to class based
+- Remove duplicate JavaScript
+
+
+Translations
+~~~~~~~~~~~~
+
+- Updated `Bulgarian translation `_
+- Updated `Chinese Traditional translation `_
+- Updated `French translation `_
+
+
+Important changes
+-----------------
+
+Soon Kiwi TCMS will switch from *OAuth* to *GitHub App* integration type with GitHub.
+Login with your GitHub accounts will still be supported but you will also be
+able to *INSTALL* Kiwi TCMS into your account/organization/repositories.
+This will open the possibility for further integration with GitHub as expressed
+in our `roadmap for 2019 <{filename}2019-01-10-2019-mission.markdown>`_!
+
+We are going to share more information when this becomes available.
+
+
+
+Upcoming conferences
+--------------------
+
+The next two events we are going to participate are:
+
+* `DevConf.CZ, Jan 24-26, Brno `_
+ where Anton Sankov will be a speaker
+* `FOSDEM, Feb 1-2, Brussels <{filename}2019-11-26-fosdem2020.markdown>`_
+ where you can meet with the entire team
+
+
+If you are around come and say "Happy testing"!
+
+
+How to upgrade
+---------------
+
+`Backup <{filename}2018-07-30-docker-backup.markdown>`_ first!
+If you are using Kiwi TCMS as a Docker container then::
+
+ cd path/containing/docker-compose/
+ docker-compose down
+ docker pull pub.kiwitcms.eu/kiwitcms/kiwi
+ docker pull centos/mariadb
+ docker-compose up -d
+ docker exec -it kiwi_web /Kiwi/manage.py migrate
+
+**WHERE:** ``docker-compose.yml`` has been updated from your private git repository!
+The file provided in our GitHub repository is an example. Not for production use!
+
+**WARNING:** ``pub.kiwitcms.eu/kiwitcms/kiwi:latest`` and ``docker-compose.yml`` will
+always point to the latest available version! If you have to upgrade in steps,
+e.g. between several intermediate releases, you have to modify the above workflow::
+
+ # starting from an older Kiwi TCMS version
+ docker-compose down
+ docker pull pub.kiwitcms.eu/kiwitcms/kiwi:
+ edit docker-compose.yml to use pub.kiwitcms.eu/kiwitcms/kiwi:
+ docker-compose up -d
+ docker exec -it kiwi_web /Kiwi/manage.py migrate
+ # repeat until you have reached latest
+
+Happy testing!
diff --git a/content/2019-12-26-roadmap-update.markdown b/content/2019-12-26-roadmap-update.markdown
new file mode 100644
index 00000000..1f6dd27d
--- /dev/null
+++ b/content/2019-12-26-roadmap-update.markdown
@@ -0,0 +1,143 @@
+Title: Roadmap status report for 2019
+headline: 50-60% complete, slower pace, less visible progress
+date: 2019-12-26 16:56
+comments: true
+og_image: images/roadmap.jpg
+twitter_image: images/roadmap.jpg
+author: Alexander Todorov
+tags: community, roadmap
+
+Hello everyone, in this article I will outline the progress that the Kiwi TCMS
+team has made towards achieving the goals on our
+[2019 roadmap]({filename}2019-01-10-2019-mission.markdown).
+TL,DR: last year we've made lots of big and visible changes in Kiwi TCMS.
+This year less so. Progress has been slower than before and not so much
+visible. Community and team is growing. More contributors are welcome.
+
+
+Complete the internal refactoring
+---------------------------------
+
+*Status: small progress, needs help*
+
+[CodeClimate](https://codeclimate.com/github/kiwitcms/Kiwi) progress is:
+
+* -60 code smells
+* -55 duplications
+* -50 other issues
+* 4.4% technical debt improvement
+* -240 hrs remaining until issues are fixed
+
+The trend is showing less issues remaining
+but it has been a slow progress. As we fix the easier items the remaining ones
+become harder to deal with.
+
+We've done minor work related to fixing issues reported by pylint. Around
+150 of them still remain!
+
+We have not done any targeted work to resolve other issues reported by Scrutinizer,
+remove vendored-in JavaScript libraries, JavaScript refactoring or
+classification of issues in 3rd party dependencies.
+
+
+Redesign the UI templates with the help of Patternfly
+-----------------------------------------------------
+
+*Status: 60% done, needs help*
+
+There are 22 HTML templates remaining to be redesigned (from 59). That's mostly
+due to internal cleanup and some refactoring! Test plan and Test run pages are the
+two major templates that still need to be redesigned with Patternfly.
+
+
+Modernize reporting aka Telemetry
+---------------------------------
+
+*Status: 60% done, in progress, behind schedule*
+
+The specs for the new [Telemetry]({filename}2019-03-03-telemetry.markdown) system
+have been defined after taking into account feedback on GitHub issues. Anton Sankov is
+the leading developer for this feature. So far we have 4 telemetry reports merged:
+testing break-down, status matrix, execution trends and flaky tests.
+
+There are lots of minor issues or missing functionality in these first iterations
+(compared to specification). Work continues on the other telemetry use-cases
+and related items.
+
+
+Plugins for 3rd party test automation frameworks
+------------------------------------------------
+
+*Status: good, needs help*
+
+*UPDATE:* no change in last 6 months.
+
+If you'd like to see plugins for more test automation frameworks
+and/or file formats please checkout the
+[documentation](https://kiwitcms.readthedocs.io/en/latest/automation-frameworks.html)
+for links and more info.
+
+
+Redefine bug-tracker integration
+--------------------------------
+
+*Status: 66% complete, in progress, behind schedule*
+
+We've been making slow progress on this milestone lately. For more info
+see
+[https://github.com/kiwitcms/Kiwi/milestone/1](https://github.com/kiwitcms/Kiwi/milestone/1)
+
+
+GitHub flow integration
+-----------------------
+
+*Status: done, awaiting deployment*
+
+Our team spent some time making Kiwi TCMS the first open source TCMS available
+on the [GitHub Marketplace](https://github.com/marketplace/kiwi-tcms). At the end
+of this year we were able to create a small application that allows further
+integration and extending the testing workflow to the GitHub platform.
+
+This is waiting on a few more clarifications from GitHub before we deploy but
+for now it can be considered as done. Future functionality will be tracked
+and developed directly at
+[https://github.com/kiwitcms/github-app/issues](https://github.com/kiwitcms/github-app/issues).
+
+
+Agile integration with Trello
+-----------------------------
+
+*Status: no progress, will drop*
+
+This will be dropped from roadmap for the next year until we can get more interest
+from the community.
+
+
+Improve engineering productivity
+--------------------------------
+
+*Status: no progress*
+
+Looking for external help here. This will stay as a low priority item on our
+roadmap for 2020 until we can free more resources on the team.
+
+
+Community
+---------
+
+*Status: great, on track, needs work*
+
+This is our strongest area during this year. We have a strong presence in
+multiple communities, our event schedule is very busy and we are gaining more
+recognition every day! Core team hit several big bumps this year and is still
+recovering with a few more people onboarding.
+
+Kiwi TCMS suffers from the problem that many of our users can't be contributors
+or simply don't want to!
+
+In short: it is important for us to follow our mission and develop our core team
+so we can deliver on promises made in our roadmap! That requires a lot of time and
+effort which reduces short-term productivity.
+
+
+Happy testing!
diff --git a/content/2020-01-12-github-app-migration.markdown b/content/2020-01-12-github-app-migration.markdown
new file mode 100644
index 00000000..41b7551d
--- /dev/null
+++ b/content/2020-01-12-github-app-migration.markdown
@@ -0,0 +1,82 @@
+Title: Kiwi TCMS is migrating from OAuth to GitHub App
+headline: so we can enable tighter integration with GitHub
+date: 2020-01-12 18:31
+comments: true
+tags: releases
+
+Hello testers, Kiwi TCMS is migrating from its OAuth backend
+to the so called "GitHub App" backend in order to enable further
+integration with GitHub's PR flow as stated previously in our
+[yearly goals]({filename}2019-01-10-2019-mission.markdown).
+This blog post outlines the differences between the old and the new!
+
+The old OAuth application only had access to your username, name and email
+for authentication purposes. Its authorization screen looked like so:
+
+
+
+
+GitHub Apps on the other hand are designed for more granular access and tighter
+integration with the GitHub platform. This type of application still allows you
+to perform 1-click login into
+[https://public.tenant.kiwitcms.org](https://public.tenant.kiwitcms.org). If this is your
+first time logging into Kiwi TCMS after the migration you will see the following screen:
+
+
+
+Notice how the heading, information section and action button are slightly different!
+The important section is **Resources on your account**! We still only need your
+name, username and email address! Existing Kiwi TCMS accounts (from before the migration)
+will continue to work and they will still have access to all of their data previously
+created. Authorization of this new GitHub app (e.g. login only) does not give it
+permissions to access your repositories and act on your behalf.
+
+
+To permit this GitHub App to access your repositories and/or act on your behalf
+you must **Install** it first. That is tell Kiwi TCMS GitHub integration code
+what kind of resources from your GitHub account it is allowed to access. You may
+install into your personal GitHub account or an organizational account! You may
+do this by following the **Install & Authorize** button on our home page or
+directly from [https://github.com/apps/kiwi-tcms](https://github.com/apps/kiwi-tcms)!
+The screen should look like this:
+
+
+
+Initially we ask for read-only access to a few resources so Kiwi TCMS can start
+receiving webhooks from GitHub and synchronize information about your repositories
+into our database. This is documented both on the app installation screen itself
+(required by GitHub) and on
+[https://github.com/kiwitcms/github-app](https://github.com/kiwitcms/github-app)!
+
+Further ideas about integration between GitHub and Kiwi TCMS, including the original
+idea about status checks from [Issue #700](https://github.com/kiwitcms/Kiwi/issues/700),
+can be found at
+[https://github.com/kiwitcms/github-app/issues](https://github.com/kiwitcms/github-app/issues).
+
+
+Help us grow
+------------
+
+After this migration we're back to zero! The thousands of authorizations we've had
+on our legacy OAuth app can't be migrated to the new app. This also means our
+listing on GitHub Marketplace will be taken down and we have to qualify through the
+entire process from scratch.
+
+Please help us get back on track! Here's what we ask you to do (in this order):
+
+* Go to [https://public.tenant.kiwitcms.org](https://public.tenant.kiwitcms.org) and
+ click the GitHub login icon, follow through with the process;
+* Go to [https://github.com/apps/kiwi-tcms](https://github.com/apps/kiwi-tcms) and
+ click the **Install** button, select account & repositories and complete the
+ process;
+* Share this blog post with friends, co-workers and other testers who might be
+ interested to help!
+
+
+Thank you! Happy testing and happy new year!
diff --git a/content/2020-01-16-version-7.3.rst b/content/2020-01-16-version-7.3.rst
new file mode 100644
index 00000000..08c21684
--- /dev/null
+++ b/content/2020-01-16-version-7.3.rst
@@ -0,0 +1,169 @@
+Kiwi TCMS 7.3
+#############
+
+:headline: critical security update
+:date: 2020-01-16 01:00
+:comments: true
+:tags: releases
+
+
+We're happy to announce Kiwi TCMS version 7.3!
+
+**IMPORTANT:** this is a critical security update for
+**CVE-2019-19844: Potential account hijack via password reset form!**
+
+Also migrates to Django 3.0 and includes several other improvement
+and bug-fixes!
+
+You can explore everything at
+`https://public.tenant.kiwitcms.org `_!
+
+
+Supported upgrade paths::
+
+ 5.3 (or older) -> 5.3.1
+ 5.3.1 (or newer) -> 6.0.1
+ 6.0.1 -> 6.1
+ 6.1 -> 6.1.1
+ 6.1.1 -> 6.2 (or newer)
+
+Docker images::
+
+ pub.kiwitcms.eu/kiwitcms/kiwi latest 4026ee62e488 556 MB
+ pub.kiwitcms.eu/kiwitcms/kiwi 6.2 7870085ad415 957 MB
+ pub.kiwitcms.eu/kiwitcms/kiwi 6.1.1 49fa42ddfe4d 955 MB
+ pub.kiwitcms.eu/kiwitcms/kiwi 6.1 b559123d25b0 970 MB
+ pub.kiwitcms.eu/kiwitcms/kiwi 6.0.1 87b24d94197d 970 MB
+ pub.kiwitcms.eu/kiwitcms/kiwi 5.3.1 a420465852be 976 MB
+
+
+Changes since Kiwi TCMS 7.2
+---------------------------
+
+Security
+~~~~~~~~
+
+- Update Django from 2.2.8 to 3.0.2
+
+
+Improvements
+~~~~~~~~~~~~
+
+- Update python-gitlab from 1.13.0 to 1.15.0
+- Update pygithub from 1.44.1 to 1.45
+- Update django-grappelli from 2.13.2 to 2.13.3
+- Bump django-uuslug from 1.1.9 to 1.2.0
+- Bump django-attachments from 1.4.1 to 1.5
+- Bump django-vinaigrette from 1.2.0 to 2.0.1
+- Update marked to version 0.8.0
+- Update prismjs to version 1.19.0
+- Generalize existing ``kiwitcms.telemetry.plugins`` handling code by
+ renaming the entry point to ``kiwitcms.plugins``
+- Refactor views to class based (Svetlozar Stoyanov)
+- Teach Kiwi TCMS to automatically report bugs to GitHub when the user
+ selects such action. Fall back to opening a new browser window for
+ manually entering the bug if something goes wrong
+
+
+Database
+~~~~~~~~
+
+- When migrating from the older ``Bug`` model to ``LinkReference`` skip
+ bugs which are attached directly to test cases instead of test executions.
+ See `SO #59321756 `_
+- Remove ``AutoField.max_length`` because it is ignored by Django 3
+
+
+API
+~~~
+
+- ``TestCase.update()`` method now allows to update the ``author`` field. Fixes
+ `Issue #630 `_
+
+
+Bug fixes
+~~~~~~~~~
+
+- Modify template pass ``object`` as ``test_plan``. Fixes
+ `Issue #1307 `_ (Ed Oswald S. Go)
+- Enable version selection in test plan search page. Fixes
+ `Issue #1276 `_
+- Apply percentage rounding for completed test executions. Fixes
+ `Issue #1230 `_
+- Fix a logical bug in conditional expression when deciding whether or not
+ reporting bugs to selected issue tracker is disabled
+
+
+Refactoring
+~~~~~~~~~~~
+
+- Add code of conduct. Fixes
+ `Issue #1185 `_ (Rosen Sasov)
+- Add test for ``KIWI_DONT_ENFORSE_HTTPS``. Closes
+ `Issue #1274 `_
+- Replace ``ugettext_lazy`` with ``gettext_lazy`` for Django 3
+- Remove ``BaseCaseSearchForm.bug_id`` field
+- Refactor testcase edit view to class-based
+- Happy New Year pylint
+
+
+Translations
+~~~~~~~~~~~~
+
+- Updated `Chinese Simplified translation `_
+- Updated `Slovenian translation `_
+- Updated `Vietnamese translation `_
+
+
+GitHub integration
+------------------
+
+The hosted version of Kiwi TCMS ships with additional GitHub integration. See
+`GitHub App announcement <{filename}2020-01-12-github-app-migration.markdown>`_ and
+`github-app `_
+for more information!
+
+
+Upcoming conferences
+--------------------
+
+The next two events we are going to participate are:
+
+* `DevConf.CZ, Jan 24-26, Brno `_
+ where Anton Sankov will be a speaker
+* `FOSDEM, Feb 1-2, Brussels <{filename}2019-11-26-fosdem2020.markdown>`_
+ where you can meet with the entire team
+
+
+If you are around come and say "Happy testing"!
+
+
+How to upgrade
+---------------
+
+`Backup <{filename}2018-07-30-docker-backup.markdown>`_ first!
+If you are using Kiwi TCMS as a Docker container then::
+
+ cd path/containing/docker-compose/
+ docker-compose down
+ docker pull pub.kiwitcms.eu/kiwitcms/kiwi
+ docker pull centos/mariadb
+ docker-compose up -d
+ docker exec -it kiwi_web /Kiwi/manage.py migrate
+
+**WHERE:** ``docker-compose.yml`` has been updated from your private git repository!
+The file provided in our GitHub repository is an example. Not for production use!
+
+**WARNING:** ``pub.kiwitcms.eu/kiwitcms/kiwi:latest`` and ``docker-compose.yml`` will
+always point to the latest available version! If you have to upgrade in steps,
+e.g. between several intermediate releases, you have to modify the above workflow::
+
+ # starting from an older Kiwi TCMS version
+ docker-compose down
+ docker pull pub.kiwitcms.eu/kiwitcms/kiwi:
+ edit docker-compose.yml to use pub.kiwitcms.eu/kiwitcms/kiwi:
+ docker-compose up -d
+ docker exec -it kiwi_web /Kiwi/manage.py migrate
+ # repeat until you have reached latest
+
+Happy testing!
diff --git a/content/2020-01-17-roadmap2020.markdown b/content/2020-01-17-roadmap2020.markdown
new file mode 100644
index 00000000..a9d7e2e6
--- /dev/null
+++ b/content/2020-01-17-roadmap2020.markdown
@@ -0,0 +1,126 @@
+Title: Project roadmap 2020
+headline: team, technical & community towards sustainability
+date: 2020-01-17 19:40
+comments: true
+og_image: images/roadmap.jpg
+twitter_image: images/roadmap.jpg
+author: Alexander Todorov
+tags: community, roadmap
+
+Hello testers,
+the Kiwi TCMS team sat down together last week and talked about what we feel
+is important for us during the upcoming year. This blog post outlines our
+roadmap for 2020!
+
+
+
+
+Project sustainability
+======================
+
+The big goal towards which we are striving is to turn Kiwi TCMS into a
+sustainable open source project. For now this means several key areas:
+
+ 1) Team
+ 2) Technical
+ 3) Community
+
+Team
+----
+
+Right now we have a core team with 6 newcomers on-boarding.
+Engineering performance is all over the place with some people contributing
+too much while others contributing too little. More importantly there is no
+consistent pace of contributions which makes planning timely completion of
+technical tasks impossible.
+
+At the moment we do operate as a bunch of disconnected people who happen to
+talk to each other from time to time.
+
+We are going to adjust our internal processes and how we on-board new members.
+In fact we did our first "scrum-like" meeting this week and agreed to change
+our existing practice and strive to become better as a team!
+
+**Goal:** to have a cohesive team at the end of the year which operates with
+a predictable capacity.
+
+**Goal:** 1 PR/week/person as broad measure of individual performance.
+
+
+Technical
+---------
+
+The areas shown on the picture above will receive more priority.
+
+**Goal:** complete remaining [Telemetry features]({filename}2019-03-03-telemetry.markdown).
+
+**Goal:** complete
+[bug-tracker integration milestone](https://github.com/kiwitcms/Kiwi/milestone/1).
+
+**Goal:** all pylint issues resolved.
+
+**Goal:** migrate all remaining legacy templates to Patternfly UI. See
+[patternfly-migration](https://github.com/kiwitcms/Kiwi/milestone/3) milestone.
+
+**Goal:** where FE sends AJAX requests to BE views replace with JSON RPC API instead.
+
+**Extra:** start tackling the JavaScript mess that we have. This depends and is related
+to Patternfly migration and overall refactoring.
+
+**Extra:** make it easier for downstream installations to extend and override parts
+of Kiwi TCMS in order for users to adjust the system to their own needs.
+The system is pretty flexible as-is but there have been requests,
+both online and offline, to provide some extra features! We'll start looking
+into them, likely making partial progress in the next 12 months.
+
+
+Community
+---------
+
+Last year Kiwi TCMS had massive success at every single conference that we've been to.
+Both project and team have been well received. While we are going to continue
+being part of various communities around the world we are trying to limit
+extensive travel and focus on functionality and partnerships which will
+increase Kiwi TCMS eco-system, make the project even more popular and
+drive further adoption!
+
+**Goal:** extended GitHub integration via
+[kiwitcms-github-app](https://github.com/kiwitcms/github-app/) plugin.
+
+**Goal:** release the following
+[test automation framework plugins](https://kiwitcms.readthedocs.io/en/latest/plugins/automation-frameworks.html)
+for Kiwi TCMS:
+
+- [PHPUnit plugin](https://github.com/kiwitcms/phpunit-plugin/)
+- [py.test plugin](https://github.com/kiwitcms/pytest-plugin/)
+- TestNG plugin
+- Jenkins plugin
+- Robot framework plugin
+- Django plugin
+
+For more information see
+[test-automation-plugins](https://github.com/kiwitcms/Kiwi/milestone/2) milestone.
+
+**Ongoing:** work with our partners from the proprietary and open source worlds.
+This is hard to quantify and lots of it doesn't actually depend on the team.
+However we are continuing to talk to them regularly. Expect new feedback to
+become available under GitHub Issues.
+
+**Extra:** see what we can do about testing productivity! This has always been
+part of our mission but we have not been able to produce anything worth sharing.
+We do have ideas in this space but we are generally looking for partnerships and collaborations.
+It is very likely that there will not be very much progress on this front
+because it is hard to define it properly :-(.
+
+
+Summary
+-------
+
+At the end of the day most of these goals compliment each other and help drive all of
+them to completion. Many of the still on-boarding people have expressed desire to
+improve their Python & Django skills. Working to resolve issues in the above specific
+areas will give them this opportunity! I expect they will show good progress on their respective
+tasks so we can write more about them on this blog.
+
+
+Happy testing!
diff --git a/content/2020-02-04-oauth-tokens-revoked.markdown b/content/2020-02-04-oauth-tokens-revoked.markdown
new file mode 100644
index 00000000..37967b9a
--- /dev/null
+++ b/content/2020-02-04-oauth-tokens-revoked.markdown
@@ -0,0 +1,18 @@
+Title: GitHub OAuth tokens have been revoked
+date: 2020-02-04 18:25
+comments: true
+
+Hello testers as we've
+[stated previously]({filename}2020-01-12-github-app-migration.markdown)
+Kiwi TCMS has migrated to a new GitHub backend. The previous OAuth
+application with ID `e45b09369720518e1fc3` has been deprecated.
+
+OAuth tokens for this application have been revoked and you should have
+received an email notification from GitHub about this.
+
+If you still have an active Marketplace listing we kindly ask you to
+cancel it until we're able to deploy the improved integration on
+GitHub Marketplace again.
+
+
+Thank you!
diff --git a/content/2020-02-11-mailchimp-deleted.markdown b/content/2020-02-11-mailchimp-deleted.markdown
new file mode 100644
index 00000000..df72c49e
--- /dev/null
+++ b/content/2020-02-11-mailchimp-deleted.markdown
@@ -0,0 +1,57 @@
+Title: I deleted our newsletter from Mailchimp ! Please re-subscribe
+Headline: and no, we didn't have backup
+author: Alexander Todorov
+date: 2020-02-11 12:25
+comments: true
+
+Hello testers,
+I have to admit that I made a rookie mistake and deleted the entire email database
+for the Kiwi TCMS
+[newsletter](https://kiwitcms.us17.list-manage.com/subscribe/post?u=9b57a21155a3b7c655ae8f922&id=c970a37581)!
+And of course we didn't have a backup of this database :-(. Please
+[re-subscribe here](https://kiwitcms.us17.list-manage.com/subscribe/post?u=9b57a21155a3b7c655ae8f922&id=c970a37581)
+and read below if you are interested to know what happened.
+
+
+Last week, while exploring how to cancel active subscriptions for our
+deprecated GitHub Marketplace listing I found there is no way to cancel
+those programatically. So I've compiled a list of email addresses and decided
+to send subscribers an email asking them to cancel their subscriptions.
+
+For this purpose I decided to import the contacts into Mailchimp because
+it gives you a better interface to design the actual message, include images
+in the message body, preview and test the message before it is sent! The import
+of addresses went fine, new addresses were tagged appropriately to separate them
+from the rest of the newsletter audience **but** they were not subscribed to
+receive emails automatically.
+
+I selected "non-subscribed" option when importing as a second barrier to
+accidentally emailing people who do not want to receive regular news from us!
+However it turned out Mailchimp can't send messages to non-subscribed addresses!
+Maybe that's part of their attempts to be GDPR compliant.
+
+So I decided to delete the freshly imported addresses, import them again
+and this time tag + subscribe them during the import! When selecting the addresses
+for deletion I am 99% confident I did filter them by tag first and then selected
+**DELETE**! And the entire contacts list was gone!
+
+I've also contacted Mailchimp immediately to ask whether or not the addresses
+can be restored. Unfortunately they are trying to be super GDPR compliant and
+claim they don't have this information into their system anymore.
+And in this particular case we've been relying on the vendor to keep backups
+on their end so didn't even think about trying to backup this database!
+
+For users who have accounts at
+[https://public.tenant.kiwitcms.org](https://public.tenant.kiwitcms.org)
+we do have
+their email addresses but we're not going to automatically re-subscribe them.
+We've stopped auto-subscribing
+[2 years ago]({filename}2018-06-24-version-4.2.markdown) and also there's
+no way of telling which addresses were on the list in the first hand.
+
+
+Please
+[re-subscribe here](https://kiwitcms.us17.list-manage.com/subscribe/post?u=9b57a21155a3b7c655ae8f922&id=c970a37581)
+and I promise we're going to start backing up the newsletter database as well.
+
+Thank you!
diff --git a/content/2020-02-12-version-8.0.rst b/content/2020-02-12-version-8.0.rst
new file mode 100644
index 00000000..f98cfd74
--- /dev/null
+++ b/content/2020-02-12-version-8.0.rst
@@ -0,0 +1,251 @@
+Kiwi TCMS 8.0
+#############
+
+:headline: major release with backwards incompatible changes
+:date: 2020-02-12 23:45
+:comments: true
+:tags: releases
+
+
+We're happy to announce Kiwi TCMS version 8.0!
+
+**IMPORTANT:** this is a major release which includes important database and
+API changes, several improvements and bug fixes. Multiple API methods are now
+incompatible with older releases and extra caution needs to be applied when
+upgrading via ``docker-compose.yml`` because newer MariaDB versions are
+breaking direct upgrades from existing installations!
+
+
+You can explore everything at
+`https://public.tenant.kiwitcms.org `_!
+
+
+Supported upgrade paths::
+
+ 5.3 (or older) -> 5.3.1
+ 5.3.1 (or newer) -> 6.0.1
+ 6.0.1 -> 6.1
+ 6.1 -> 6.1.1
+ 6.1.1 -> 6.2 (or newer)
+
+Docker images::
+
+ pub.kiwitcms.eu/kiwitcms/kiwi latest 71a55e353da2 557 MB
+ pub.kiwitcms.eu/kiwitcms/kiwi 6.2 7870085ad415 957 MB
+ pub.kiwitcms.eu/kiwitcms/kiwi 6.1.1 49fa42ddfe4d 955 MB
+ pub.kiwitcms.eu/kiwitcms/kiwi 6.1 b559123d25b0 970 MB
+ pub.kiwitcms.eu/kiwitcms/kiwi 6.0.1 87b24d94197d 970 MB
+ pub.kiwitcms.eu/kiwitcms/kiwi 5.3.1 a420465852be 976 MB
+
+
+Changes since Kiwi TCMS 7.3
+---------------------------
+
+
+Improvements
+~~~~~~~~~~~~
+
+- Update Django from 3.0.2 to 3.0.3
+- Update django-grappelli from 2.13.3 to 2.14.1
+- Update markdown from 3.1.1 to 3.2
+- Update python-gitlab from 1.15.0 to 2.0.1
+- Update pygithub from 1.45 to 1.46
+- Allow customization of test execution statuses via admin.
+ For more information see
+ https://kiwitcms.readthedocs.io/en/latest/admin.html#test-execution-statuses.
+ Fixes `Issue #236 `_
+- Add passing rate chart to Execution trends telemetry
+- Documentation updates (@Prome88)
+
+
+Database
+~~~~~~~~
+
+This release adds several migrations which alter the underlying database schema
+by renaming multiple columns.
+
+**WARNINGS:**
+
+- SQLite has very poor capabilities for altering schema and it will break
+ when run with existing database! If you had deployed Kiwi TCMS with
+ SQLite for production purposes you will not be able to upgrade! We recommend
+ switching to Postgres first and then upgrading!
+
+- ``docker-compose.yml`` has been updated from MariaDB 5.5 to MariaDB 10.3.
+ The 10.x MariaDB containers change their ``datadir`` configuration from
+ ``/var/lib/mysql`` to ``/var/lib/mysql/data``! We recommend first upgrading
+ your MariaDB version, using Kiwi TCMS 7.3 and afterwards upgrading to
+ Kiwi TCMS 8.0:
+
+ 1. Backup existing database with::
+
+ docker exec -it kiwi_db mysqldump -u kiwi -pYourPass kiwi > backup.sql
+
+ 2. ``docker-compose down``
+ 3. ``docker volume rm kiwi_db_data`` - will remove existing data volume
+ b/c of incompatibilities between different MariaDB versions
+ 4. ``docker-compose up`` - will recreate data volume with missing data. e.g.
+ ``manage.py showmigrations`` will report that 0 migrations have been applied.
+ 5. Restore the data from backup::
+
+ cat backup.sql | docker exec -u 0 -i kiwi_db /opt/rh/rh-mariadb103/root/usr/bin/mysql kiwi
+
+ **note:** This connects to the database as the root user
+
+ 6. Proceed to upgrade your Kiwi TCMS container !
+
+**CHANGES:**
+
+- Remove model fields of type ``AutoField``. They are a legacy construct
+ and shouldn't be specified in the source code! Django knows how to add them
+ dynamically. These are:
+
+ - ``Tag.id``
+ - ``TestCaseStatus.id``
+ - ``Category.id``
+ - ``PlanType.id``
+ - ``TestExecutionStatus.id``
+
+- Remove ``db_column`` attribute from model fields
+- Rename several primary key fields to ``id``:
+
+ - ``Build.build_id`` -> ``Build.id``
+ - ``TestRun.run_id`` -> ``TestRun.id``
+ - ``TestPlan.plan_id`` -> ``TestPlan.id``
+ - ``TestCase.case_id`` -> ``TestCase.id``
+ - ``TestExecution.case_run_id`` -> ``TestExecution.id``
+
+
+API
+~~~
+
+**WARNING:**
+
+The database schema changes mentioned above affect multiple API methods
+in a backwards incompatible way!
+There is possibility that your API scripts will also be affected. You will
+have to adjust those to use the new field names where necessary!
+
+**CHANGES:**
+
+- Methods ``Build.create()``, ``Build.filter()`` and ``Build.update()`` will
+ return ``id`` instead of ``build_id`` field
+- Method ``TestRun.get_cases()`` will return ``execution_id`` instead of
+ ``case_run_id`` field and ``id`` instead of ``case_id`` field
+- Methods ``TestRun.add_case()``, ``TestExecution.create()``,
+ ``TestExecution.filter()`` and ``TestExecution.update()`` will return
+ ``id`` instead of ``case_run_id`` field
+- Methods ``TestRun.create()``, ``TestRun.filter()``, ``TestRun.update()`` will
+ return ``id`` instead of ``run_id`` field
+- Methods ``TestPlan.create()``, ``TestPlan.filter()`` and
+ ``TestPlan.update()`` will return ``id`` instead of ``plan_id`` field
+- Methods ``TestCase.add_component()``, ``TestCase.create()``,
+ ``TestCase.filter()`` and ``TestCase.update()`` will return ``id`` instead
+ of ``case_id`` field
+
+**NOTES:**
+
+Kiwi TCMS automation framework plugins have been updated to work with the
+newest API. At the time of Kiwi TCMS v8.0 release their versions are:
+
+- kiwitcms-tap-plugin v8.0.1
+- kiwitcms-junit.xml-plugin v8.0.1
+- kiwitcms-junit-plugin v8.0
+
+
+Bug fixes
+~~~~~~~~~
+
+- Allow displaying lists with more then 9 items when reviewing test cases. Fixes
+ `Issue #339 `_ (Mfon Eti-mfon)
+- Make ``tcms.tests.storage.RaiseWhenFileNotFound``` capable of finding
+ finding static files on Windows which enables development mode for folks
+ not using Linux environment. See
+ `SO #55297178 `_ (Mfon Eti-mfon)
+- Allow changing test execution status without adding comment. Fixes
+ `Issue #1261 `_
+- Properly refresh test run progress bar when changing statuses. Fixes
+ `Issue #1326 `_
+- Fix a bug where updating test cases from the UI was causing text and various
+ other fields to be reset. Fixes
+ `Issue #1318 `_
+
+
+Refactoring
+~~~~~~~~~~~
+
+- Extract attachments widget to new template. Fixes
+ `Issue #1124 `_
+ (Rosen Sasov)
+- Rename RPC related classes. Fixes
+ `Issue #682 `_
+ (Rosen Sasov)
+- Add new test (Mariyan Garvanski)
+- Start using GitHub actions, first for running flake8
+- Remove unused ``TestCase.get_previous_and_next()``
+- Remove unused ``TestCaseStatus.string_to_instance()``
+- Remove unused ``TestCase.create()``
+- Remove unused ``json_success_refresh_page()``
+- Remove unused fields from ``SearchPlanForm``
+- Use JSON-RPC in ``previewPlan()``
+- Remove ``toggleTestCaseContents()``, duplicate of ``toggleTestExecutionPane()``
+- Refactor a few more views to class-based
+
+
+Translations
+~~~~~~~~~~~~
+
+- Updated `Bulgarian translation `_
+- Updated `French translation `_
+- Updated `Korean translation `_
+- Updated `Slovenian translation `_
+- Updated `Turkish translation `_
+
+
+GitHub Marketplace listing deprecation
+--------------------------------------
+
+As we've stated previously Kiwi TCMS has migrated to a new GitHub backend and
+OAuth tokens for the previous backend have been revoked and the
+existing listing on GitHub Marketplace is deprecated. It is a non-functioning
+app at the moment!
+
+It is not possible for us to cancel Marketplace subscriptions programatically,
+that is GitHub does not provide such API. Active subscribers please follow these
+3 steps to help us clean up stale information:
+
+- Go to https://github.com/marketplace/kiwi-tcms
+- From "Edit your plan" button at the top select your GitHub account
+- Then click "Cancel this plan" link which is at the left-hand side
+ at the bottom of the description box!
+
+
+How to upgrade
+---------------
+
+`Backup <{filename}2018-07-30-docker-backup.markdown>`_ first!
+If you are using Kiwi TCMS as a Docker container then::
+
+ cd path/containing/docker-compose/
+ docker-compose down
+ docker pull pub.kiwitcms.eu/kiwitcms/kiwi
+ docker pull centos/mariadb-103-centos7
+ docker-compose up -d
+ docker exec -it kiwi_web /Kiwi/manage.py migrate
+
+**WHERE:** ``docker-compose.yml`` has been updated from your private git repository!
+The file provided in our GitHub repository is an example. Not for production use!
+
+**WARNING:** ``pub.kiwitcms.eu/kiwitcms/kiwi:latest`` and ``docker-compose.yml`` will
+always point to the latest available version! If you have to upgrade in steps,
+e.g. between several intermediate releases, you have to modify the above workflow::
+
+ # starting from an older Kiwi TCMS version
+ docker-compose down
+ docker pull pub.kiwitcms.eu/kiwitcms/kiwi:
+ edit docker-compose.yml to use pub.kiwitcms.eu/kiwitcms/kiwi:
+ docker-compose up -d
+ docker exec -it kiwi_web /Kiwi/manage.py migrate
+ # repeat until you have reached latest
+
+Happy testing!
diff --git a/content/2020-02-14-qachallenge-bug.markdown b/content/2020-02-14-qachallenge-bug.markdown
new file mode 100644
index 00000000..6b41d466
--- /dev/null
+++ b/content/2020-02-14-qachallenge-bug.markdown
@@ -0,0 +1,51 @@
+Title: We're not participating in 'QA of the year' award
+Headline: ironically because of a bug
+date: 2020-02-14 14:45
+comments: true
+og_image: images/award.png
+twitter_image: images/award.png
+
+Hello testers,
+this is the story of how our team is not taking part of
+the "QA of the year" contest organized by the
+[QA: Challenge Accepted](https://qachallengeaccepted.com/) conference despite
+[being nominated by Alex](https://www.facebook.com/groups/qabulgaria/permalink/2542909712425297/).
+In collaboration with Peter Sabev (organizer) we've managed to figure out what happened:
+
+* On Nov 17th Alex nominated the Kiwi TCMS team for the award
+* Last week Alex discovered our team is not listed on the voting page
+* Then Peter told us he's not seen any nomination related to
+ Kiwi TCMS at all which made everything feel even stranger
+* We've managed to dig out browser history from November
+ and it clearly shows the nomination form was submitted correctly
+* It was even possible to load the confirmation URL and edit the
+ submission
+* Upon second submission the nomination was clearly visible on the
+ other side, Peter confirmed this
+
+
+Then after a few days we've got word back - Peter had figured out what
+happened. Apparently the same Google form has been opened on 2 different
+computers and one of them overwrote the existing submissions.
+
+This kind of issue can be avoided by employing the following measures:
+
+- Make the submission results public so that everyone can verify their nomination
+ is indeed present on the list. It does take away anonymity and can also expose
+ personal information like email/phone/employer. ID, name and submission time-stamp
+ however will be enough
+- History of edits could also be exposed publicly for extra safety
+- Turn on some sort of overwrite protection similar to what you have for git
+ branches. At the very least have a warning before allowing data overwrite
+- Turn on email confirmation - the existing form didn't have this enabled
+- On our side: double check submission has been received - will put more
+ pressure on the organizing team
+
+
+Sadly the issue was discovered after
+the submission deadline has ended so Kiwi TCMS can't participate in this year's contest.
+We wish the rest of the finalists best of luck and we're going to see you
+at QA: Challenge Accepted next month.
+
+
+Happy testing!
diff --git a/content/2020-02-17-meet-kiwitcms-march.markdown b/content/2020-02-17-meet-kiwitcms-march.markdown
new file mode 100644
index 00000000..0e7b09a5
--- /dev/null
+++ b/content/2020-02-17-meet-kiwitcms-march.markdown
@@ -0,0 +1,42 @@
+Title: Catch-up with Kiwi TCMS in Sofia, Singapore, Kiev & Moscow
+headline: and get discounts and free tickets
+date: 2020-02-17 15:37
+comments: true
+og_image: images/roadtrip.png
+twitter_image: images/roadtrip.png
+tags: community, events
+
+Hello testers,
+you can catch-up with your favorite open source test case management system
+during the month of March. Here's a list of events we are going to:
+
+* March 14 - [QA: Challenge Accepted, Sofia](https://qachallengeaccepted.com/)
+ where we will have an info booth. You will get a 15% community discount if
+ you email **tickets@qachallengeaccepted.com** and mention this blog post
+* March 19-21 - [OpenTechSummit, Singapore](https://summit.fossasia.org/) -
+ aka FOSS ASIA summit:
+ - *Kiwi TCMS exhibition booth* - 3 days
+ - *How to write pylint plugins for fun & profit* workshop on March 19th
+ - *Testing [for] security [in] open source* presentation on March 21st
+
+ To claim a free Community Standard Ticket use code
+ [atodorov](https://eventyay.com/e/a74665c3?code=atodorov). First 5 tickets
+ only! For a 25% discount use code
+ [fossasia-speaker](https://eventyay.com/e/a74665c3?code=fossasia-speaker).
+ For a 25% discount use code
+ [exhibitor-friends](https://eventyay.com/e/a74665c3?code=exhibitor-friends)
+ - applies only to Community Standard Ticket.
+
+* March 27-28 - [TestingStage, Kiev](https://testingstage.com/) where Alex
+ will present his *Static analysis as a test tool* session. You can also claim
+ 15% ticket discount by using promo-code **AlexanderTodorov**
+* April 1-2 - [TestCon Moscow](https://testconf.ru/) where Alex will present
+ the *Static analysis as a test tool* again
+
+
+Original plan was to visit [OpenTest Con, Beijing](https://opentestcon.org/)
+between March 30-31 which has now been cancelled! The new plan is to
+stay 2-3 more days in Kiev and join some meetups if available.
+
+Feel free to ping us at [@KiwiTCMS](https://twitter.com/KiwiTCMS) or look for the
+kiwi bird logo and come to say hi. Happy testing!
diff --git a/content/2020-03-04-version-8.1.rst b/content/2020-03-04-version-8.1.rst
new file mode 100644
index 00000000..1693b6ed
--- /dev/null
+++ b/content/2020-03-04-version-8.1.rst
@@ -0,0 +1,173 @@
+Kiwi TCMS 8.1
+#############
+
+:headline: security, improvements, bug fixes
+:date: 2020-03-04 15:50
+:comments: true
+:tags: releases
+
+
+We're happy to announce Kiwi TCMS version 8.1!
+
+**IMPORTANT:**
+this is a small security and improvement release which
+also includes several bug fixes, internal refactoring and updated translations.
+You can explore everything at
+`https://public.tenant.kiwitcms.org `_!
+
+
+Supported upgrade paths::
+
+ 5.3 (or older) -> 5.3.1
+ 5.3.1 (or newer) -> 6.0.1
+ 6.0.1 -> 6.1
+ 6.1 -> 6.1.1
+ 6.1.1 -> 6.2 (or newer)
+
+Docker images::
+
+ pub.kiwitcms.eu/kiwitcms/kiwi latest fbb363af2d90 557 MB
+ pub.kiwitcms.eu/kiwitcms/kiwi 6.2 7870085ad415 957 MB
+ pub.kiwitcms.eu/kiwitcms/kiwi 6.1.1 49fa42ddfe4d 955 MB
+ pub.kiwitcms.eu/kiwitcms/kiwi 6.1 b559123d25b0 970 MB
+ pub.kiwitcms.eu/kiwitcms/kiwi 6.0.1 87b24d94197d 970 MB
+ pub.kiwitcms.eu/kiwitcms/kiwi 5.3.1 a420465852be 976 MB
+
+
+Changes since Kiwi TCMS 8.0
+---------------------------
+
+
+Security
+~~~~~~~~
+
+- JSON-RPC handler will now HTML escape all strings. This prevents XSS attacks
+ via tags, components or anything else which is loaded on the web page via RPC
+ and then shown as string. Even if someone saves ````
+ in the database the returned result will be HTML escaped and will not be executed
+ as JavaScript!
+
+ **Notes:**
+
+ This is easy to exploit but people able to do so should have accounts in
+ your Kiwi TCMS installation and write privileges on their accounts. If they
+ do this means they can cause a lot more damage much more easily!
+
+- Update Django from 3.0.3 to 3.0.4 - fixes security issue CVE-2020-9402:
+ Potential SQL injection via ``tolerance`` parameter in GIS functions and aggregates
+ on Oracle which we believe does not affect Kiwi TCMS
+
+
+Improvements
+~~~~~~~~~~~~
+
+- Update bleach from 3.1.0 to 3.1.1
+- Update django-colorfield from 0.1.15 to 0.2.1
+- Update markdown from 3.2 to 3.2.1
+- On bug creation send email to assignee. Fixes
+ `Issue #1154 `_ (Mfon Eti-mfon)
+- Make it possible to provide override settings in a directory. Kiwi TCMS will
+ respect:
+
+ - ``local_settings.py``
+ - ``local_settings_dir/*.py``
+
+ For more information see
+ https://kiwitcms.readthedocs.io/en/latest/installing_docker.html#customization
+- Allow adding TestPlan to TestCase via UI. Fixes
+ `Issue #1021 `_
+- Add visual representation of failures in TestCase health telemetry
+- Add helper text to TestExecutionStatus admin
+- Add link to discussion forum in Help menu
+
+
+API
+~~~
+
+- ``TestCase.create()`` method no longer accepts ``product`` or ``product_id``
+ fields which have previously been deprecated
+- API methods which receive True/False values will no longer parse yes,no,1,0 values.
+ The only accepted values are boolean constants defined in the calling programming
+ language which are then transmitted via XML-RPC or JSON-RPC and converted to
+ native boolean on the backend
+
+
+Bug fixes
+~~~~~~~~~
+
+- The number of search results shown per page can now be controlled via
+ ``DEFAULT_PAGE_SIZE`` setting, which is 100 by default. Fixes
+ `Issue #1210 `_ (Ivailo Karabojkov)
+- Use comma separated display of components in bug reports. Fixes
+ `Issue #1157 `_ (Ivailo Karabojkov)
+- Update selector for 'Select All' test executions in TestRun page. Fixes
+ `Issue #1404 `_
+- Fix crash when sorting test cases in TestPlan page. Fixes
+ `Sentry #KIWI-TCMS-A6 `_
+- Fix a ``TC-undefined`` displayed in TestCase health telemetry
+
+
+Refactoring
+~~~~~~~~~~~
+
+- Add test for ``TestRunAdmin.change_view()`` (Mariyan Garvanski)
+- Remove unused ``showCaseRunsWithSelectedStatus``
+- Internal JavaScript updates
+
+
+Translations
+~~~~~~~~~~~~
+
+- Updated `Bulgarian translation `_
+- Updated `Chinese Simplified translation `_
+- Updated `French translation `_
+- Updated `Slovenian translation `_
+
+
+GitHub Marketplace listing deprecation
+--------------------------------------
+
+As we've stated previously Kiwi TCMS has migrated to a new GitHub backend and
+OAuth tokens for the previous backend have been revoked and the
+existing listing on GitHub Marketplace is deprecated. It is a non-functioning
+app at the moment!
+
+It is not possible for us to cancel Marketplace subscriptions programatically,
+that is GitHub does not provide such API. Active subscribers please follow these
+3 steps to help us clean up stale information:
+
+- Go to https://github.com/marketplace/kiwi-tcms
+- From "Edit your plan" button at the top select your GitHub account
+- Then click "Cancel this plan" link which is at the left-hand side
+ at the bottom of the description box!
+
+
+How to upgrade
+---------------
+
+`Backup <{filename}2018-07-30-docker-backup.markdown>`_ first!
+If you are using Kiwi TCMS as a Docker container then::
+
+ cd path/containing/docker-compose/
+ docker-compose down
+ docker pull pub.kiwitcms.eu/kiwitcms/kiwi
+ docker pull centos/mariadb-103-centos7
+ docker-compose up -d
+ docker exec -it kiwi_web /Kiwi/manage.py migrate
+
+**WHERE:** ``docker-compose.yml`` has been updated from your private git repository!
+The file provided in our GitHub repository is an example. Not for production use!
+
+**WARNING:** ``pub.kiwitcms.eu/kiwitcms/kiwi:latest`` and ``docker-compose.yml`` will
+always point to the latest available version! If you have to upgrade in steps,
+e.g. between several intermediate releases, you have to modify the above workflow::
+
+ # starting from an older Kiwi TCMS version
+ docker-compose down
+ docker pull pub.kiwitcms.eu/kiwitcms/kiwi:
+ edit docker-compose.yml to use pub.kiwitcms.eu/kiwitcms/kiwi:
+ docker-compose up -d
+ docker exec -it kiwi_web /Kiwi/manage.py migrate
+ # repeat until you have reached latest
+
+Happy testing!
diff --git a/content/2020-03-27-mozilla-award-winner.markdown b/content/2020-03-27-mozilla-award-winner.markdown
new file mode 100644
index 00000000..cd689906
--- /dev/null
+++ b/content/2020-03-27-mozilla-award-winner.markdown
@@ -0,0 +1,68 @@
+Title: Kiwi TCMS is Open Source Seed Award winner
+headline: $10,000 for open source
+date: 2020-03-27 10:47
+comments: true
+og_image: images/mozilla_award_winner.jpg
+twitter_image: images/mozilla_award_winner.jpg
+tags: community
+
+Kiwi TCMS is the proud winner of a $10,000 award from Mozilla, Indeed,
+Open Collective, Ford Foundation & Simply Secure. Read below for the full story!
+
+At the end of January Zahari alerted our team about the
+[Open Source Speed Dating FOSDEM 2020](https://opencollective.com/open-source-speed-dating/events/open-source-speed-dating-fosdem-2020-96f78c6c)
+event and Alex was very swift in filing the application form. Just as we landed
+in Brussels, ready to host
+[Testing and Automation devroom and the Open Source Test Management stand]({filename}2019-11-26-fosdem2020.markdown),
+we got the news - Kiwi TCMS has been selected as a participant.
+
+What followed was a very hasty day of preparing a 5 min pitch and rehearsing it
+as much as possible so we can be ready to present our project. Alex prepared the
+pitch and made final review and polishing together with Anton.
+For the record everything was written down on paper,
+including important facts about the project and schedule - when and where is our slot,
+how is Alex going to get there, when does he need to leave to be on time, etc.
+We believe that preparation was key here and that's why our team always tries to
+be prepared when we participate at events! It was as good
+as it can get, no more changes!
+
+On Feb 1st all hell broke loose - it was day #1 of FOSDEM,
+the Testing an Automation devroom was full with amazing speakers and packed with people,
+[watch videos here](https://fosdem.org/2020/schedule/track/testing_and_automation/),
+there was barely time to eat or drink water and at 5PM Alex had to rush across town to pitch
+Kiwi TCMS!
+
+Then everything went like clockwork - weather was warm for the season,
+Alex decided to walk from ULB to La Tricoterie, both so he doesn't get stuck in traffic but
+also to regulate stress level and be clear minded for what comes next. He arrived just on
+time to meet with new folks and have a glass of wine before taking his turn with the judges.
+
+Open Source Speed Dating is a format where projects pitch to a team of 3 judges who then
+follow up with various questions. Their goal is to assess how suitable your project is
+for the money they are giving away but also how would actually receiving an award help the project.
+You do get guidance how to prepare and what sort of information the judges are looking for.
+However you have no idea who the other participants are and who are you competing against!
+All you have is a 15 minutes slot where you have to give the best of you and hope it is
+enough.
+
+Afterwards we reunited together, did even more walking, played the SPACESHIP at
+*Let Me Out* escape room and finished with a mandatory team dinner in the hearth of Brussels.
+
+Following an internal selection process and due diligence we finally received the award.
+[$10,000 for open source](https://opencollective.com/kiwitcms/transactions)!
+
+As a side note we also got to know who the other winners are, which can be seen from
+[Open Source Speed Dating records](https://opencollective.com/open-source-speed-dating/transactions):
+F-Droid, ossia, MNT Research GmbH and Kiwi TCMS!
+
+
+Weâre giving all of it to our community
+---------------------------------------
+
+All money from the [Kiwi TCMS Collective](https://opencollective.com/kiwitcms/)
+will be going towards funding development tasks.
+Like Alex told the judges - this will help us enable more hands working on Kiwi TCMS
+and complete pending work faster. Stay tuned for our bounty program announcement!
+
+
+Happy testing!
diff --git a/content/2020-04-03-version-8.2.rst b/content/2020-04-03-version-8.2.rst
new file mode 100644
index 00000000..00defacb
--- /dev/null
+++ b/content/2020-04-03-version-8.2.rst
@@ -0,0 +1,146 @@
+Kiwi TCMS 8.2
+#############
+
+:headline: update 3rd party libraries, small improvements & API changes
+:date: 2020-04-03 22:25
+:comments: true
+:tags: releases
+
+
+We're happy to announce Kiwi TCMS version 8.2!
+
+**IMPORTANT:**
+this is a small release which updates 3rd party libraries,
+provides minor improvements, minor API changes and some new translations.
+You can explore everything at
+`https://public.tenant.kiwitcms.org `_!
+
+
+Supported upgrade paths::
+
+ 5.3 (or older) -> 5.3.1
+ 5.3.1 (or newer) -> 6.0.1
+ 6.0.1 -> 6.1
+ 6.1 -> 6.1.1
+ 6.1.1 -> 6.2 (or newer)
+
+Docker images::
+
+ pub.kiwitcms.eu/kiwitcms/kiwi latest 7c1b947b9a43 561 MB
+ pub.kiwitcms.eu/kiwitcms/kiwi 6.2 7870085ad415 957 MB
+ pub.kiwitcms.eu/kiwitcms/kiwi 6.1.1 49fa42ddfe4d 955 MB
+ pub.kiwitcms.eu/kiwitcms/kiwi 6.1 b559123d25b0 970 MB
+ pub.kiwitcms.eu/kiwitcms/kiwi 6.0.1 87b24d94197d 970 MB
+ pub.kiwitcms.eu/kiwitcms/kiwi 5.3.1 a420465852be 976 MB
+
+
+Changes since Kiwi TCMS 8.1
+---------------------------
+
+Improvements
+~~~~~~~~~~~~
+
+- Update bleach from 3.1.1 to 3.1.4
+- Update django from 3.0.4 to 3.0.5
+- Update django-colorfield from 0.2.1 to 0.2.2
+- Update pygithub from 1.46 to 1.47
+- Update python-gitlab from 2.0.1 to 2.1.2
+- Update marked(js) to version 0.8.2
+- Change default MariaDB charset and collation to utf8mb4. Will only affect
+ new installations. Closes
+ `Issue #327 `_
+- Document ``TCMS_PLAN_ID`` ENV variable supported by automation framework
+ plugins
+- Test case Search page now allows searching for records containing the
+ specified text. Closes #1209 @Schwarzkrieger
+- Provide ``../site-packages/tcms_settings_dir/`` when installing Kiwi TCMS
+ which is an empty pkgutil-style namespace where other packages can drop
+ their configuration
+- Hide empty values in Execution trends chart tooltips
+
+
+API
+~~~
+
+- Remove ``Auth.login_krbv()`` method
+- Method ``TestRun.update()`` will now accept ``%Y-%m-%d %H:%M:%S``
+ timestamp format. The previous format ``%Y-%m-%d`` is also supported
+- Method ``TestExecution.create()`` now defaults to first neutral status
+ instead of searching for the hard-coded ``IDLE``. That means newly created
+ test executions which do not specify status will be created with the first
+ neutral status found in the database
+
+
+Refactoring
+~~~~~~~~~~~
+
+- Fix pylint errors. Closes
+ `Issue #1510 `_ (@cmbahadir)
+- Add tests for ``TestRunAdmin.delete_view()`` (Mariyan Garvanski)
+- Revert "[l10n] Add Serializer class which returns untranslated models"
+
+
+Translations
+~~~~~~~~~~~~
+
+- Updated `Bulgarian translation `_
+- Updated `Portuguese, Brazilian translation `_
+
+
+social-auth-kerberos v0.2.4
+---------------------------
+
+A new version of our Kerberos authentication backend has been released
+as well. For more info check
+https://github.com/kiwitcms/python-social-auth-kerberos#changelog.
+This version is included with *Kiwi TCMS Enterprise*.
+
+
+tcms-api v8.2.0
+---------------
+
+New version of our ``tcms-api`` library has been released as well.
+Notable changes include the bug-fixes for Kerberos support and the
+ability to use Kerberos on Windows. For more information see
+https://github.com/kiwitcms/tcms-api/#changelog.
+
+
+tap-plugin & junit.xml-plugin v8.2
+----------------------------------
+
+Both plugins are now using the latest version of ``tcms-api`` library
+and include additional improvements like being able to specify
+existing TestPlan and setting ``stop_date`` for the automated TestRun.
+For more information see https://github.com/kiwitcms/tap-plugin#changelog
+and https://github.com/kiwitcms/junit.xml-plugin/#changelog
+
+
+How to upgrade
+---------------
+
+`Backup <{filename}2018-07-30-docker-backup.markdown>`_ first!
+If you are using Kiwi TCMS as a Docker container then::
+
+ cd path/containing/docker-compose/
+ docker-compose down
+ docker pull pub.kiwitcms.eu/kiwitcms/kiwi
+ docker pull centos/mariadb-103-centos7
+ docker-compose up -d
+ docker exec -it kiwi_web /Kiwi/manage.py migrate
+
+**WHERE:** ``docker-compose.yml`` has been updated from your private git repository!
+The file provided in our GitHub repository is an example. Not for production use!
+
+**WARNING:** ``pub.kiwitcms.eu/kiwitcms/kiwi:latest`` and ``docker-compose.yml`` will
+always point to the latest available version! If you have to upgrade in steps,
+e.g. between several intermediate releases, you have to modify the above workflow::
+
+ # starting from an older Kiwi TCMS version
+ docker-compose down
+ docker pull pub.kiwitcms.eu/kiwitcms/kiwi:
+ edit docker-compose.yml to use pub.kiwitcms.eu/kiwitcms/kiwi:
+ docker-compose up -d
+ docker exec -it kiwi_web /Kiwi/manage.py migrate
+ # repeat until you have reached latest
+
+Happy testing!
diff --git a/content/2020-04-09-eu-web-awards-vote-for-us.markdown b/content/2020-04-09-eu-web-awards-vote-for-us.markdown
new file mode 100644
index 00000000..d9790738
--- /dev/null
+++ b/content/2020-04-09-eu-web-awards-vote-for-us.markdown
@@ -0,0 +1,36 @@
+Title: Please vote for Kiwi TCMS in 2020 .eu Web Awards
+headline: and help us advertise open source at Brussels airport for FOSDEM 2021
+date: 2020-04-09 13:48
+comments: true
+og_image: images/eu_web_awards_vote.png
+twitter_image: images/eu_web_awards_vote.png
+tags: community
+
+
+
+
+
+```gherkin
+Scenario: Display open source advertising in Brussels airport
+ Given one of the prizes is a 2 month billboard advertising campaign
+ And the awards ceremony is on Nov 18th 2020
+ When Kiwi TCMS wins
+ Then there is good chance this campaign coincides with FOSDEM
+```
+
+- Go to ;
+- Point your mouse to the photo of our website and click
+ the Thumbs Up 👍 button;
+- No email or registration required!
+
+
+Out team promises to do everything in our power so that visitors to
+[FOSDEM 2021](http://fosdem.org) start feeling the community vibe directly
+at the airport!
+
+Please vote and share.
+
+Thank you!
diff --git a/content/2020-04-17-bounty-program-part01.markdown b/content/2020-04-17-bounty-program-part01.markdown
new file mode 100644
index 00000000..03781391
--- /dev/null
+++ b/content/2020-04-17-bounty-program-part01.markdown
@@ -0,0 +1,226 @@
+Title: Kiwi TCMS open source bounty program, Round 01
+headline: focus: translation & test automation plugins
+date: 2020-04-17 12:53
+comments: true
+og_image: images/bounty_program.png
+twitter_image: images/bounty_program.png
+tags: community, bounty-program
+
+
+
+
+
+Kiwi TCMS is donating ⏠10000 (ten thousand euro) to our community to enable more hands working
+together and give an opportunity for people to get exposed to open source
+contributions. You will help us complete pending tasks faster while
+learning something new and receive a bonus for your efforts!
+This blog post outlines the rules of our open source bounty program.
+
+
+Who is eligible to participate
+------------------------------
+
+Everyone who meets the following criteria is eligible to participate:
+
+- Has an account on - needed to follow program updates
+ and request payments
+- Has a bank account - needed for actual money transfer, more info below!
+
+If you are beginner in Python, Django or some other technology that we use
+please consider available documentation, your local user group, developers forum and
+StackOverflow to get help. Do not turn GitHub issues into a
+"getting started in programming" discussion.
+
+
+Engagement rules
+----------------
+
+- Program will be split into multiple rounds as we work to clearly define
+ what needs to be done and adjust priorities
+- News and updates will be posted at
+- You are expected to mostly work alone on issues
+- Technical discussion will be happening via GitHub pull requests and/or GitHub issues
+ under unless indicated otherwise
+- Translation related discussion will be happening via Crowdin under
+ when needed
+- Do not contact individual team members privately, we are going to ignore such messages
+
+
+FIFO order for code review
+--------------------------
+
+- Contributions will be reviewed and merged in a rolling *first-in-first-out* order,
+ that is we review 1 PR and while waiting for updates continue on the next in the queue
+- In case of collisions, multiple contributions that try to resolve the same problem,
+ our team will review the first one, then the second one, etc. The pull request
+ which is first to pass DoD and code review will be merged and the conflicting ones closed
+- Please comment on issues and work together with other community members to
+ split the work and avoid collisions as much as possible
+
+
+About issues
+------------
+
+Our team will try to clearly describe each task and what constitutes a
+successfully completed task, e.g. *definition of done* (DoD). If this isn't the case
+please ask questions and seek clarification about such tasks.
+
+- Only Issues under the [bounty-program milestone](https://github.com/kiwitcms/Kiwi/milestone/4)
+ **AND** labelled with a specific monetary amount are eligible for payout!
+- Unlabelled issues need further refinement before they can be accepted for bounties!
+
+Payout rules
+------------
+
+Once DoD has been met and the contribution is merged you may claim the assigned bounty.
+You must perform the following steps:
+
+- [Submit an expense](https://opencollective.com/kiwitcms/expenses/new) to the
+ Kiwi TCMS Collective
+- All expenses submitted to the Kiwi TCMS Collective must follow the invoicing rules
+ of our Fiscal Host.
+ [Here is an invoice template (Google Doc)](https://docs.google.com/document/d/1-unqsnko4Eaza3fSuVAUFqvhMwe-h1V8jhruTDBjrUY/copy)
+ you can use. Fill-in the blue parts and leave the black parts
+- Invoice & expense description contains the number of issue(s) and PR(s) for which
+ bounty is claimed
+
+**Identity cross validation:**
+
+Once an expense has been submitted add a comment with your GitHub/Crowdin username
+to it + open a
+[new issue in GitHub](https://github.com/kiwitcms/Kiwi/issues/new?assignees=atodorov&labels=&template=claim_bounty.md&title=)
+/new discussion in Crowdin with link to
+the expense submission. This will help us cross-validate that we are talking
+to the same person between platforms.
+
+
+**Note on bank transfers**
+
+A message from our [Fiscal Host](https://opencollective.com/europe):
+
+> We currently prefer to do payouts using bank transfers.
+> We used to support PayPal but fees were way too high for the collectives.
+>
+> About bank transfer, we do EU transfers as well as non EU (which takes more time obviously).
+>
+> We noticed that several collectives are now using Revolut bank accounts which is the
+> easiest and cheapest way (itâs free) to receive money anywhere in the world.
+
+
+It looks like the fastest & cheapest way to get paid is via Revolut account if you have one,
+followed by standard bank transfer and PayPal account is last!
+
+
+Bounties: translation related tasks
+-----------------------------------
+
+- Chinese Simplified -
+ [#1459](https://github.com/kiwitcms/Kiwi/issues/1459),
+ [#1460](https://github.com/kiwitcms/Kiwi/issues/1460)
+ [#1461](https://github.com/kiwitcms/Kiwi/issues/1461),
+ [#1462](https://github.com/kiwitcms/Kiwi/issues/1462),
+ [#1463](https://github.com/kiwitcms/Kiwi/issues/1463)
+- Hindi -
+ [#1464](https://github.com/kiwitcms/Kiwi/issues/1464),
+ [#1465](https://github.com/kiwitcms/Kiwi/issues/1465)
+ [#1466](https://github.com/kiwitcms/Kiwi/issues/1466),
+ [#1467](https://github.com/kiwitcms/Kiwi/issues/1467),
+ [#1468](https://github.com/kiwitcms/Kiwi/issues/1468)
+- Indonesian -
+ [#1469](https://github.com/kiwitcms/Kiwi/issues/1469),
+ [#1470](https://github.com/kiwitcms/Kiwi/issues/1470)
+ [#1471](https://github.com/kiwitcms/Kiwi/issues/1471),
+ [#1472](https://github.com/kiwitcms/Kiwi/issues/1472),
+ [#1473](https://github.com/kiwitcms/Kiwi/issues/1473)
+- Bengali -
+ [#1474](https://github.com/kiwitcms/Kiwi/issues/1474),
+ [#1475](https://github.com/kiwitcms/Kiwi/issues/1475)
+ [#1476](https://github.com/kiwitcms/Kiwi/issues/1476),
+ [#1477](https://github.com/kiwitcms/Kiwi/issues/1477),
+ [#1478](https://github.com/kiwitcms/Kiwi/issues/1478)
+- German -
+ [#1505](https://github.com/kiwitcms/Kiwi/issues/1505),
+ [#1506](https://github.com/kiwitcms/Kiwi/issues/1506),
+ [#1507](https://github.com/kiwitcms/Kiwi/issues/1507),
+ [#1508](https://github.com/kiwitcms/Kiwi/issues/1508),
+ [#1509](https://github.com/kiwitcms/Kiwi/issues/1509)
+- Japanese -
+ [#1489](https://github.com/kiwitcms/Kiwi/issues/1489),
+ [#1490](https://github.com/kiwitcms/Kiwi/issues/1490)
+ [#1491](https://github.com/kiwitcms/Kiwi/issues/1491),
+ [#1492](https://github.com/kiwitcms/Kiwi/issues/1492),
+ [#1493](https://github.com/kiwitcms/Kiwi/issues/1493)
+- Swahili -
+ [#1494](https://github.com/kiwitcms/Kiwi/issues/1494),
+ [#1495](https://github.com/kiwitcms/Kiwi/issues/1495)
+ [#1497](https://github.com/kiwitcms/Kiwi/issues/1497),
+ [#1498](https://github.com/kiwitcms/Kiwi/issues/1498),
+ [#1499](https://github.com/kiwitcms/Kiwi/issues/1499)
+- Vietnamese -
+ [#1484](https://github.com/kiwitcms/Kiwi/issues/1484),
+ [#1485](https://github.com/kiwitcms/Kiwi/issues/1485)
+ [#1486](https://github.com/kiwitcms/Kiwi/issues/1486),
+ [#1487](https://github.com/kiwitcms/Kiwi/issues/1487),
+ [#1488](https://github.com/kiwitcms/Kiwi/issues/1488)
+- Korean -
+ [#1479](https://github.com/kiwitcms/Kiwi/issues/1479),
+ [#1480](https://github.com/kiwitcms/Kiwi/issues/1480)
+ [#1481](https://github.com/kiwitcms/Kiwi/issues/1481),
+ [#1482](https://github.com/kiwitcms/Kiwi/issues/1482),
+ [#1483](https://github.com/kiwitcms/Kiwi/issues/1483)
+
+
+Bounties: test automation plugins
+---------------------------------
+
+- Django test runner reporting plugin -
+ [#693](https://github.com/kiwitcms/Kiwi/issues/693)
+- py.test reporting plugin - [#1511](https://github.com/kiwitcms/Kiwi/issues/1511)
+- JUnit plugin: annotation & improvement for test case mapping -
+ [#1512](https://github.com/kiwitcms/Kiwi/issues/1512)
+- TestNG plugin -
+ [#692](https://github.com/kiwitcms/Kiwi/issues/692)
+
+
+Bounties: assorted technical issues
+-----------------------------------
+
+- pylint -
+ [#1192](https://github.com/kiwitcms/Kiwi/issues/1192)
+- JavaScript: Add buttons for creating tables in text editor -
+ [#1531](https://github.com/kiwitcms/Kiwi/issues/1531)
+- Migration from Travis CI to GitHub workflows -
+ [#1550](https://github.com/kiwitcms/Kiwi/issues/1550),
+ [#1551](https://github.com/kiwitcms/Kiwi/issues/1551),
+ [#1552](https://github.com/kiwitcms/Kiwi/issues/1552),
+ [#1553](https://github.com/kiwitcms/Kiwi/issues/1553),
+ [#1554](https://github.com/kiwitcms/Kiwi/issues/1554)
+
+
+Call for sponsors
+-----------------
+
+We are also calling upon teams and organizations who use Kiwi TCMS in their
+testing workflows. Please consider making a one-time donation or
+becoming a regular sponsor via our
+[Collective](https://opencollective.com/kiwitcms#section-contribute).
+You can contribute as low as ⏠1! The entire budget will be distributed to the community!
+
+
+Vote for Kiwi TCMS
+------------------
+
+Our website has been nominated in the *2020 .eu Web Awards* and
+[we've promised]({filename}2020-04-09-eu-web-awards-vote-for-us.markdown)
+to do everything in our power to greet future FOSDEM visitors with
+an open source billboard advertising at BRU airport. We need your help
+to do that!
+
+- Go to