Welcome

KDE Libraries
for Microsoft Windows
Environments

Jarosław Staniek

js at iidea.pl

Overview

History

Goals && Assumptions

Current State

Side Effects && Benefits

Plans && Dreams

History: Before March 2003

KDE on Cygwin only existed for win32

Some kdelibs
(e.g. KMDI), and apps
had ifdef'd support for
Qt-only environment

KDE On Cygwin

History: March 2003

Qt-KDE Wrapper (QKW) Project started for KDE 3.1
by Jarosław Staniek,
sponsored by
OpenOffice Polska,
a side effect of
porting Kexi to win32

History: September 2004

QKW source code
merged with KDE 3.2
sources, renamed to
KDElibs for win32

Now it resides
in KDE Trunk as one
of targets

KFind using old good HighColor style on even older win98.

Goals

Compile and run existing KDE applications natively under win32

Reduce a need for Qt-only code (where reasonable)

Make public API of KDE libraries highly
X11-independent

Allow to use win32 as application development, without any impact on portability

Anti-goals

KDE Desktop on win32 as a replacement for it's original desktop

Certain hacks can be illegal or technically impossible

Users not being comfortable with win32 desktop look and feel are free just to switch to Linux/Unix

Injecting some WIN API to KDE libs API

Reuse or mimic win32 GUI look & feel where possible (if this doesn't affect KDE libs API).
Examples:

reuse (or copy) win32 dialogs, eg. file dialogs

keep DOS-like file system paths (trying to force win32 users to comply with UNIX feel on win32 looks equally wrong as running native win32 apps on UNIX)

for example, KURL is already prepared for this

Assumptions

Assumptions (2)

Map system settings to KDE libs API structures like KGlobalSettings, MIME types

example: user documents folder's path could always be accessed by KGlobalSettings::documentPath()

the Windows Registry is usually used for storage

Some Unix/Linux-specific features can be hard to port, but not so important

this can also help in Linux promotion

Developer Tools – Current State

C++ compiler: msvc.net (7.1)

Borland's or GNU compilers not tested

Qt required: Qt 3.3.3 or later, like on Linux

(GPL'd Qt3 not tested)

Hardcoded .pro files for qmake

Cygwin used as shell

Msys (from Mingw) not tested

No support for compilation under IDE(s), but it can be used for convenient debugging

Developer Tools – Current State (2)

A few shell scripts, e.g. kmoc for creating .moc files

Subversion for win32

Predefined support for release and debug targets (debug targets have _d name prefix assigned, so both targets can coexist)

Main Installation Steps

Obtaining proper compiler

Qt installation and minor tweaking

Cygwin installation

Obtaining KDElibs source code (from SVN)

Obtaining KDE runtime files (.desktop files, settings, icons)

Setting environment variables

Building KDElibs

Developer Tools - Specifics

No 'install' target: binaries are compiled directly to $KDEDIR/bin, $KDEDIR/lib, $KDEDIR/lib/kde3

win32-specific code resides in kdelibs/win/

.pro files for KDElibs are kept separately in kdelibs/win/pro_files/ and are copied if needed to kdelibs/ subdirs

.la libtool files are needed for KDE modules, come with runtime files (this requirement will be removed)

What's Ported? - Libraries

KDElibs 3.4 and newer

libltdl, kdecore, kdeui, dcop (including DCOP server and tools), kded, kio, interfaces/ktexteditor, kabc, kate, kdewidgets, kioslave, kmdi, kparts, kresources

kdefx; KDE Styles work (some developers used this for Qt-only apps on win32)

Ifdef'd things

network functionality in kio

KFileDialog needs to be replaced with QFileDialog on win32

What's Ported? - Applications

Kexi and KFormDesigner

Other KOffice apps (not in SVN yet)

KBabel (not in SVN yet)

ShowImg (image viewer)

Some small apps for testing, eg. KFind's GUI

Side Effects of Porting to win32

An opportunity to realize of how good quality KDElibs code is: many things compiled without changes to code

About two dozens of hard to find bugs only identified thanks to using non-gcc/gdb tools

Good starting point to make API even more flexible in some aspects (example: KFileDialog, printing)

Side Effects of Porting to win32 (2)

Finally, support for some freedesktop.org specifications on win32 may be blessed by systems integrators

KDElibs for Mac OS X benefits from more portable KDElibs code

It's hard to find a full-time paid job related to KDE apps for Linux, but it's possible one related to KDE apps for Linux and Windows.

Opportunity: getting thousands of new KDE users on win32 platform

raising interest in KDE libraries itself and also contribution to popular KDE applications

more testers

more doc authors

finally, who knows: more developers

Benefits, Issues

Benefits, Issues (2)

Not everyone agrees with these points:

Strategically, operating systems itself are becoming irrelevant for users: e.g. about half of the world didn't upgrade to winXP

It's applications integrated within desktop environment what counts

Smooth transition with smaller steps is important on desktop (see Firefox and OpenOffice.org story)

Many users give up if they couldn't quickly switch to
a single FOSS application they want, keeping their current environment

It's no more just FOSS vs Proprietary: it's FOSS vs FOSS vital competition

Porting Plans

Libraries

updates for Qt4/win32

khtml, kjs (in progress)

kdeprint

Applications

entire KOffice

Kontact

Plans for Developer's Tools (SDK)

Switching to SCons (bksys) portable build system to maximize developers' convenience

Builtin support and integration with popular compilers

Define and maintain "official" binary releases

avoid problems with ABI (introduction of Qt4 complicated decisions a bit)

synchronize with releases for UNIX version

Installer for SDK

Installation toolkit for KDE apps on win32, runtime

Other TODOs

KDE's System Configuration Cache daemon
(for now, kbuildsycoca app has to be run by hand with a simple dialog to refresh environment)

User's Documentation: additional win32-specific content may be needed for users

David Faure, Harri Porten
discussion, advices and reviewing endless stream of patches

Andreas Roth
DCOP Client/Server port

Acknowledgements

Thank You

More Information

Project Documentation
http://wiki.kde.org/tiki-index.php?page=KDElibs for win32

Original Qt-KDE Wrapper Home
http://iidea.pl/~js/qkw/

KDE on Cygwin Project
http://kde-cygwin.sourceforge.net/

GPLed Qt3 for win32
http://qtwin.sourceforge.net
old page: http://kde-cygwin.sourceforge.net/qt3-win32/

2005-08-06T20:38:54