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(17-19 April, Moscow),
Romanian Testing Conference(9-11 May, Cluj-Napoca),
PyCon CZ(1-3 June, Prague) and
DEVit(10-11 June, Thessaloniki).

If you can ping us at @KiwiTCMS or look for the
kiwi bird logo and come to say hi!

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.

Help us make Kiwi TCMS better

According to our 2018 roadmap 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.

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 metrics
to 26.9% of technical debt or 10 months to fix.

We've pushed the new kiwitcms/kiwi docker image to Docker Hub and updated the
demo instance at https://demo.kiwitcms.org. 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!

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

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.

Help us make Kiwi TCMS better

According to our 2018 roadmap 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.

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
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 (Anton Sankov)

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.

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! 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.

IMPORTANT: this is also the first release to officially publish the
kiwitcms/kiwi image on Docker Hub!

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.

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 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!
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 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.
http://demo.kiwitcms.org has also been updated so you can explore the
new version.

Changes since Kiwi TCMS 3.48

Enhancements and bug fixes

Order TCMSEnvValue records by property name and value. Fixes
Issue #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
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!

We are happy to announce the first official release of the
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!

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!

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.