Committing to the RKWard repository
===================================

This is a very short guideline, primarily for those who have KDE developer access, and are wondering whether, and how to commit to the RKWard repository, directly.

If you do not have KDE developer access, contact us on the mailing list (rkward-devel@kde.org), or submit patches via phabricator (see below).

Library dependencies
====================

It is important to note that RKWard makes a point of _not_ requiring the latest KDE / QT libraries. If you want to use the latest and greatest, be sure to use #ifdef's, and make a best
effort to support features for older versions of libraries, too. For the moment, in the KF5 versions of RKWard, we're trying to support:

Oldest library versions to support:
* Qt: 5.2.1 (= Ubuntu Trusty)
* KDE: 5.2.0 -- TODO: What version would be readily accessible for Trusty (if any)
* R: 3.0.0? (= Ubuntu Trusty)

Note: This is not set in stone, may change according to whatever is included in important distributions.

Branches and policies
=====================

* master: 
  Most development happens in master. For the time being master is always open for commits, although you are encouraged to develop more elaborate new features in a separate branch. Do try to keep this branch compilable and functional at all times (some rough edges are allowed, though). For more disruptive work, use a "work" branch (see below).
* releases/*
  These branches are more restricted. In general you should:
  * not add any new features (only fixes) to these
  * monitor the mailing list for any (string) freezes in these branches, before doing any work, there
  * merge your commit to master, unless it is really specific to the release-branch (or unless you cherry-picked it from master)
* released:
  This will be updated for each new stable release, but _only_ for each new stable release. Meant to allow tracking released versions. In general, please don't commit / push anything, here, unless you are the release manager.
* work/*
  For longer, experimental, or disruptive work, consider creating a branch named "work/feature_description". Do let us know, when the feature is merged (or discarded), and the branch can be removed.
* kde4:
  The latest KDE4 based development version of RKWard. There may or may not be future bugfix releases for KDE4, but no active development is expected on this branch.

Testing
=======

Only some of RKWard (mostly: the plugins) is currently covered by automated tests. To run these, use
  make plugintests
More elaborate documentation is available at https://rkward.kde.org/Automated_Plugin_Testing . Running tests is particularly important when making changes to the "plugin" and "plugins"
subdirectories.

Note that there are some false positives or unstable tests (failing in some locales, for instance). Check the diffs to find out, exactly how the test failed, or run tests before
and after your changes. If in any doubt, ask on the mailing list rkward-devel@kde.org .

Review
======

There is no strict policy on code reviews. It is never wrong to ask for review on Phabricator: https://phabricator.kde.org/differential/diff/create/ . Always select repository "RKward".
