“Season of KDE 2006″ Begins

The KDE e.V. sent me a message told me that I will continue my working on KNotes in “Season of KDE 2006″. Michael Blade told they were planing such a kind of thing several weeks ago, now it’s finally announced.

This year KDE has participated in Google Summer of Code program. You were one of the candidates who had sent their proposals to Google under KDE’s mentorship.Google does only support a small selection of the project proposals mentored by KDE. Sadly, your application was not selected in this process.

However, we think that your project proposal was very interesting and had potential to become an important part of the KDE development. Thus, we offer to mentor you without the help of Google in the “Season of KDE 2006” .

We do not have the same financial means like Google does. Thus, we cannot promise you a “reward” for a successful completion of your project. We will, however, try our best to gather sponsors for this event to be able to invite you to this year’s akademy – the annual KDE conference – at Dublin. If nothing else, the Season of KDE 2006 will be a brilliant opportunity for you to become a part of the KDE community while being mentored by an experienced KDE developer that is open for all your questions.

What is out of my expect is there may be no T-shirt but a chance to take part in “aKademy 2006″! Oh, goddness me… Let me calm down for a while…

By the way, I found there are two Chinese person’s project was accepted in KDE Projects of “Google Summer of Code 2006″ : Commenting tools for KPDF by Xiaodong Chu, and QQ – A new protocol for Kopete by Hui Jin.

Advice from mailing list

Today is timeline of approved list show. After wishing me good luck, I wrote down these last effort I made. If I failed, this maybe the last post about SoC. And I will send these data to the people who in charge of the knotes improvement project.
But I am still eagar to get this project, so WISH ME GOOD LUCK^_^

I send a survey to kde-linux and kdepim-user yesterday in order to find users thoughts of knotes’ categories.

Thanks to Grahma Cobb in kdepim-user. He not only give me useful suggest on categories, but also spent time on correcting my English. That’s very kind of him. I am appreciate him.
Cobb says he didn’t mind only one level category, and not mind no “new”/”delete” button. He suggested a very useful feature: filter for categories. He wrote:

I think the most important feature, however, is to be able to filter the notes view by category. For example, in Outlook I have notes which I want to keep but which I don’t want to clutter up the view normally. I have a category called “Obsolete” which I assign to the notes I don’t want to see and my normal default view only displays notes which do not have the Obsolete category.

I am thinking over this. This is a very useful feature I believe, but not clear in details. For example, how to show all notes? KNotes didn’t provide another view of notes. Maybe Kontact can help. Or you must change filter every time. But it’s really a good idea. I am willing to implement it.

Thanks to Jim Philips in kde-linux.
He suggested that KNotes/Kontact can be associated with GTD, a influential time management technique
formalized by David Allen. Last year, there is a SoC KDE project called GTD,
targeted on “make Kontact much more efficient and comfortable as “the system you can trust””. And he provide MonkeyGTD as a example for GTD Application. I also found some articles on GTD, which is very helpful for understanding.

General design of knotes improvement

I have just finished my midterm exams, so I didn’t update blog for several days. But I am continue working on knotes in my spare time.
Now I have basicly completed the knotes code’s analyzing.

The improvement will effect following class at least:

  • KNote: Add a item or something other to choose categories.
  • KNotesApp: Improve the implement of note list(KNotesApp::updateNoteActions, NotesApp::m_noteActions, etc.). It seems that a big changed using KXMLGUIClient is needed for implement tree. Also a new initialization for single note is needed.
  • Because categories should be managed, a new config dialog is needed., or we can add a option to KNotesGlobalConfig (knotesglobalConfig.kcfg) .
  • Are the different default settings needed in different categories? Considerable.
  • I am planning to carry out the improvement in the following way:
    1. Left click on the icon will generate a menu with sub menues(categories). In fact, one note can be displayed under different sub menues.
    2. When right click on the icon, you can find a way to manage all categories, like rename. I don’t think the new and delete action is needed here. Because I preferred( so did my mentor ) Method B, which means if there is no note with this tag, the tag won’t exist. I don’t know if it is properly, and if it is can be accepted by most people. But I know the idea of tag is very popular with web2.0 like delicious. At least, I think this method has very good flexibility.
    3. When you editing a note, you can setting its tags by right click on the title or something other. The exist tags will be provided to choose, you can also create a tag.

    I have send a survey to mailinglist(kdepim-user and kde-linux). I want to know if tags-style can be accepted.

    The other thing is about knotes in kontact. I skimmed the source code, and it is seems another story… I am planning to add something like QListWidget for users to choose categories.

    Some Thought on KNotes Catagory

    KNotes uses KCal::Journal(which provides a Journal in the sense of RFC2445) to save info. After read RFC2445,I found Journal has some good properties to meet our demands, like “categories”
    or “related”. These two property also can occur more than once. That’s perfect.

    I summed up the main threads of bug#41341 discussion as following:

  • 1. Taking category as some kind of note, which reduce the amount of change.
  • 2. Using drag and drop to operate the entries(consider later).
  • I don’t quite agree take category as a note. The most inportant meaning of doing so is that it reduce the change, because some function like “New” or “Rename” can be reused.
    But I don’t think so. In fact, I found the functions can be reused may be only “New” ,”Rename”. Surely many function can be override, but many other function like “Delete” will be changed a lot.

    Another question is if it is necessary to set up a “ROOT” note as the parent of all notes and categories? Otherwise if you delete a category note and want to save the notes, how can you use same function move these notes to root or to another category? It’s certain that a if can work, but I don’t like it… But if a ROOT note must be added, there will be a extra work on upgrade.

    After thinking over the serveral method, I found the focus is on “How to store category information”. There are serveral ways:

    Method A:
    Using category node. Store related information in parent using property “related”.
    Advantage:

  • 1. Some functions can be reused.
  • 2. The structure of logic is very clear.
  • 3. Advanced in the efficiency of most operations.
  • Disadvantage:

  • 1. Is that a ROOT note needed?
  • 2. In my opinion, most functions must be rewrited all the same.
  • 3. In any case, category is not a note. And no class fit for inherit. Strange feeling…
  • Method B:
    Store related information in notes using property “categories”. In fact, no catagory instance exists.
    Advantage:

  • 1. The operation of single note is very easy to implement.
  • 2. The operation of catagory is easy to implement, but low efficiency.
  • Disadvantage:

  • 1. Maybe a lot of work needed.
  • 2. Not clear structure of logic.
  • 3. Low efficiency(at most o(m*n) in searching).
  • 4. Difficult to implement more than one levels.
  • 5. Can’t keep the sort.
  • More:
    Because there aren’t many notes to deal with, I don’t think the efficiency is very important here.

    Method B+:
    On the basis of Method B, add temperory catagories instance to assist.
    Advantage:

  • 1. High efficiency.
  • 2. Clear structure of logic.
  • Disadvantage:
    How to implement, seems a little complex… Maybe counteract the advantage of Method B.

    Method C:
    Bring in catagory instance.
    Advantage:

  • 1. Very clear structure of logic.
  • 2. High efficiency.
  • Disadvantage:
    How to implement….

    The four method below is my initial ideas. Please tell me your opinion.
    These days I will continue study the source code and method of developing kdepim.

    Setting up timeline for soc project

    May 10th: Completed the resume and send it here as a page. Done
    May 12th: Completed the detail version of CV.Maybe not needed, so delay it
    The following week(week of exams): Describle the details of my opition on the project.
    After exams, more will be done before May 22……

    Apply for Google Summer of Code 2006

    I heard about Google Summer of Code 2006 last month. After scaning the ideas, I feel terrible, for it seems too difficult for me to solve any of them. Although I have spend more than ten years on programming, my improvement is so limited that I cannot claim that I am an experienced programmer. However, it is the my learning skills,which enabled me to keep pace with the rapid software development,that strengthen my confidence to solve a large number of problems in the learning process. I believe that I am a bright and passionate learner , and dedicate myself to the practise of programming. Nevertheless, destiny always avoid me to achieve my goals—for example,I was defeated in NOI five years ago,and then missed three chances of attending the Department of Computer Science & Technology so that I have to fight alone in my campus life, which is the best period to improve myself.

    There is no deny that I donot satisfy my ability now and eager to have greater advancement. Unfortunately, I doubt if I can successfully apply for a soc project before last night. But I decided to have a try at last when an idea striked my mind that it is surely that no result if you don’t try, isn’t it?

    I have applied for “KNotes Improvement” in KDE projects,which is very similar with a toy of mine. In addition,this project request a catalog function, which I would like to carry out by using tags that I wrote to organize the information—-what is my incipient design.

    Last night, I almost failed to submit application. When I decided to apply, I found that the timeline of proposals due by 16:00 Pacific Daylight Time May 8th(now update to 11:00 Pacific Daylight Time May 9…) and the school network would be down in 2 hours . Futhermore, I was shocked because I had not prepared anything yet. Two hours later, I was exhausted, but submitted my application successfully, just 8 minutes before network down.

    That is why the application I submitted last night is full of errors. (I even mistakenly turned GMT for UTF … )I will try my best to finish the task if I get it. Bad beginning, but ending must be fine. The more work will be done in the following days, for instance,I have to set up a page for soc, use a better way to express my idea, read source code, contact the KNotes developer, and so forth.

    Although there are four exams in this week, I will do my endeavor to win the task.