Just a checklist for now, maybe a full HOWTO later.

porting:
    - note that decorations are ported from HEAD, not from the branch - HEAD may have fixes that are not in the branch
    - Makefile.am - LDFLAGS, LIBADD, kwin_ -> kwin3_, if in kdebase, add INCLUDES for libkdecorations before $(all_includes)
    - .desktop - kwin_ -> kwin3_
    - KWinButton -> QButton + QToolTip
    - #include qbutton.h, kdecoration.h, kdecorationfactory.h
    - Client* -> MyClient* in button class, pass parent->widget() to QButton
    - inherit from KDecoration instead of Client
    - no internal kwin #include, no namespace KWinInternal
    - ctor takes KDecorationBridge* and KDecorationFactory*
    - WResizeNoErase atd -> pass to createMainWidget()
    - ctor is empty, all initialization done in init()
    - createMainWidget() as the fist thing in init(), and widget()->installEventFilter( this )
    - implement eventFilter()
    - maximize changes - to flip a value, use maximize( maximizeMode() ^ XYZ ), for full maximize flip
        use maximizeMode() == MaximizeFull ? maximize( MaximizeRestore ) : maximize( MaximizeFull )
    - Sticky -> OnAllDesktops
    - iconify -> minimize
    - ther's no signal resetClients(), use KDecorationFactory::reset(), KDecorationFactory::resetDecorations(), KDecoration::reset()
    - often this -> widget() , or prepend widget()-> , sometimes it may be handy to create wrapper functions for e.g. width()
    - layout is created in init(), so call createLayout() directly there (if it's implemented)
    - options -> options()
    - no calls to Client::XYZ()
    - titlebarDblClickOperation() for doubleclick on titlebar
    - use extern "C" create_factory() returning your KDecorationFactory
    - init(), deinit(), reset(), create()/allocate() -> KDecorationFactory
    - reset() - instead of resetAllClients() return true, use argument for change detection, use resetDecorations()
        for reseting decorations if not requesting recreating of decoration by returning true
    - activeChange(bool) -> activeChange() + isActive(), etc.
    - minimumSize()
    - borders()
    - contextHelp() -> showContextHelp()
    - color setting values - prepend Color
    - windowWrapperShowEvent() is gone
    - animateIconifyOrDeiconify() -> animateMinimize() - just drop it if it's empty
    - pay special attention to SLOT() names and cases where you need to use 'widget()' instead of 'this'
    - buttons should use setCursor() if they don't want cursor set by mousePosition()