<?xml version="1.0" encoding="utf-8"?>
<?xml-stylesheet href="http://blogs.forum.nokia.com/styles/rss.css" type="text/css"?>
<rss version="2.0" 
	xmlns:content="http://purl.org/rss/1.0/modules/content/"
	xmlns:dc="http://purl.org/dc/elements/1.1/"
	xmlns:itunes="http://www.itunes.com/dtds/podcast-1.0.dtd"
>
 <channel>
  <title>Harry Li&#039;s Forum Nokia Blog</title>
  <link>http://blogs.forum.nokia.com/blog/harry-lis-forum-nokia-blog</link>
  <description>A Forum Nokia Blog</description>
  <pubDate>Tue, 24 Nov 2009 01:47:38 +0200</pubDate>
  <generator>http://www.lifetype.net</generator>
  <itunes:author>Forum Nokia</itunes:author>
  <itunes:category text="Technology">
    <itunes:category text="Tech News"/>
  </itunes:category>
  <itunes:image href="http://www.forum.nokia.com/piazza/blogs/imgs/forum_nokia_rss_logo.jpg"/>
    <item>
   <title>Batch testing in Symbian C++</title>
   <description>
    &lt;p&gt;
Hello folks, it&#039;s really a long time since my last post. Because of the busy schedule of my own company&#039;s project, I&#039;m actually away from the Mozilla platform porting effort for a while. So it&#039;s a bit embarrased to carry out fresh experiences to share with you at this moment. However I will try to demostrate a testing trick which I learned from NSS (Network Security Service) testing section. 
&lt;/p&gt;
&lt;p&gt;
Probably all Unix gurus like the powerful shell script, and it is commonly used for testing purpose. In NSS the test cases are all called by several complex shell scripts, and there is a very flexibility to extend usage of these tests caller scripts. Unluckily we don&#039;t have a shell script executing environment on Symbian OS. But I was borrowing ideas of this testing method, by writing a console application and treat it as the main body to coordinate all test cases. 
&lt;/p&gt;
&lt;p&gt;
Here are some notes:
&lt;/p&gt;
&lt;ul&gt;
	&lt;li&gt;We use a config file to tell the tests caller which executables we want to call, their executable image names, the calling arguments, and expected return code.&amp;nbsp;&lt;/li&gt;
	&lt;li&gt;There is a log file to log all activities about test cases calling time and return value status. &lt;/li&gt;
	&lt;li&gt;Frequently adjusted variables are defined at header as MACROs, like log file name and storage path. Please note STDIO_FILE macro should be defined the same as the standard output file in your C:\System\Data\config.ini&lt;/li&gt;
	&lt;li&gt;You could control test cases running mode, by add either pause before run every test or pause after every test case or both. &lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;
I hope this trick will help you on porting massive test cases project onto Symbian OS. And also if you have any comment on this, please feel free to send your comment. 
&lt;/p&gt;
&lt;p&gt;
&lt;a href=&quot;http://blogs.forum.nokia.com/blog/harry-lis-forum-nokia-blog/resource/general/run_tests_symbian.cpp&quot; target=&quot;_blank&quot;&gt;
Attachment 1 : source file, run_tests_symbian.cpp&lt;/a&gt;&lt;br /&gt;
&lt;a href=&quot;http://blogs.forum.nokia.com/blog/harry-lis-forum-nokia-blog/resource/general/tests.cfg&quot; target=&quot;_blank&quot;&gt;Attachment 2 : example config file, tests.cfg&lt;/a&gt;
&lt;/p&gt;
&lt;p&gt;
Cheers~ :p&lt;br /&gt;
&lt;br /&gt;
&lt;/p&gt;
   </description>
   <link>http://blogs.forum.nokia.com/blog/harry-lis-forum-nokia-blog/2008/09/15/batch-testing-in-symbian-c</link>
   <comments>http://blogs.forum.nokia.com/blog/harry-lis-forum-nokia-blog/2008/09/15/batch-testing-in-symbian-c</comments>
   <guid>http://blogs.forum.nokia.com/blog/harry-lis-forum-nokia-blog/2008/09/15/batch-testing-in-symbian-c</guid>
      <dc:creator>kcomex</dc:creator>
      
    <category>Symbian C++</category>
      
    <category>Mozilla</category>
         <pubDate>Mon, 15 Sep 2008 14:39:50 +0800</pubDate>
   <itunes:author>Forum Nokia</itunes:author>
   <itunes:subtitle>Batch testing in Symbian C++</itunes:subtitle>
   <source url="http://blogs.forum.nokia.com/rss.php?blogId=300055&amp;profile=rss20">Harry Li&#039;s Forum Nokia Blog</source>
     </item>
    <item>
   <title>Finishing the immigration to GNU make</title>
   <description>
    &lt;p&gt;During last couple of weeks, I made the immigration of building&amp;nbsp;&lt;a href=&quot;http://wiki.mozilla.org/Mobile/Symbian/NSPR&quot; target=&quot;_blank&quot;&gt;Mozilla NSPR component&lt;/a&gt;&amp;nbsp;with Carbide.C++ (still based on makemake and friends Perl scripts) to GNU make and autoconf friends. Here I will share some points I learned in this process.&lt;/p&gt;&lt;p&gt;First of all, if your open source project uses a lot of &lt;a href=&quot;http://www.symbian.com/developer/techlib/v9.1docs/doc_source/guide/N1001E/StaticData.html#idioms.staticdata&quot; target=&quot;_blank&quot;&gt;Writable Static Data&lt;/a&gt;&amp;nbsp;(WSD),&amp;nbsp;in theory even only one single variable,&amp;nbsp;and they are used in dynamically linked library (DLL) target type, then your only choice is buying a&amp;nbsp;&lt;a href=&quot;http://www.arm.com/products/DevTools/RealViewSoftwareDevelopment.html&quot; target=&quot;_blank&quot;&gt;RVCT compiler&lt;/a&gt;. Because GCCE compiler which ships with the S60 SDK has a defect that can not build a working DLL binary if there is WSD in it. This&amp;nbsp;&lt;a href=&quot;http://www3.symbian.com/faq.nsf/AllByDate/B8542F039C193CCC802573DA0011DFA7&quot; target=&quot;_blank&quot;&gt;known bug&lt;/a&gt;&amp;nbsp;is documented by Symbian already. Though in the document Symbian stated the problem is solved in a later GCCE release possibly, yet I had tried&amp;nbsp;&lt;a href=&quot;http://www.codesourcery.com/gnu_toolchains/arm/portal/subscription3058&quot; target=&quot;_blank&quot;&gt;all GCCE releases&lt;/a&gt;&amp;nbsp;which is later than 2005Q1C, then found some of them will generate an internal compiler error and some of them build the same defective binary almost the same as 2005Q1C. So I think I could give you the advice : try only GCCE compiler tools if it is shipped with Nokia or Symbian, otherwise you are spending your time on what has been proven already.&lt;/p&gt;&lt;p&gt;Then let&#039;s get back to the build tool chain immigration affair. Actually I observed all original makmake build process in Carbide.C++, and then try to copy all compiler and linker arguments to GNU make Makefile scripts. The work is not so hard, and the result is also convenient to verify. Here are some brief points need your attention:&lt;/p&gt;&lt;ul&gt;	&lt;li&gt;Compiler/linker arguments are main additions feed to Makefile&lt;/li&gt;	&lt;li&gt;Emulator builds and target device builds use different compiler/linker&lt;/li&gt;	&lt;li&gt;Device builds will need post linker operations,&amp;nbsp;&lt;a href=&quot;http://www.symbian.com/developer/techlib/v9.1docs/doc_source/N10356/BuildTools/native/elf2e32.guide.html#buildguide.elf2e32.main&quot; target=&quot;_blank&quot;&gt;elf2e32&lt;/a&gt;&amp;nbsp;is the tool we use&lt;/li&gt;	&lt;li&gt;ActivePerl is used to calling the .RSS resource file compiling, other Perl probably won&#039;t work&lt;/li&gt;	&lt;li&gt;Building statically linked library (.LIB target type) takes no post linker jobs to do, compared with .DLL and .EXE&lt;/li&gt;&lt;/ul&gt;&lt;div&gt;Also, it really depends on the project scale you are working with. Like Mozilla NSPR component, it uses several config and make rules files to make targets for over two dozens operating systems, then finding which place is proper to add arguments takes longer than making the modify itself.&lt;/div&gt;&lt;div&gt;&amp;nbsp;&lt;/div&gt;&lt;div&gt;Finally, you could have a look at&amp;nbsp;&lt;a href=&quot;https://bugzilla.mozilla.org/show_bug.cgi?id=442706&quot; target=&quot;_blank&quot;&gt;Bug 442706&lt;/a&gt;, the patch there will show you the modifications made against the original NSPR build scripts. A detailed description about how to build NSPR with GNU make/autoconf can be found at&amp;nbsp;&lt;a href=&quot;http://wiki.mozilla.org/Mobile/Symbian/NSPR&quot; target=&quot;_blank&quot;&gt;Mozilla Wiki&lt;/a&gt;.&amp;nbsp;&lt;/div&gt;&lt;div&gt;&amp;nbsp;&lt;/div&gt;&lt;div&gt;Cheers~&amp;nbsp;&lt;img src=&quot;http://blogs.forum.nokia.com/js/tinymce/plugins/emotions/images/smiley-laughing.gif&quot; border=&quot;0&quot; alt=&quot;Laughing&quot; title=&quot;Laughing&quot; /&gt;&lt;/div&gt;&lt;p&gt;&amp;nbsp;&lt;/p&gt;
   </description>
   <link>http://blogs.forum.nokia.com/blog/harry-lis-forum-nokia-blog/2008/08/01/finishing-the-immigration-to-gnu-make</link>
   <comments>http://blogs.forum.nokia.com/blog/harry-lis-forum-nokia-blog/2008/08/01/finishing-the-immigration-to-gnu-make</comments>
   <guid>http://blogs.forum.nokia.com/blog/harry-lis-forum-nokia-blog/2008/08/01/finishing-the-immigration-to-gnu-make</guid>
      <dc:creator>kcomex</dc:creator>
      
    <category>S60</category>
      
    <category>Symbian C++</category>
      
    <category>Mozilla</category>
         <pubDate>Fri, 01 Aug 2008 14:38:28 +0800</pubDate>
   <itunes:author>Forum Nokia</itunes:author>
   <itunes:subtitle>Finishing the immigration to GNU make</itunes:subtitle>
   <source url="http://blogs.forum.nokia.com/rss.php?blogId=300055&amp;profile=rss20">Harry Li&#039;s Forum Nokia Blog</source>
     </item>
    <item>
   <title>Build Symbian C++ project with GNU make/autoconf</title>
   <description>
    &lt;p&gt;
Everyone who develops native Symbian C++ application knows that we use BLD.INF and *.MMP files to define a project. This is used since the very ancient Nokia 9200 SDK. The reason that Symbian uses this approach is quite similar with the reason Symbian made other unique features : because mobile devices have unique characteristics other than desktop computers. There is no UID for each appilcation on a desktop OS, also there is no compile time check on global writable static data use.
&lt;/p&gt;
&lt;p&gt;
However, when porting open source project like Mozilla to Symbian OS, it becomes very impractical to stick with the original BLD.INF plus *.MMP solution. There are a number of reasons:
&lt;/p&gt;
&lt;ul&gt;
	&lt;li&gt;&lt;strong&gt;Portability&lt;/strong&gt; : &lt;br /&gt;
	Mozilla project is something we could treat it as a platform, framework or midware. So portability is something the community considers as the first requirement. The community maintains one code repository to generate binary executables for dozens of OS/CPU arch. combinations. So we can&#039;t say that you build everything except Symbian platform with GNU make while building Symbian targets with another tool chain.&amp;nbsp; &lt;br /&gt;
	&lt;/li&gt;
	&lt;li&gt;&lt;strong&gt;Community compatibility&lt;/strong&gt; : &lt;br /&gt;
	We know the success of open source projects benefit from hundreds and thousands of developers around the world. The philosophy behind this doesn&#039;t mean we get software products without paying since they love contributing, it means they may be different experts on different sub-system. So we can&#039;t imagine that in future the FireFox for S60 has a security problem, a security expert has to learn how to build FireFox for S60 with BLD.INF and *.MMP for some time before he can get hands on the point of problem.&lt;br /&gt;
	&lt;/li&gt;
	&lt;li&gt;&lt;strong&gt;Large scale&lt;/strong&gt; : &lt;br /&gt;
	Because the code base and the number of components are quite large, it would be very difficult to write a BLD.INF to build the whole platform which you might noticed in my earlier blog. That&#039;s also a nature of the scale limitation of Symbian&#039;s own build system compared with GNU make. As a derived reason we have to use Mozilla&#039;s build system, the community have to run a server to build the whole source tree every several hours because with such a large code base almost every hour there are codes checking into the repository, then the old Symbian&#039;s build method will have to be modified heavily to suite this automatically build monitoring system.&lt;/li&gt;
&lt;/ul&gt;
The reasons we have to move from Symbian&#039;s BLD.INF/*.MMP build method to GNU make are stated quite clear above. Yet it&#039;s not a good idea to talk about how to port the system and dive into Makefile lines in a blog article because the blog post is really something more literature rather than technical codes &lt;img src=&quot;http://blogs.forum.nokia.com/js/tinymce/plugins/emotions/images/smiley-wink.gif&quot; border=&quot;0&quot; alt=&quot;Wink&quot; title=&quot;Wink&quot; /&gt;. So I would like to give you two places to find the implementation and method behind all the immigration. First one is the &lt;a href=&quot;https://bugzilla.mozilla.org/show_bug.cgi?id=442706&quot; target=&quot;_blank&quot; title=&quot;[BUG 442706]&quot;&gt;[BUG 442706]&lt;/a&gt; where you could find detail patch about moving build system to GNU make/autoconf. The second one is &lt;a href=&quot;http://code.google.com/p/mozilla-symbian/&quot; target=&quot;_blank&quot;&gt;Mozilla-Symbian&lt;/a&gt; project hosted on google-code which is a place for codes before they get checked into Mozilla main repository. With these two resources you could find solution of moving a Symbian project to GNU make/autoconf tool chain. &lt;img src=&quot;http://blogs.forum.nokia.com/js/tinymce/plugins/emotions/images/smiley-laughing.gif&quot; border=&quot;0&quot; alt=&quot;Laughing&quot; title=&quot;Laughing&quot; /&gt;
&lt;p&gt;
&amp;nbsp;
&lt;/p&gt;
   </description>
   <link>http://blogs.forum.nokia.com/blog/harry-lis-forum-nokia-blog/2008/07/13/build-symbian-c-project-with-gnu-make-autoconf</link>
   <comments>http://blogs.forum.nokia.com/blog/harry-lis-forum-nokia-blog/2008/07/13/build-symbian-c-project-with-gnu-make-autoconf</comments>
   <guid>http://blogs.forum.nokia.com/blog/harry-lis-forum-nokia-blog/2008/07/13/build-symbian-c-project-with-gnu-make-autoconf</guid>
      <dc:creator>kcomex</dc:creator>
      
    <category>Symbian C++</category>
      
    <category>Mozilla</category>
         <pubDate>Sun, 13 Jul 2008 13:09:39 +0800</pubDate>
   <itunes:author>Forum Nokia</itunes:author>
   <itunes:subtitle>Build Symbian C++ project with GNU make/autoconf</itunes:subtitle>
   <source url="http://blogs.forum.nokia.com/rss.php?blogId=300055&amp;profile=rss20">Harry Li&#039;s Forum Nokia Blog</source>
     </item>
    <item>
   <title>Limitation on Open C which matters HUGE project like Mozilla</title>
   <description>
    &lt;p&gt;Open C is a quite powerful tool when porting open source projects to Symbian OS platform. But a mobile kitty is not a desktop monster, it doesn&#039;t have a so powerful kernel, especially you encountered some design limitations. For small projects which don&#039;t utilize lower or system level functions, you will wield Open C without any pain. However, projects as large as Mozilla will meet the limitations and avoid using incomplete or absent functions. So marking those limitations with good documentation and practical experiences is very important. Here I will try to tell you some of my experiences.&lt;/p&gt;&lt;p&gt;First of all, you need to read Open C documents carefully, Nokia and Symbian try to explain every limitation they know as clear as possible. So you don&#039;t need go discussion board and ask questions before check the documents. *BUT ACTUALLY*, the problem is not all about checking Open C documents, there are possibilities the problem is not caused by Open C but your code. In this case, the situation is not easy. You need practical experiences from others, by talking with colleagues or searching discussion board.&lt;/p&gt;&lt;p&gt;Here comes the body. The most incomplete group is libc Signal Handling, but what&#039;s lucky is we can find absence of these functions, you don&#039;t need to determine where the problem comes from, your code or Open C. The second hard one to over come is using posix_spawn() instead of fork() and exec(). Here I would give you a suggestion, read the complete&amp;nbsp;&lt;a href=&quot;http://www.scit.wlv.ac.uk/cgi-bin/mansec?2+fork&quot; target=&quot;_blank&quot;&gt;fork() manual&lt;/a&gt;&amp;nbsp;and compare the difference between&amp;nbsp;&lt;a href=&quot;http://www.opengroup.org/onlinepubs/009695399/functions/posix_spawn.html&quot; target=&quot;_blank&quot;&gt;posix_spawn()&lt;/a&gt;. Then check the context of your code, see if these differences applied. This technique is not so easy, even there are further hidden side effect, for example &amp;quot;In the child process created with popen3/popen/system/posix_spawn, operations on the inherited file may cause a panic.&amp;quot; in&amp;nbsp;&lt;a href=&quot;http://developer.symbian.com/wiki/download/attachments/1411/pips_readme_1_3.pdf?version=1&quot; target=&quot;_blank&quot;&gt;P.I.P.S. V1.3 Release Notes&lt;/a&gt;. Bear in mind those side effects from practice, then the job would be less tough. &lt;/p&gt;&lt;p&gt;With two big stop showers ahead, I think the most important is not getting those limitations one by one, but a skill to find if the bug comes from _my_ code or Open C. Once the debug tricks are at hand, there won&#039;t be anything &amp;quot;won&#039;t fix&amp;quot;&amp;nbsp;&lt;img src=&quot;http://blogs.forum.nokia.com/js/tinymce/plugins/emotions/images/smiley-wink.gif&quot; border=&quot;0&quot; alt=&quot;Wink&quot; title=&quot;Wink&quot; /&gt;&lt;/p&gt;&lt;p&gt;&amp;nbsp;&lt;/p&gt;
   </description>
   <link>http://blogs.forum.nokia.com/blog/harry-lis-forum-nokia-blog/2008/06/03/limitation-on-open-c-which-matters-huge-project-like-mozilla</link>
   <comments>http://blogs.forum.nokia.com/blog/harry-lis-forum-nokia-blog/2008/06/03/limitation-on-open-c-which-matters-huge-project-like-mozilla</comments>
   <guid>http://blogs.forum.nokia.com/blog/harry-lis-forum-nokia-blog/2008/06/03/limitation-on-open-c-which-matters-huge-project-like-mozilla</guid>
      <dc:creator>kcomex</dc:creator>
      
    <category>Open C</category>
      
    <category>Symbian C++</category>
      
    <category>Testing</category>
      
    <category>Mozilla</category>
         <pubDate>Tue, 03 Jun 2008 16:53:38 +0800</pubDate>
   <itunes:author>Forum Nokia</itunes:author>
   <itunes:subtitle>Limitation on Open C which matters HUGE project like Mozilla</itunes:subtitle>
   <source url="http://blogs.forum.nokia.com/rss.php?blogId=300055&amp;profile=rss20">Harry Li&#039;s Forum Nokia Blog</source>
     </item>
    <item>
   <title>Set a world record, with FireFox 3</title>
   <description>
    Wanna make a Guinness World Record? OK, I have two recommendations. First, balance thirty spoons on your face &lt;img src=&quot;http://blogs.forum.nokia.com/js/tinymce/plugins/emotions/images/smiley-tongue-out.gif&quot; border=&quot;0&quot; alt=&quot;Tongue out&quot; title=&quot;Tongue out&quot; /&gt; and second, &lt;a href=&quot;http://www.spreadfirefox.com/en-US/worldrecord&quot; target=&quot;_blank&quot;&gt;download FireFox 3&lt;/a&gt; on the day it get released &lt;img src=&quot;http://blogs.forum.nokia.com/js/tinymce/plugins/emotions/images/smiley-smile.gif&quot; border=&quot;0&quot; alt=&quot;Smile&quot; title=&quot;Smile&quot; /&gt;. A more open web world with more players will benefit everyone, now let&#039;s wait and see what will happen the day FireFox 3 arrives.
   </description>
   <link>http://blogs.forum.nokia.com/blog/harry-lis-forum-nokia-blog/2008/05/29/set-a-world-record-with-firefox-3</link>
   <comments>http://blogs.forum.nokia.com/blog/harry-lis-forum-nokia-blog/2008/05/29/set-a-world-record-with-firefox-3</comments>
   <guid>http://blogs.forum.nokia.com/blog/harry-lis-forum-nokia-blog/2008/05/29/set-a-world-record-with-firefox-3</guid>
      <dc:creator>kcomex</dc:creator>
      
    <category>Browsing</category>
      
    <category>Mozilla</category>
      
    <category>FireFox</category>
         <pubDate>Thu, 29 May 2008 15:47:50 +0800</pubDate>
   <itunes:author>Forum Nokia</itunes:author>
   <itunes:subtitle>Set a world record, with FireFox 3</itunes:subtitle>
   <source url="http://blogs.forum.nokia.com/rss.php?blogId=300055&amp;profile=rss20">Harry Li&#039;s Forum Nokia Blog</source>
     </item>
    <item>
   <title>Development Depends on Dependency</title>
   <description>
    &lt;p&gt;
It&#039;s quite a while since my last post. Although I&#039;m not there, just because of the terrible &lt;a href=&quot;http://en.wikipedia.org/wiki/2008_Sichuan_earthquake&quot; target=&quot;_blank&quot; title=&quot;earth quake&quot;&gt;earth quake&lt;/a&gt; happened in SiChuan China, I can&#039;t sleep well and concentrate on my codes while people there are suffering. God bless them, hope they could recover with time passes.
&lt;/p&gt;
&lt;p&gt;
Actually this has been done two weeks ago. After evaluate the amount of porting works, we could go on with the dependency check of a specific project. For Mozilla, I had shown a &lt;a href=&quot;http://weblogs.mozillazine.org/schrep/archives/2007/05/mozilla_platform.html&quot; target=&quot;_blank&quot;&gt;framework picture&lt;/a&gt;: 
&lt;/p&gt;
&lt;p&gt;
&lt;img src=&quot;http://blogs.forum.nokia.com//data/blogs/resources/300055/previews-med/theMozillaPlatform.png&quot; width=&quot;520&quot; height=&quot;392&quot; align=&quot;middle&quot; /&gt;
&lt;/p&gt;
&lt;p&gt;
From this picture we know the components in the lowest level are &amp;quot;NSPR&amp;quot; and Cairo&amp;quot;. Because &amp;quot;Cairo&amp;quot; is only a graphics base, so we will start from &lt;a href=&quot;http://www.mozilla.org/projects/nspr/&quot; target=&quot;_blank&quot; title=&quot;NSPR&quot;&gt;NSPR&lt;/a&gt; first.&amp;nbsp;
&lt;/p&gt;
&lt;p&gt;
For other open source projects without such a components diagram, then how we could know its internal components dependency? I would sugguest taking a look at the build(configure &amp;amp;&amp;amp; make) output, from this log everything is exposed even with any third party library used by that project. Anyway, large projects like Mozilla will take us more time to get everything clear. Also the more time we put on dependency check, the more clear we could get for a structural view, and the more easy for add or modify codes.
&lt;/p&gt;
&lt;p&gt;
&amp;nbsp;
&lt;/p&gt;
   </description>
   <link>http://blogs.forum.nokia.com/blog/harry-lis-forum-nokia-blog/2008/05/18/development-depends-on-dependency</link>
   <comments>http://blogs.forum.nokia.com/blog/harry-lis-forum-nokia-blog/2008/05/18/development-depends-on-dependency</comments>
   <guid>http://blogs.forum.nokia.com/blog/harry-lis-forum-nokia-blog/2008/05/18/development-depends-on-dependency</guid>
      <dc:creator>kcomex</dc:creator>
      
    <category>Open C</category>
      
    <category>Symbian C++</category>
      
    <category>Mozilla</category>
         <pubDate>Sun, 18 May 2008 16:00:55 +0800</pubDate>
   <itunes:author>Forum Nokia</itunes:author>
   <itunes:subtitle>Development Depends on Dependency</itunes:subtitle>
   <source url="http://blogs.forum.nokia.com/rss.php?blogId=300055&amp;profile=rss20">Harry Li&#039;s Forum Nokia Blog</source>
     </item>
    <item>
   <title>Evaluate the project before porting</title>
   <description>
    &lt;p&gt;
Porting an open source project is quite different from developing a new application for mobile phones. During past days without &lt;a href=&quot;http://wiki.forum.nokia.com/index.php/Category:Open_C&quot; target=&quot;_blank&quot;&gt;Open C&lt;/a&gt;, we have to rewrite lots of code to satisfy both Symbian OS rules/limitation and difference between mobile devices and desktop computers. Touching so much code will cost more development time, but what&#039;s worse is that making changes too much will drive you thinking &amp;quot;Should I start a new project rather than using only a little from this existing project?&amp;quot;. So porting an existing application onto Symbian OS makes you keep concerning how much modification will you make, if too much consider starting a new one or just share the name or brand. As far as I know, &lt;a href=&quot;https://helixcommunity.org/&quot; target=&quot;_blank&quot;&gt;HelixCommunity&lt;/a&gt; is the first big and famous open source project ported to Symbian OS, and it supports as early as v6.1. I checked out its source in 2004 (means their code nowadays might be different a lot), this is one example of making too much changes so you can tell few difference between porting like this or making a new project. Since S60 3rd Edition, there is Open C we can utilize, the job is easier. But still we can not ignore this consideration because of the nature of mobile phones. In one word, first step of porting an existing project is evaluate how much changes will be made approximately. 
&lt;/p&gt;
&lt;p&gt;
&lt;a href=&quot;http://www.forum.nokia.com/main/resources/technologies/open_c/tips_for_selecting_open_source_code.html&quot; target=&quot;_blank&quot;&gt;This document&lt;/a&gt; in Forum Nokia web site is very helpful, and generally speaking smaller projects are always easier to make decision if it could be ported than bigger ones. Smaller ones are always based on some existing framework, if the framework exists or can be ported on Symbian OS then the project itself will be fine in most cases. Huge project like Mozilla or Helix will give us an impression that it is likely impossible to port cause it has so many dependencies and self owned framework. However, we want eveidence to support our decision. Let&#039;s get back to Mozilla, after searching its website, there is an &amp;quot;&lt;a href=&quot;http://developer.mozilla.org/en/docs/C%2B%2B_Portability_Guide&quot; target=&quot;_blank&quot;&gt;C/C++ Portability Guide&lt;/a&gt;&amp;quot; which shows us an amazing likeness of Symbian OS programming limitations. From this article, we could learn Mozilla code will probably contain very little exceptions, RTTI and others that Symbian OS C++ does not support. Then with the help of Open C, we could have better confidence about porting without changing too much code. 
&lt;/p&gt;
&lt;p&gt;
Next we have to&amp;nbsp; make&amp;nbsp; deeper&amp;nbsp; research on the inner&amp;nbsp; structure&amp;nbsp; of Mozilla platform, cause you can not start portting any piece of code without knowing which level it lies in and what it does actually. Stay tuned, I will bring more as the work goes on &lt;img src=&quot;http://blogs.forum.nokia.com/js/tinymce/plugins/emotions/images/smiley-smile.gif&quot; border=&quot;0&quot; alt=&quot;Smile&quot; title=&quot;Smile&quot; /&gt;
&lt;/p&gt;
&lt;p&gt;
&amp;nbsp;
&lt;/p&gt;
   </description>
   <link>http://blogs.forum.nokia.com/blog/harry-lis-forum-nokia-blog/2008/05/08/evaluate-the-project-before-porting</link>
   <comments>http://blogs.forum.nokia.com/blog/harry-lis-forum-nokia-blog/2008/05/08/evaluate-the-project-before-porting</comments>
   <guid>http://blogs.forum.nokia.com/blog/harry-lis-forum-nokia-blog/2008/05/08/evaluate-the-project-before-porting</guid>
      <dc:creator>kcomex</dc:creator>
      
    <category>Open C</category>
      
    <category>S60</category>
      
    <category>Symbian C++</category>
      
    <category>Mozilla</category>
         <pubDate>Thu, 08 May 2008 09:16:10 +0800</pubDate>
   <itunes:author>Forum Nokia</itunes:author>
   <itunes:subtitle>Evaluate the project before porting</itunes:subtitle>
   <source url="http://blogs.forum.nokia.com/rss.php?blogId=300055&amp;profile=rss20">Harry Li&#039;s Forum Nokia Blog</source>
     </item>
    <item>
   <title>Porting Mozilla onto Symbian OS</title>
   <description>
    &lt;p&gt;
Greetings 
Everybody! I have been a &lt;a href=&quot;http://www.forum.nokia.com/main/forum_nokia_champion/forum_nokia_champions/Hanfei_Li.html&quot; target=&quot;_blank&quot; title=&quot;Forum Nokia Champion&quot;&gt;Forum Nokia Champion&lt;/a&gt; for over 1.5 years. Currently my major technology profession is developing native Symbian OS C++ applications mainly on S60, also I know some Python(PyS60), J2ME and Windows Mobile. Since last month I started concentrate my focus onto a very nice community, the famous &lt;a href=&quot;http://www.mozilla.org&quot; target=&quot;_blank&quot; title=&quot;Mozilla&quot;&gt;Mozilla&lt;/a&gt; project. As I expressed before, I always feel extremely exciting about contributing my effort to something which will bring us openness, opportunities and freedom, just like the award winning desktop browser &lt;a href=&quot;http://www.getfirefox.com&quot; target=&quot;_blank&quot; title=&quot;FireFox&quot;&gt;FireFox&lt;/a&gt;, and the possibility of running it on Symbian OS.
&lt;/p&gt;
&lt;p&gt;
Frankly, at first I hadn&#039;t realized the size of the Mozilla Platform, until I read these from the book &amp;quot;&lt;a href=&quot;http://www.mozillazine.org/talkback.html?article=4600&quot; target=&quot;_blank&quot; title=&quot;RAD with Mozilla&quot;&gt;Rapid Application Development with Mozilla&lt;/a&gt;&amp;quot;: 
&lt;/p&gt;
&lt;p style=&quot;background-color: #ffffff&quot;&gt;
&lt;em&gt;It is 30 times larger than the Apache Web Server, 20 times larger than the Java 1.0 JDK/JRE sources, 5 times bigger than he standard Perl distribution, twice as big as the Linux kernel source, and nearly as large as the whole GNOME 2.0 desktop source&amp;mdash;even when 150 standard GNOME applications are included.&lt;/em&gt;
&lt;/p&gt;
&lt;p&gt;
Maybe the information from this book is a little out of date, also maybe size can not tell everything about an open source project. But what we could learn is that porting Mozilla platform onto Symbian OS will be a huge project which needs lots of hours, especially for those mobile developers with little Mozilla hacking experiences. 
&lt;/p&gt;
&lt;p&gt;
Here I&#039;d like to share something I found in last 2 weeks digging, maybe some of you might become future contributor of Mozilla/FireFox on mobile devices. Also the reason I start my blogging about porting Mozilla onto Symbian OS is to continue the philosophy of open source software: making the development process and result product open, clear and collaborative. 
&lt;/p&gt;
&lt;ul&gt;
	&lt;li&gt;It&#039;s important to know Mozilla well before get hands on code. Read their websites well, know more about open source, vision of Mozilla, historical event, maybe the unique culture from Mozilla people. &lt;/li&gt;
	&lt;li&gt;Mozilla platform is layered/modularized into several components, you could find the framework diagram in &lt;a href=&quot;http://weblogs.mozillazine.org/schrep/archives/2007/05/mozilla_platform.html&quot; target=&quot;_blank&quot; title=&quot;Mozilla Platform&quot;&gt;this blog&lt;/a&gt;. &lt;/li&gt;
	&lt;li&gt;Beginners should know where to find information or documents about Mozilla platform. There are two wikis which may confuse you: &lt;a href=&quot;http://developer.mozilla.org/en/docs/Main_Page&quot; target=&quot;_blank&quot; title=&quot;MDC&quot;&gt;Mozilla Developer Center&lt;/a&gt; whose audience are mainly Mozilla platform technology users, clients, documents in this wiki are set to stone; &lt;a href=&quot;http://wiki.mozilla.org/Main_Page&quot; target=&quot;_blank&quot; title=&quot;Mozilla Wiki&quot;&gt;Mozilla Wiki&lt;/a&gt; which shows articles in engineering stage, you could find useful information about &lt;a href=&quot;http://wiki.mozilla.org/Mobile&quot; target=&quot;_blank&quot; title=&quot;Mozilla Mobile&quot;&gt;&amp;quot;Mobile&amp;quot;&lt;/a&gt; in this wiki. There is another non-wiki portal with lots of well categorized documents, &lt;a href=&quot;http://www.mozilla.org/developer/&quot; target=&quot;_blank&quot;&gt;http://www.mozilla.org/developer/&lt;/a&gt;&lt;/li&gt;
	&lt;li&gt;Mozilla developers like IRC, meet them and feel free to ask your question at &lt;a href=&quot;irc://irc.mozilla.org/mobile&quot; target=&quot;_blank&quot; title=&quot;irc://irc.mozilla.org/mobile&quot;&gt;irc://irc.mozilla.org/mobile&lt;/a&gt;. If the link does not work for you, probably you&#039;d like to have a FireFox with ChatZilla install. &lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;
There are a lot about porting Mozilla onto Symbian in the beginning days, I would like to write them down as time passes. I want to know more friends on this topic too, together we could make mobile Internet better with our efforts.&lt;br /&gt;
&lt;/p&gt;
&lt;p&gt;
As part of my first blog, I want to say my thanks to Forum Nokia for providing us such a good chance to express our technology thoughts on mobile development. With this Forum Nokia Champion program I believe Forum Nokia community could be more and more popular, bring us more and more success stories one after another :) 
&lt;/p&gt;
   </description>
   <link>http://blogs.forum.nokia.com/blog/harry-lis-forum-nokia-blog/2008/05/04/porting-mozilla-onto-symbian-os</link>
   <comments>http://blogs.forum.nokia.com/blog/harry-lis-forum-nokia-blog/2008/05/04/porting-mozilla-onto-symbian-os</comments>
   <guid>http://blogs.forum.nokia.com/blog/harry-lis-forum-nokia-blog/2008/05/04/porting-mozilla-onto-symbian-os</guid>
      <dc:creator>kcomex</dc:creator>
      
    <category>Browsing</category>
      
    <category>Symbian C++</category>
      
    <category>Mozilla</category>
         <pubDate>Sun, 04 May 2008 01:08:44 +0800</pubDate>
   <itunes:author>Forum Nokia</itunes:author>
   <itunes:subtitle>Porting Mozilla onto Symbian OS</itunes:subtitle>
   <source url="http://blogs.forum.nokia.com/rss.php?blogId=300055&amp;profile=rss20">Harry Li&#039;s Forum Nokia Blog</source>
     </item>
   </channel>
</rss>