

.\" " " " " " " " " " " " " " " " " " " " " " " " " " " "
.\"                                                     "
.\" It is best to view this file with the man tool:     "
.\" man ./README.developers                             "
.\"                                                     "
.\" " " " " " " " " " " " " " " " " " " " " " " " " " " "


.TH README KAMD  2012-08-29 "KDE" "KActivities Developers"

.SH COMMIT POLICY

Every non-trivial patch must go through the review before it goes into the
master branch.

    http://git.reviewboard.kde.org
        repository: kactivities
        groups:     plasma
        people:     Ivan Cukic

If you don't have an account for identity.kde.org, you can send smaller
patches to the plasma-devel@kde.org mailing list, or (please don't) directly
to the repository maintainer (see MAINTAINER file).


.SH CODE POLICY

The code needs to follow KDElibs coding style in *all* parts of the project,
not only the library. You can find more information about the style here:
http://techbase.kde.org/Policies/Kdelibs_Coding_Style

Macros in CMakeLists.txt should be lowercase throughout the project,
and indentation should be 4, with the closing parenthesis in the same level
as the content.

.SH COMPILER COMPATIBILITY

The library (src/lib) needs to be compilable with these:
    - GCC 4.5
    - MSVC 2010
    - Clang 3.1
      (or newer)
This is the same policy the KDE Frameworks have.

Other parts require modern compilers. You can (and should) use more modern
C++ coding practices. Including auto, lambdas, smart pointers etc. You can
use anything that GCC 4.7 can compile.

These are the compilers you need to test your patches against:
    - GCC 4.7
    - LLVM/Clang 3.1

When you set up different builds alongside the main one, you can use
scripts/commit.sh to build them all before committing. The script
calls git commit if all builds finished successfully. See the script
for more info.


.SH FILE NAMING

The library files are lower-case, apart from the "pretty" headers.
The service, and the rest of the repository should be in camel-case
(with the exception of source files that don't have corresponding
headers, or vice-versa).


.SH CONVENIENCE MACROS AND METHODS

There are some convenience macros and methods defined in the headers placed
in the service/utils/ directory.

.TP
.B D_PTR
d_ptr.h and d_ptr_implementation.h define a smart pointer way of doing
the d-ptr (aka pimpl) idiom.

.TP
.B remove_if
remove_if.h is a generic implementation of the erase-remove idiom

.TP
.B for_each_assoc, find_if_assoc
for_each_assoc.h and find_if_assoc.h define the for_each and find_if
algorithms for associative containers. Works with both Qt and STL containers.

