<html>
<head>
<meta http-equiv="content-type" content="text/html; charset=utf-8">
<title>Interview On Mozilla Lighting and OpenOffice.org</title>
</head>
<body>
<div class="spaced13">
  <h2>Interview: Mozilla Lightning and OpenOffice.org</h2>
  <p>-Louis Suárez-Potts, Stephan Schaefer</p>
  <br />
  <p>Conducted over the period following <a href="http://marketing.openoffice.org/ooocon2006/" target="_blank">OOoCon 2006</a>, where Michael Bemmer, the Engineering Director at Sun Microsystems and in charge of development of OpenOffice.org and StarOffice, <a href="http://marketing.openoffice.org/ooocon2006/presentations/tuesday_c5.pdf" target="_blank">presented the OpenOffice.org roadmap</a>, this interview focuses on a particularly interesting element: a Personal Information Manager (PIM) that would work closely with OpenOffice.org. Stephan Schaefer, a lead engineer at Sun's Hamburg offices, graciously assisted in framing the questions; my thanks. I'd also like to thank the Mozilla Calendar community for helping with some of the answers. And of course my thanks to Michael. </p>
  <p>During his OpenOffice.org roadmap presentation at the OpenOffice.org Conference in Lyon in September, Michael Bemmer mentioned the development of a <a href="http://en.wikipedia.org/wiki/Personal_information_manager" target="_blank">Personal Information Manager (PIM)</a>. </p>
  <p><em>Can you tell us exactly what is under development? </em></p>
  <p> </em>We are currently contributing to the development of the <a href="http://www.mozilla.org/projects/calendar/lightning/" target="_blank">Mozilla Lightning project</a>. Mozilla Lightning is an extension for the Mozilla <a href="http://www.mozilla.com/en-US/thunderbird/" target="_blank">Thunderbird</a> email client, and covers feature areas like calendaring and task handling including backend support. Thunderbird provides the email and address book functionality.</p>
  <p>Support for various calendar servers and protocols will be added over time. Synchronization with PDAs is planned for the future, as well.</p>
  <p><em>What led to the decision to develop a PIM?</em></p>
  <p>Sun's <a href="http://www.sun.com/software/star/staroffice/index.jsp" target="_blank">StarOffice</a> used to have a PIM including a simple calendar server, called StarOffice Schedule, up until version 5.2. When OpenOffice.org was founded, this functionality got dropped, due to technical and resource reasons. In addition, many configurations of Microsoft Office include Outlook. Finally, OpenOffice.org and StarOffice users, as well as product reviewers, frequently ask for a PIM.</p>
  <p><em>Why was Mozilla Lightning chosen as the basis for a PIM?</em></p>
  <p>Since OpenOffice.org is open source and runs on multiple platforms, including Windows, Mozilla Lightning was the obvious choice. Mozilla Firefox and Mozilla Thunderbird are already well accepted among users, and recent surveys indicate that even on Linux Mozilla Thunderbird is the preferred email client nowadays. Thus, Mozilla Lightning was the best option both from a technical and a momentum point of view.</p>
  <p><em>What calendar servers and calendaring protocols will be supported by Mozilla Lightning?</em></p>
  <p>The current 0.3 version of Mozilla Lightning supports the iCalendar standard and can access remote calendars using <a href="http://en.wikipedia.org/wiki/Webdav" target="_blank">WebDAV</a>, <a href="http://en.wikipedia.org/wiki/Caldav" target="_blank">CalDAV</a> and <a href="http://wiki.mozilla.org/Calendar:WCAP_Guide" target="_blank">WCAP</a> protocols. <a href="http://en.wikipedia.org/wiki/ICalendar" target="_blank">iCalendar</a> is supported by many calendar servers and tools as a data exchange format. CalDAV is an emerging standard that is supported by an increasing number of calendar servers. The WCAP protocol is used by the <a href="http://www.sun.com/software/products/calendar_srvr/index.xml" target="_blank">Sun Java System Calendar Server</a>.</p>
  <p>In addition to these three protocols, some people started implementing support for Google Calendar. Support for Microsoft Exchange is planned for releases after Lightning 1.0 as well.</p>
  <p><em>How tightly will the PIM be integrated into OpenOffice.org?</em></p>
  <p>Initially there will be no integration between Lightning and OpenOffice.org. Currently the focus is on making the calendar functionality as feature complete as possible. Thus, Lighting 1.0 will be a standalone component that OpenOffice.org users can install in addition to the office suite if they want to, but they don't have to. In addition, there are no extra menu items in OpenOffice.org planned for Lightning 1.0.</p>
  <p><em>Who or what parties are involved in the development of Mozilla Lightning?</em></p>
  <p>The Mozilla Lightning development team includes both corporate developers and volunteers. The organizations involved in the development include <a href="http://www.simdesk.com/default.asp?id=1" target="_blank">Simdesk</a>, the <a href="http://www.mozilla.com/" target="_blank">Mozilla Corporation</a>, and <a href="http://www.sun.com/" target="_blank">Sun</a>. Sun participates with a pretty strong team consisting of development, user experience, release engineering, QA/testing and marketing.</p>
  <p><em>What feature areas is Sun focusing on?</em></p>
  <p>So far, Sun has contributed to many different areas. The key focus areas in addition to general bug fixing are calendar views, team/collaboration features and support for the Sun Java System Calendar Server. Sun is also involved in the feature and roadmap planning and wants to make sure that Lightning integrates very well in Thunderbird. </p>
  <p><em>How is Mozilla Lightning different from Mozilla Sunbird? Is Sun contributing to Mozilla Sunbird as well?</em></p>
  <p><a href="http://www.mozilla.org/projects/calendar/sunbird/" target="_blank">Mozilla Sunbird</a> is a standalone calendar tool that does not integrate with Mozilla Thunderbird and does not include email and address book functionality. Sun's main focus is on the integrated solution provided by the Lightning extension as this is what most users are expecting from a PIM.</p>
  <p>However, because both projects (i.e. Sunbird and Lightning) share a common code base you are always contributing to both of them [if you contribute to one]. In addition Sun provides contributed builds of Sunbird for the <a href="http://en.wikipedia.org/wiki/Solaris_Operating_Environment" target="_blank">Solaris</a> operating system.</p>
  <p><em>What about <a href="http://www.mozilla.com/en-US/thunderbird/" target="_blank">Mozilla Thunderbird</a>? Is Sun involved in the development of Mozilla Thunderbird, considering that Lightning is an extension for Thunderbird?</em></p>
  <p>So far, the Sun team is focusing on the calendar part, i.e. Mozilla Lightning, because the email functionality in Thunderbird is already very complete and advanced. It is totally possible that at some point we might get involved in the Thunderbird development, as well, but since there is still a lot to do on the calendar side, this is not something that would happen anytime soon. However, we are in close contact with the Thunderbird developers to make sure that they are aware of any integration problems we might have. The team is very helpful and has a great interest in making Lightning a perfect calendar extension for Thunderbird.</p>
  <p><em>What does the roadmap look like? What major milestones are planned?</em></p>
  <p>Mozilla Lightning 0.3 has just been <a href="http://www.mozilla.org/projects/calendar/lightning/download.html" target="_blank">released</a> and shows already a huge improvement over Lightning 0.1. For example, Lighting 0.3 has improved views and better support for network calendars. The first major release, i.e. Lightning 1.0, is expected to be released in the second half of 2007. Lightning 1.0 is will provide all the key features expected from a PIM, except maybe PDA sync and support for some additional calendar servers.</p>
  <p>People interested in getting an overview over the current development efforts in the project should subscribe to the calendar weblog at <a href="http://weblogs.mozillazine.org/calendar" target="_blank">http://weblogs.mozillazine.org/calendar</a>.</p>
  <p><em>What programming languages and frameworks are used for developing Lightning?</em></p>
  <p>Lightning, like all other Mozilla products, uses the <a href="http://en.wikipedia.org/wiki/XUL" target="_blank">XUL framework</a> for its user interface. The application logic is mostly written in <a href="http://en.wikipedia.org/wiki/JavaScript" target="_blank">JavaScript</a>, except for some performance critical modules that are written in <a href="http://en.wikipedia.org/wiki/C%2B%2B" target="_blank">C++</a>.</p>
  <p><em>Is there anything that you have learned from participating in another open-source project?</em></p>
  <p>The Mozilla Lightning project already existed when Sun joined the project. Thus, Sun was the newcomer. This is different to OpenOffice.org where Sun founded the project and everybody else was the newcomer coming from the outside. It is a very interesting and useful experience to join an established open-source project as a new member from the outside. It takes a while until different ideas and goals get aligned. One has to invest into understanding each other's point of view and building relationships. The face-to-face meeting that we had in Toronto a few months ago definitely helped to form a team. The increasing feedback from Lighting users also helps to form opinions about future directions of the project.</p>
  <p><em>How can someone contribute to Mozilla Lightning?</em></p>
  <p>There are many ways to get in contact with the community. First, there is a lot of information on the project's web pages and especially on the Mozilla wiki (<a href="http://wiki.mozilla.org" target="_blank">http://wiki.mozilla.org</a>). A good source for current calendar project information is the calendar newsgroup (<a href="news://mozilla.dev.apps.calendar" target="_blank">mozilla.dev.apps.calendar</a>) and many developers can be contacted directly via IRC (#calendar on irc.mozilla.org)</p>
  <p>Interested developers should start with the guide at <a href="http://wiki.mozilla.org/Calendar:Hacking">http://wiki.mozilla.org/Calendar:Hacking</a>. If they have any questions, they should feel free to ask them in #calendar. But contributing does not necessarily require a person to be a programmer. Users reporting problems and writing bugs are more than welcome. For people interested in finding bugs, an excellent way to get started is to participate in a Calendar QA team test day. Information on their next test day can be found at: <a href="http://wiki.mozilla.org/Calendar:Current_QA_TestDay">http://wiki.mozilla.org/Calendar:Current_QA_TestDay</a>. Outside of test days, the calendar QA community is always excited to welcome interested users at #calendar-qa on irc.mozilla.org. </p>
</div>
<br />
<hr />
<a href="index.html">Return to Articles</a>
</body>
</html>
