Difference between revisions of "Projects/PIM/KMail Junior Jobs"

< Projects‎ | PIM
Jump to: navigation, search
(Unify options to enable or disable the tooltips in the folder and message list)
(removing a todo that has allready been implemented (since kmail 4.9))
 
(71 intermediate revisions by 17 users not shown)
Line 1: Line 1:
== KMail Junior Jobs ==
+
== KMail Junior Jobs ==
  
On this page, you'll find small coding jobs for a beginner to work on.
+
On this page, you'll find small coding jobs for a beginner to work on. All these problems are relatively easy, some of them might even be one-liners. Of course, it is always a good idea to find your own thing to fix, the best motivation is scratching your own itch.  
All these problems are relatively easy, some of them might even be one-liners.
+
Of course, it is always a good idea to find your own thing to fix, the best motivation is scratching your own itch.
+
  
These tasks are intended for beginners with little or no experience programming with KDE. For those beginners, the biggest challenges are not actually the coding problems, but setting the development environment up, finding the correct place of code where the bug happens (in the jungle of all those source files) and interacting with the community, with the final step being sending the patch.
+
These tasks are intended for beginners with little or no experience programming with KDE. For those beginners, the biggest challenges are not actually the coding problems, but setting the development environment up, finding the correct place of code where the bug happens (in the jungle of all those source files) and interacting with the community, with the final step being sending the patch.  
  
The knowledge prerequisite for those jobs are not that big. You should be familiar in C++, and knowing Qt a bit would help. Knowing kdelibs or KMail internals is not required, that can usually be picked up during coding.
+
The knowledge prerequisite for those jobs are not that big. You should be familiar in C++, and knowing Qt a bit would help. Knowing kdelibs or KMail internals is not required, that can usually be picked up during coding.  
  
For more general information, visit the following places:
+
For more general information, visit the following places:  
* [[Welcome_to_KDE_TechBase|KDE Techbase]]: Contains a lot of information about developing KDE, in particular a section on how to build KDE from source
+
* [http://websvn.kde.org/*checkout*/trunk/KDE/kdepim/kmail/HACKING KMail's HACKING file]: Some KMail specific information.
+
  
The steps for your first coding contribution are roughly like this:
+
*[[Welcome to KDE TechBase|KDE Techbase]]: Contains a lot of information about developing KDE, in particular a section on how to build KDE from source
 +
*[http://websvn.kde.org/*checkout*/trunk/KDE/kdepim/kmail/HACKING KMail's HACKING file]: Some KMail specific information.
  
#[[Getting_Started/Build/KDE4|Build KDE trunk from sources]], including KDEPIM
+
The steps for your first coding contribution are roughly like this:
#Set up your development environment, i.e. your editor or [[Getting_Started/Set_up_KDE_4_for_development#KDevelop|IDE]]
+
#Pick something to work on, like some of the things suggested below
+
#Start coding and fix the problem!
+
#[[Contribute/Send_Patches|Send in a patch]]
+
  
Should you need help, feel free to ask us in the #kontact IRC channel.
+
#[[Getting Started/Build/|Build KDE trunk from sources]], including KDEPIM
 +
#Set up your development environment, i.e. your editor or [[Getting_Started/Using_an_IDE_with_KDE4|IDE]]
 +
#Pick something to work on, like some of the things suggested below
 +
#Start coding and fix the problem!
 +
#[[Contribute/Send Patches|Send in a patch]] (We prefer reviewboard)
  
If you find some information missing, feel free to add it to this page after you learn it.
+
Should you need help, feel free to ask us in the #kontact IRC channel, or mail either [mailto:mcguire@kde.org Thomas McGuire] (the KMail maintainer) or the [mailto:kde-pim@kde.org kde-pim mailing list].  
  
Below follows a list of junior jobs. It always includes a rough location where in the KMail sources to start.
+
Use the [http://commitfilter.kde.org KDE commitfilter] to subscribe to kdepim and kdepimlibs commits, you will learn a lot from other's commits.
+
{{improve|As you can see, the section below is not yet filled out. I'll try my best to fill it out. --[[User:TMG|TMG]] 23:33, 19 March 2009 (UTC) }}
+
  
=== Folder quick search should have "Search" as initial search text ===
+
If you find some information missing, feel free to add it to this page after you learn it.
  
'''Starting point:''' kmmainwidget.cpp
+
Below follows a list of junior jobs. It always includes a rough location where in the KMail sources to start.
  
'''Difficulty:''' Easy
+
{{Warning|At this point, '''KMail 1 is completely frozen'''. KMail 1 is the version that is shipped with KDE 4.4.x and earlier versions.
  
'''Description:''' The folder list on the left can have a similar quick search as the message list has, by enabling it in the configure dialog. However, it is missing the text "Search" that is shown by default in the message list quick search. It is your job to add that to the folder quick search as well.
+
Right now, we are working on KMail 2. KMail 2 is the KMail that is based on Akonadi.
  
 +
Only bugfixes for KMail 1 are still allowed, but no new features or any refactoring.
  
=== The default column sizes of the message structure viewer are too small ===
+
A good way to contribute would be to help with KMail 2, see first entry below.
 +
}}
  
'''Starting point:''' kmmimeparttree.cpp
+
=== Help making KMail 2 ready ===
  
'''Difficulty:''' Easy
+
'''Difficulty:''' Easy to hard, depends on what you work on
  
'''Description:''' When starting KMail for the first time (i.e. empty kmailrc configuration file), the column sizes for the message structure viewer are not good. The name column is too small, although it should be the largest. KMail should provide good default column sizes for the default window size.
+
'''Description:''' KMail is currently being ported to [http://api.kde.org/kdesupport-api/kdesupport-apidocs/akonadi/html/ Akonadi] and [http://api.kde.org/4.x-api/kdepimlibs-apidocs/kmime/html/index.html KMime]. This work currently takes place in SVN trunk. Once KMail is fully ported, it will be released as KMail 2, probably together with KDE 4.5.
  
=== Add an indicator to the composer's toolbar whether the mail is in plain text or HTML ===
+
That porting is a huge task, comparable to the KDE3 to KDE4 port of KMail (if not even more work). Therefore, any help with porting is greatly appreciated. There are still many unported places in the code which are commented out, or places with defects, or missing features. You'll know what I mean with this when you start KMail, you'll immediately notice those things. This is where you can help: Many of those are easy to fix and quite suitable for newcomers. (Side note: the current KMail maintainer started by helping in the KDE3 to KDE4 port, having no experience with KMail code before. I think the Akonadi port is a comparable effort, with quite some low-hanging fruit you can start on.)
  
'''Starting point:''' kmcomposewin.cpp
+
We are tracking bugs that are the result of the Akonadi port of KMail with the '''akonadi-ports-regression''' keyword. This would be a great place to start: Have a look at the bugs tagged with that keyword and help fixing them. Some of those bugs are huge and difficult tasks, while others are easier. You should probably try starting with the ones that have low priority, those are generally easier.
 +
You'll find the bug list with [https://bugs.kde.org/buglist.cgi?keywords=akonadi-ports-regression&resolution=--- this bugzilla query].
  
'''Difficulty:''' Easy
+
=== [http://bugs.kde.org/show_bug.cgi?id=156653 Bug 156653]: Changing the font size has no effect on the separate reader window  ===
  
'''Description:''' Currently, there is no easy way to see if a message will be sent as plain text or as HTML (+plain text). An indicator in the status bar would help here. Maybe the indicator should even be colored for a HTML message.
+
'''Starting point:''' kmreaderwin.cpp, kmreadermainwin.cpp
  
=== Move aggregation, theme and sorting options to the menubar ===
+
'''Difficulty:''' Medium
  
'''Starting point:''' kmmainwidget.cpp, messagelistview.cpp/core/widgetbase.cpp, configuredialog.cpp, kmmainwin.cpp/kmail_part.rc
+
'''Description:''' The font setting has no effect when using a fixed font, and when using the separate reader window. Your job is to fix the situation.
  
'''Difficulty:''' Medium
+
=== Preserve the image format for HTML inline images ===
  
'''Description:''' Currently, there are 3 little comboboxes next to the quick search dialog, that control the theme, aggregation and sort order. Experience has shown that people don't find it there. Your task is to clean this up a bit. Move the 3 little comboboxes to the menubar, as submenues of the ''View'' menu. Also, make those submenus available when right-clicking a header of the message list. Also, it would be nice to add settings to the configure dialog to change the default theme, aggregation and sort order.
+
'''Starting point:''' kdepimlibs/kpimtextedit/textedit.cpp
 
+
=== Unify options to enable or disable the tooltips in the folder and message list ===
+
 
+
'''Starting point:''' configuredialog.cpp, folderview.cpp, messagelistview/core/view.cpp
+
  
 
'''Difficulty:''' Medium
 
'''Difficulty:''' Medium
  
'''Description:''' The message list and the folder list both have tooltips that can be enabled or disabled. However, the options for this are not in the same places. The folder list tooltip can be disabled by right-clicking the header of the folder list, while the message list can only be disabled in the configure dialog. Your job is to unify this: add an option to disable the folder list tooltip to the configure dialog, and an option to disable the message list tooltip to the message list header context menu.
+
'''Description:''' Currently, when you use embedded HTML images with KMail, those images are always converted to PNG. This is very undesirable when adding photos as inline images, as those are much bigger as PNG.
  
=== Better handling of empty column titles in the message list ===
+
Have a look a textedit.cpp to see what KMail does: When attaching the image, it loads the image file into a QImage and adds that as a resource of the QTextDocument. It also replaces the file name suffix with ".png".
  
'''Starting point:''' messagelistview/core/themeeditor.cpp, messagelistview/core/view.cpp
+
Later, when sending the message, that QImage is saved into a QByteArray, saving it into "PNG" format.
  
'''Difficulty:''' Medium
+
To fix this problem, KMail should not change the file name suffix of the image, and later try to use the suffix as format for saving, falling back to PNG if Qt doesn't support saving into that image format.
  
'''Description:'''
+
Also, in case of JPEG images, it would be nice to remember the quality as well. QImageReader has to be used to get the quality value.
  
 +
MessageComposer::imageBodyPart() in kdepim/kmail/messagecomposer.cpp also needs to be fixed to work with other image types.
  
=== [http://bugs.kde.org/show_bug.cgi?id=187041 Bug 187041]: Folder filter persistent after restart ===
+
=== [http://bugs.kde.org/show_bug.cgi?id=89446 Bug 89446]: Convert more settings to [[Development/Tutorials/Using KConfig XT|KConfigXT]]  ===
  
'''Starting point:''' kmmainwidget.cpp
+
'''Starting point:''' kmail.kcfg
  
'''Difficulty:''' Easy
+
'''Difficulty:''' Easy (but possibly boring)
  
'''Description:'''
+
'''Description:''' KMail does many manual calls to readEntry() and writeEntry() for reading and saving configuration. These are error-prone and should be ported to the 'new' KConfigXT system, that is already used in some places (you'll notice the ''GlobalSettings'' class being used a lot).
  
 +
For a hint see http://websvn.kde.org/?view=rev&revision=1021989
  
=== [http://bugs.kde.org/show_bug.cgi?id=186803 Bug 186803]: Missing newline in folder tooltip ===
 
  
'''Starting point:''' folderview.cpp
 
  
'''Difficulty:''' Dead Easy (although you need an IMAP account with quota support to test the problem)
+
=== Update the tips of the day ===
  
'''Description:'''
+
''' Starting point:''' kmail/tips
 
+
 
+
=== [http://bugs.kde.org/show_bug.cgi?id=185069 Bug 185069]: After renaming a SMTP account, the identities are not updated ===
+
 
+
'''Starting point:''' configuredialog.cpp, identitydialog.cpp
+
 
+
'''Difficulty:''' Easy to Medium
+
 
+
'''Description:'''
+
 
+
 
+
=== [http://bugs.kde.org/show_bug.cgi?id=182581 Bug 182581]: KMail should warn when creating a filter without a filter action ===
+
 
+
'''Starting point:''' kmfilterdlg.cpp
+
 
+
'''Difficulty:''' Medium
+
 
+
'''Description:'''
+
 
+
 
+
=== [http://bugs.kde.org/show_bug.cgi?id=156653 Bug 156653]: Changing the font size has no effect on the separate reader window ===
+
 
+
'''Starting point:''' kmreaderwin.cpp, kmreadermainwin.cpp
+
 
+
'''Difficulty:''' Medium
+
 
+
'''Description:'''
+
 
+
 
+
=== [http://bugs.kde.org/show_bug.cgi?id=71945 Bug 71945]: Refresh IMAP cache even enabled when action can't be used ===
+
 
+
'''Starting point:''' kmmainwidget.cpp
+
  
 
'''Difficulty:''' Easy
 
'''Difficulty:''' Easy
  
'''Description:'''
+
'''Description:''' KMail can show a "tip of the day" on each start, or on demand from the Help menu. Those tips are outdated, and we don't have enough tips.
 
+
You should check that the tips are still correct, for example they could refer to the wrong UI elements.
 
+
=== [http://bugs.kde.org/show_bug.cgi?id=89446 Bug 89446]: Convert more settings to [[Development/Tutorials/Using_KConfig_XT|KConfigXT]] ===
+
 
+
'''Starting point:''' kmail.kcfg
+
 
+
'''Difficulty:''' Easy (but possibly boring)
+
  
'''Description:'''
+
Also, we need more tips, currently we have only 9 tips. Anything that is helpful to the user, like increasing productivity, and is not obvious can be added there.
 +
Some ideas for new tips:
 +
* The folder selection dialog that comes up when pressing ''J'' or ''M''
 +
* Theme and aggregations can be changed, and that those settings can even be done per folder.
 +
* The dictionary can be changed in the composer with View->Dictionary. Same for the identity.
 +
* Transports can be tied to identities in the identities dialog
 +
* The up and down arrow keys can be used to switch between the fields in the composer
 +
* ... Think of your own!

Latest revision as of 19:45, 5 September 2012

Contents

[edit] KMail Junior Jobs

On this page, you'll find small coding jobs for a beginner to work on. All these problems are relatively easy, some of them might even be one-liners. Of course, it is always a good idea to find your own thing to fix, the best motivation is scratching your own itch.

These tasks are intended for beginners with little or no experience programming with KDE. For those beginners, the biggest challenges are not actually the coding problems, but setting the development environment up, finding the correct place of code where the bug happens (in the jungle of all those source files) and interacting with the community, with the final step being sending the patch.

The knowledge prerequisite for those jobs are not that big. You should be familiar in C++, and knowing Qt a bit would help. Knowing kdelibs or KMail internals is not required, that can usually be picked up during coding.

For more general information, visit the following places:

  • KDE Techbase: Contains a lot of information about developing KDE, in particular a section on how to build KDE from source
  • KMail's HACKING file: Some KMail specific information.

The steps for your first coding contribution are roughly like this:

  1. Build KDE trunk from sources, including KDEPIM
  2. Set up your development environment, i.e. your editor or IDE
  3. Pick something to work on, like some of the things suggested below
  4. Start coding and fix the problem!
  5. Send in a patch (We prefer reviewboard)

Should you need help, feel free to ask us in the #kontact IRC channel, or mail either Thomas McGuire (the KMail maintainer) or the kde-pim mailing list.

Use the KDE commitfilter to subscribe to kdepim and kdepimlibs commits, you will learn a lot from other's commits.

If you find some information missing, feel free to add it to this page after you learn it.

Below follows a list of junior jobs. It always includes a rough location where in the KMail sources to start.

noframe
 
Warning
At this point, KMail 1 is completely frozen. KMail 1 is the version that is shipped with KDE 4.4.x and earlier versions.

Right now, we are working on KMail 2. KMail 2 is the KMail that is based on Akonadi.

Only bugfixes for KMail 1 are still allowed, but no new features or any refactoring.

A good way to contribute would be to help with KMail 2, see first entry below.


[edit] Help making KMail 2 ready

Difficulty: Easy to hard, depends on what you work on

Description: KMail is currently being ported to Akonadi and KMime. This work currently takes place in SVN trunk. Once KMail is fully ported, it will be released as KMail 2, probably together with KDE 4.5.

That porting is a huge task, comparable to the KDE3 to KDE4 port of KMail (if not even more work). Therefore, any help with porting is greatly appreciated. There are still many unported places in the code which are commented out, or places with defects, or missing features. You'll know what I mean with this when you start KMail, you'll immediately notice those things. This is where you can help: Many of those are easy to fix and quite suitable for newcomers. (Side note: the current KMail maintainer started by helping in the KDE3 to KDE4 port, having no experience with KMail code before. I think the Akonadi port is a comparable effort, with quite some low-hanging fruit you can start on.)

We are tracking bugs that are the result of the Akonadi port of KMail with the akonadi-ports-regression keyword. This would be a great place to start: Have a look at the bugs tagged with that keyword and help fixing them. Some of those bugs are huge and difficult tasks, while others are easier. You should probably try starting with the ones that have low priority, those are generally easier. You'll find the bug list with this bugzilla query.

[edit] Bug 156653: Changing the font size has no effect on the separate reader window

Starting point: kmreaderwin.cpp, kmreadermainwin.cpp

Difficulty: Medium

Description: The font setting has no effect when using a fixed font, and when using the separate reader window. Your job is to fix the situation.

[edit] Preserve the image format for HTML inline images

Starting point: kdepimlibs/kpimtextedit/textedit.cpp

Difficulty: Medium

Description: Currently, when you use embedded HTML images with KMail, those images are always converted to PNG. This is very undesirable when adding photos as inline images, as those are much bigger as PNG.

Have a look a textedit.cpp to see what KMail does: When attaching the image, it loads the image file into a QImage and adds that as a resource of the QTextDocument. It also replaces the file name suffix with ".png".

Later, when sending the message, that QImage is saved into a QByteArray, saving it into "PNG" format.

To fix this problem, KMail should not change the file name suffix of the image, and later try to use the suffix as format for saving, falling back to PNG if Qt doesn't support saving into that image format.

Also, in case of JPEG images, it would be nice to remember the quality as well. QImageReader has to be used to get the quality value.

MessageComposer::imageBodyPart() in kdepim/kmail/messagecomposer.cpp also needs to be fixed to work with other image types.

[edit] Bug 89446: Convert more settings to KConfigXT

Starting point: kmail.kcfg

Difficulty: Easy (but possibly boring)

Description: KMail does many manual calls to readEntry() and writeEntry() for reading and saving configuration. These are error-prone and should be ported to the 'new' KConfigXT system, that is already used in some places (you'll notice the GlobalSettings class being used a lot).

For a hint see http://websvn.kde.org/?view=rev&revision=1021989


[edit] Update the tips of the day

Starting point: kmail/tips

Difficulty: Easy

Description: KMail can show a "tip of the day" on each start, or on demand from the Help menu. Those tips are outdated, and we don't have enough tips. You should check that the tips are still correct, for example they could refer to the wrong UI elements.

Also, we need more tips, currently we have only 9 tips. Anything that is helpful to the user, like increasing productivity, and is not obvious can be added there. Some ideas for new tips:

  • The folder selection dialog that comes up when pressing J or M
  • Theme and aggregations can be changed, and that those settings can even be done per folder.
  • The dictionary can be changed in the composer with View->Dictionary. Same for the identity.
  • Transports can be tied to identities in the identities dialog
  • The up and down arrow keys can be used to switch between the fields in the composer
  • ... Think of your own!

This page was last modified on 5 September 2012, at 19:45. This page has been accessed 22,517 times. Content is available under Creative Commons License SA 3.0 as well as the GNU Free Documentation License 1.2.
KDE® and the K Desktop Environment® logo are registered trademarks of KDE e.V.Legal