Thursday, December 30, 2010

WebKitGtk+ Hackfest 2010

WebKitGTK+ hackfest, day 0
(c) 2010 Diegoe
I attended the WebKitGtk+ Hackfest held in the Igalia Office, located in Coruña, Spain, in this month. It was a great opportunity for me to meet the WebKitGtk+maintainers directly. This hackfest was sponsored by Collabora and Igalia. The Igalia office was very nice; it can be compared to the Google office in terms of the atmosphere. There were free snacks, beverage and game consoles in the office. Moreover, we had buffet lunch everyday. I'd like to give thanks to Collabora and Igalia for sponsoring the hackfest and the GNOME foundation for sponsoring my trip to Coruña.

During the hackfest, we concentrated on hacking WebKitGtk+ to fix bugs and implement new features, only stopping to sleep and eat . Of course , we also made time for a city tour in Courña for a quater of a day.

Gtk+ and libSoup maintainers also attended the hackfest to support WebKitGtk+ maintainers, because WebKitGtk+ depends on those libraries. Moreover, embracing Gtk+3 needs Gtk+ maintainers' help to keep the pace with Gtk+3 changes. Also, an Epiphany browser maintainer also joined the hackfest to fix Epiphany bugs together with the WebKitGtk+ maintainers.

WebKitGTK+ 2010 Hackfest
(CC) 2010 Mario
On the first day, we listed up all work items on the chalkboard (as you can see in the above picture). When we finished each item, we rewarded ourselves with Super Mario BGM. :-) You can see the performance video as follows:

Martin finished a task! YEAH! from diegoe on Vimeo.

During the hackfest, I worked on viewport meta tags support and some missing features in the DRT test  in WebKitGtk+. In addition, I improved the webkit cache model feature. In particular, I was pleased to finish the viewport meta tags patch. Actually, it might have been impossible without the maintainers' help: Kov, Martin, and Xan reviewed my patch carefully and improved it, so I'd like to thank them again. I'll explain the details of the viewport meta tags support later.

After the hackfest, I felt like I was a member of the WebKitGtk+ development team. In the future, I will try to contribute more patches to WebKitGtk+.
You can also find this blogging in Korean version. :-)

Happy New Year and Thanks again for reading!




Sunday, November 14, 2010

My favorite hiking course in Seoul

Have you heard about Jeju Olle-gil (제주 올레길)[1] or Jirisan Dulle-gil(지리산 둘레길)? They are famous trails in Korea to hike in the rural areas to enjoy natural things. In particular, due to the success of Jeju Olle-gil, each provincial government is introducing new hiking courses to attract tourists. Actually, anyone can make their own hiking course, but many people don't know. In my case, I have one in Seoul. Therefore, I would like to introduce my hiking course in this blog.

It has been 7~8 years since I started to hike this way. I have hiked this way with some of my friends. Most of them have been satisfied with my course , because it offers a good view of Gyeongbok-Geung (Palace) and historical sites. Also, there are good cafes, restaurants, and museums, parks around this course, even including two mountains.

This course starts from Sajik park near Gyeongbok-gong station on Seoul Subway Line 3. The overall course is as follows:

Sajik Park(사직공원) => Inwang-san(인왕산) => Bukak-san(북악산) => Samcheong-dong gil(삼청동길) => Insa-dong(인사동)

This is just my own personal course, so you can make your own course depending on your preference or time allowance. Now, let's take a look at each point.

The start point is Sajik Park, which is not a famous place now, but it was an important area in the Joseon dynasty. The purpose of Sajik Park was to hold a memorial ceremony for the ground and the five grains(rice, millet, beans, wheat and barnyard millet) ,which is the basis of stabilizing the dynasty. However, the Japanese Empire tore down the annexes and made this area into the park that it is today.

The next point is Inwang-san, which doesn't seems high, but it's covered with rocks, so you need to wear hiking boots. When you go up to the Inwang-san peak, you can see a complete view of Seoul including Seoul Tower and every mountain surrounding Seoul, even Incheon Airport if the weather is very clear. Also, there is a sad historic episode about an empress of the Joseon dynasty which is connected with Inwang-san. Her name was Empress Inhyeon(인현왕후)[2], a wife of SukJong (the 19th Emperor of the Joseon dynasty). She lost her position of empress due to strife. And then, she went to the peak of Inwang-san wearing white clothes and made a deep bow in the direction of the King every morning for 3(?) years. Fortunately, she became the empress again, but she died soon after without having had any children.


Before moving to the next point, you can have a break time in the cafe between Inwang-san and the entrance of Bukaksan near Changeui-mun(창의문). This cafe offers various types of coffee produced from famous areas of coffee bean production[5]. It would be as good as taking a break and talking with your friends.

If you want to go to the top of Bukaksan[3], you should prepare your resident registration card , driver's license or passport (if you are a foreigner) due to the security of the Blue House. Actually, Bukaksan was not allowed to be entered for a long time since guerrillas from North Korea attempted to raid the Blue House to kill President Park JeongHee in 1969. As a result, the road to the mountain was closed for about 38 years. For this reason, development of this area has been limited for a long time. Therefore, you may doubt if you are in Seoul during your hike up to the top of Bukaksan, because you can only see green mountains and many detached houses.

Actually, Seoul was not always such a big city like this, it used to be a fortress capital city during the Joseon dynasty. Therefore, you can still find several gates in Jong-ro district. Unfortunately, many parts of the city wall and some gates were destroyed in the Japanese occupation and the Korean war. Some parts of the city wall are left on Inwang-san and Bukaksan. In addition, you can find a secret gate over the top of Bukaksan. It is called "Sukjeong-mun(숙정문)".

There are two ways from Sukjeong-mun. One is for Seongbuk-dong gil, the other is Samcheong-dong gil. Now, I’d like to introduce the Samcheong-dong gil course, because it is close to Insandong-gil. However, if you take the direction of Samcheong-dong gil, it takes more time to hike down the mountain, so you can enjoy hiking more in the forest of Bukaksan.

Samcheong-dong gil is one of the most beautiful streets in Seoul. There are many art shops, art galleries, cafes, museums, and restaurants. Actually, this area is a bit expensive, but the atmosphere and quality of food actually are quite good, so it would be a good choice for a nice meal with your closest friends. Before introducing some of them, I wonder whether you have heard about a Korean proverb, “금강산도 식후경”. It means that eating comes first in any situation so it would be good to drop by a restaurant first.

Most of the restaurants here are a bit expensive and for special occasions, but Samcheong-dong Sujebi[6] is cheap and simple. According to Wikipedia, “Sujebi is a Korean traditional soup consisting of dough flakes roughly torn by hand, with various vegetables”. It also tells that Korean people began to eat Sujebi from early Goryo period, but my grandmother told me that Sujebi became common during the Korean war due to the significant rice shortage. At that time, the U.S. army gave wheat flour to Korean people as a form of food assistance. Many Koreans reluctantly had to have flour-based foods including Sujebi (because rice is the staple food of the Korean people). Due to this reason, it is very hard to find Sujebi restaurants these days. Anyway, this restaurant seems to be as old as Sujebi. Nevertheless, some bloggers complain the taste was not as good as it was once, but it is still one of the Korean dishes you must taste.

After the meal, looking around the shops in Samcheong-dong is also good, in particular for women. If you have enough time, I recommend that you visit the Owl Museum[7] and the Tibet Museum[8]. Those museums are very unique because they are managed by private owners, so you can feel a different atmosphere compared to public museums.

The owl museum only specializes in owls, so you can find paintings, craftworks, and toys about owls. In the case of the Tibet museum, there are various things about Buddhist art, folkcrafts, clothes, photos and so on about Tibet. Although Tibet has been occupied by China since 1950, we are still able to see their unique culture. Before visiting those museums, you need to check up locations because both museums are located in side streets. Also, you have to make sure that the museums are open when you want to go.

The last point on my course is Insa-dong gil. Actually, Insa-dong gil is too famous to introduce here. Therefore, I would only like to introduce a traditional Korean teahouse in Insa-dong. As you know, Insadong-gil is famous for its traditional teahouses. Unfortunately, traditional alcohol pubs are increasing these days. Therefore, finding real traditional teahouses is getting harder in Insa-dong.



The above picture shows the interior of a teahouse I found by chance. Actually, I tried to find Kyungin Art Gallery because the gallery also offers Korean tea. Instead, I found a neat teahouse because I took a wrong side street. The teahouse is a real Hanok (Korean traditional house) and offers all kinds of equipment such as pottery and trays. In addition, the hostess is very kind so you can feel like being not a customer but a guest in this house.

In conclusion, making your own hiking course is not difficult. Just try to remember what streets, cafes, and restaurants you’ve preferred, and link all points with some stories such as historical episodes or your memories. And then if you share the course with your friends, your course will be rich with even more stories and attractions.

References

[1] Welcome to Jeju Olle website, http://www.jejuolle.org:8080/eng/
[2] Empress Inhyeon(인현왕후), http://bit.ly/9FsgLk
[3] Welcome to Bukaksan, http://www.bukak.or.kr
[4] Seoul’s best walking trails http://www.koreaherald.com/lifestyle/Detail.jsp?newsMLId=20100624000575
[5] Club Espresso http://place.daum.net/place/Top.do?confirmid=9544927
[6] Sujebi, http://en.wikipedia.org/wiki/Sujebi
[7] The owl museum http://www.owlmuseum.co.kr/
[8] The Tibet museum http://en.wikipedia.org/wiki/Tibet_Museum_(South_Korea)

Tuesday, October 12, 2010

Why I participate in open source project

It's already been almost 4 months since I started a new career as an open source developer. Before starting my new career, I had worked for a big electronics company and worked on open source projects such as Mozilla, Gtk+, WebKit project since 2007. The job was stable and salary was also good. However, I decided to quit my job and started to get involved in the projects as a contributor. So, I'd like to introduce why open source is important for developers and the reasons why I participate in open source projects.

What is open source?
Open source is a method of developing software. According to Wikipedia, "Open source describes practices in production and development that promote access to the end product's source materials". It means that anyone can access the source code of open source software. In addition, it should allow anyone to modify the source code and distribute it to anyone. Linux and Firefox are representative results of open source. Therefore, if you find some problems and have any proposals, you can modify the source code and submit the code to the maintainers. If your code makes sense, it could be merged into the open source software. If so, many people could use the software you contributed. Isn't this amazing ?

Why people start open source projects
There are various reasons why people start open source projects. Most of these projects don't have a big plan. They just start the project for meeting their needs. Some people start their projects just for fun. For example, Linus Tovalds, the creator of Linux kernel, just started Linux kernel project for fun during a long winter vacation when he was a university student. Of course, there was a small motivation. The Unix workstation machine was very expensive, so he had to go to the university to use it. Therefore, he wanted a Unix-compatible operating system to be run on his own 386 PC. After that, many people joined his small project. Currently, Linux kernel has been used for running digital TVs, Android phones, and other embedded devices. Although there are some open source projects that are started by companies for strategic reasons, most open source projects are started for trivial reasons.

Why developers should join open source projects
First, you can improve your development skills in terms of reading the code and getting reviewed by other open source developers. In the case of Linux kernel, it supports various types of computer architecture, and the source code has been highly optimized for a long time. In addition, many open source software have been verified in terms of being included in commercial software.
Second, you can learn the latest high technology, because open source projects are always open for new technology. So, anyone can improve the funtionalities of open source software and suggest new features. In my case, I fixed Korean Hangul typing problem in WebKit, a browser engine, used for Safari and Chrome browser.
Third, you can experience development process of software product because the big open source products: Linux kernel, Firefox, and OpenOffice, have a similar life cycle and organization like commercial software such as Microsoft Windows and Office. For instance, an open source project also requires individuals in various roles such as developer, tester, graphic designer, technical evangelist , educator and so on. In addition, most decisions about the project makes through mailing list, or IRC. If you have contributed for many years and have a good reputation, you can have a bigger say in the project. Finally, you can make friends with open source people from all over the world. There are various nationalities and ethnicities in the community. Some people are students, some are older. Nevertheless, they can share their thoughts and ideas for the same goal. For the above reasons, I strongly recommend that you participate in the open source projects even if you are not a software programmer.

Why I participate in open source projects.
Actually, I am an experienced programmer. I have more than 12 years of software development experience. However, I just spent my most of my development career for working on proprietary software. Fortunately, I met good open source people in the open source community and learned how to be involved in open source projects. In addition, I was able to work on open source software and had the chance to work together with the community in my previous company. It was a valuable experience because I learned how to write good quality software in terms of code review and code reading. Also, I could contribute my abilities and effort to open source projects for the public interest.

Currently, I am working on the WebKit, GNOME, Mozilla projects as a full-time open source developer. Although I am not making money working on these projects, I'm enjoying the life of  an open source developer for the time being . Of course, there are ways of making money working on open source projects. In the future, when I have more experience with open source development, I will try to start my own open source project just for fun.

Saturday, August 07, 2010

Building Chromium browser on your Mac

Copyright © Chromium Project
Building your own browser is the best way to find bugs and fix them. Now, I'd like to introduce how to build Chromium on your mac. I think that the latest code seems more stable(?) and provides more features.

This is a starting point to build Chromium on Mac OS X.
http://code.google.com/p/chromium/wiki/MacBuildInstructions

Installing the depot-tools

http://dev.chromium.org/developers/how-tos/install-gclient

$ svn co http://src.chromium.org/svn/trunk/tools/depot_tools

Add depot_tools to your PATH:
$ export PATH=`pwd`/depot_tools:"$PATH"

Getting the code

A checkout straight from the Subversion (SVN) repository can take a long time. It would be good to download a tar ball from http://build.chromium.org/buildbot/archives/chromium_tarball.html

Then, you can update the code to the latest revision from the SVN repository.
$ gclient sync

Building from the command line

To build all targets (it takes a long time due to test case builds)
$ cd ~/chromium/src/build
$ xcodebuild -project all.xcodeproj -configuration Debug -target All

To build just chrome:
$ cd ~/chromium/src/chrome
$ xcodebuild -project chrome.xcodeproj -configuration Debug -target chrome

Running Chromium

Run Chromium debug build
$ cd ~/chromium/src/xcodebuild/Debug
$ open ./Chromium.app

Run Chromium release build
$ cd ~/chromium/src/xcodebuild/Release
$ open ./Chromium.app

The latest revision of Chromium looks cool.



Wednesday, August 04, 2010

Feedbacks from the communities on the key events handling in WebKit

I posted an email to the WebKit mailing list on the issue I mentioned in the previous blog.The email introduced a status of the inconsistent event handling during a IME composition on WebKit. Fortunately, I've got quick feedbacks from the communities on each issue as follows,

Issue1) IME Composition events should be handled consistently in all ports of WebKit.
=> "This can't be achieved as it depends on the platform IME system. Therefore, different IMEs making consistent behaviors across multiple platforms is an exercise in futility. However, If we are seeing different behaviour with the same IME on a single platform, that's a bug."

Issue2) The textInput event should be dispatched after a compositionend event.
=> "There's a discussion on www-dom at w3.org about changing the spec because there seems a issue of handling a textInput event. Currently, before the textInput event is dispatched, DOM has been already mutated during a composition. Therefore, If there is to be a textInput event, first, the composition text is removed. And then, if the textEvent is not cancelled, the browser inserts the composition text again. It seems not efficient."

Issue3) While a composition session is active, keyboard events should not be dispatched to the DOM.
=> In relation to keyboard events, WebKit has fired key events during a composition for a long time. Therefore, It can't stop to fire key events in order to avoid site break.

As a result, they agreed that the DOM Level 3 event model for input composition does not match the requirements of actual web content as I have worried. Therefore, in order to avoid the confusion among web developers, the DOM Level3 events spec needs to introduce the reason why each browser handles keyboard events in different ways.

Monday, July 26, 2010

IME composition events are handled inconsistently in WebKit

I have been working on Korean Hangul composition issue in WebKitGtk. By the way, I've noticed that IME Composition events are handled inconsistently in each WebKit port.

According to W3C DOM Level 3 events,
1) A browser should fire compositionstart, compositionupdate, and compositionend event during a composition.
2) The textEvent event should be dispatched after a compositionend event if the composition has not been canceled.
3) While a composition session is active, keyboard events should not be dispatched to the DOM (i.e., the text composition system "swallows" the keyboard events), and only compositionupdate events may be dispatched to indicate the composition process.

However, all WebKit ports handle composition & textEvent events in inconsistent ways. Even keyboard events are still dispatched to the DOM during a composition.

Therefore, it is necessary to fix the problems as follows:
1) IME Composition events should be handled consistently in all WebKit ports.
2) Keyboard events should not be dispatched during a composition.
3) The textInput event should be dispatched after a compositionend event.

The following table shows the status of DOM events of WebKit during a Hangul(Korean Alphabet) composition.
Korean Hangul Composition Event Test in WebKit based browsers
You can find a test case from here.
I filed a bug for this issue in WebKit Bugzilla.