KDE Core/Platform 11/Eliminating Duplication With Qt: Difference between revisions

From KDE Community Wiki
Line 6: Line 6:
* Must start now to get what we need into Qt5 or will miss the chance
* Must start now to get what we need into Qt5 or will miss the chance
* Freeze kdelibs4, but not too hard may need changes or can backport some KDE5 stuff
* Freeze kdelibs4, but not too hard may need changes or can backport some KDE5 stuff
* Not everything needs to be in Qt 5.0, but do need to be structured so we can cleanly add new features in 5.1, 5.2
* Licence:
* Licence:
** Need review by eV lawyers to reassure contributors they don't lose rights, are fully informed of consequences, start asap as may take time
** Need review by eV lawyers to reassure contributors they don't lose rights, are fully informed of consequences, start asap as may take time
Line 20: Line 21:
* Review progress at Desktop Summit, if good progress then commit to full process
* Review progress at Desktop Summit, if good progress then commit to full process
* Need class-by-class review:
* Need class-by-class review:
** Work with dependencies team, need common note
** Work with dependencies team, need common notes somewhere
s somewhere
** Will need expert advice on each class, we can't know every reason for duplication
** Will need expert advice on each class, we can't know every reason for duplication
** Find if a Qt equivalent (not always obvious!)
** Find if a Qt equivalent (not always obvious!)
Line 33: Line 33:
*** Remove K class, use Q class completely
*** Remove K class, use Q class completely
*** Remove K class, use Q class with new K helper class
*** Remove K class, use Q class with new K helper class
* Not everything needs to be in Qt 5.0, but do need to be structured so we can cleanly add new features in 5.1, 5.2
 
== Specific classes/modules ==
 
Some obvious stuff from off top of our head:
 
* QtLocation: Move QGeoCoordinate and poss QGeoAddress from QtLocation to QtCore as fundamental data type
* KUrl / QUrl
* KDateTime / QDateTime
* KLocale / QLocale
* KAction / QAction
* KSSL*
* KCodec
* KlineEdit / QlineEdit
* KComboBox / QComboBox
* KCompleter
* ...

Revision as of 08:43, 3 June 2011


Notes

  • A Good Thing (TM), lt's do it
  • Must start now to get what we need into Qt5 or will miss the chance
  • Freeze kdelibs4, but not too hard may need changes or can backport some KDE5 stuff
  • Not everything needs to be in Qt 5.0, but do need to be structured so we can cleanly add new features in 5.1, 5.2
  • Licence:
    • Need review by eV lawyers to reassure contributors they don't lose rights, are fully informed of consequences, start asap as may take time
    • Create list of known contributors who have/will agree to Qt license so we can reuse their code if appropriate (will still need explicit agreement per contribution?)
    • Need to be very careful don't copy code of those who oppose code donations
  • Much depends on success of OpenGov
  • All contributions from KDE must be seen as for better of Qt not just KDE, we need to be pragmatic
  • If get in early with quality contributions can establish position of trust and authority
  • Start small with some test cases to prove process, gain trust:
    • KUrl/QUrl - Very simple case with minimal change required
    • KLineEdit/QLineEdit(?) - More involved case
    • QDateTime - Test for working with Qt Brisbane to develop common requirements
    • Printing - Big test case for major changes + maintainership
  • Review progress at Desktop Summit, if good progress then commit to full process
  • Need class-by-class review:
    • Work with dependencies team, need common notes somewhere
    • Will need expert advice on each class, we can't know every reason for duplication
    • Find if a Qt equivalent (not always obvious!)
    • Determine why KDE version exists
    • Determine if Qt version is already good enough (may have improved since K class created)
    • Determine if we really still need any extra features
    • Need to consider features, quality, performance
    • Reach a conclusion:
      • Keep K class entirely
      • Keep K class but move some features to Qt
      • Remove K class, use Q class completely
      • Remove K class, use Q class with new K helper class

Specific classes/modules

Some obvious stuff from off top of our head:

  • QtLocation: Move QGeoCoordinate and poss QGeoAddress from QtLocation to QtCore as fundamental data type
  • KUrl / QUrl
  • KDateTime / QDateTime
  • KLocale / QLocale
  • KAction / QAction
  • KSSL*
  • KCodec
  • KlineEdit / QlineEdit
  • KComboBox / QComboBox
  • KCompleter
  • ...