Skip to content
Arshad Khan edited this page Aug 2, 2017 · 13 revisions

Welcome to the Convert XUL to HTML wiki!

Introduction

This project is supposed to start the modernisation of Thunderbird. Thunderbird has been using XUL(pronounced ZOOL commonly) for it UI, which is an old technology that was able to make UI rapidly. But now modern libraries and frameworks like React, Vue, Web Components etc. can be used to make such UI even faster. Firefox which is internally used by Thunderbird was also using XUL but it has started to migrate to HTML. Since Firefox and Thunderbird team are separate, Thunderbird has been lagging on technology modernization.

The goal of this project is to convert lightning(calendar add-on for TB) dialogs into equivalent React Components. For more project info, check my proposal.

Why Lightning?

Lightning is a pretty small project in comparison to whole Thunderbird. If we are able to convert it then it can be used as a guide path for converting the rest of Thunderbird.

Why React?

Project mentor Philipp Kewisch first choice was Web Components but due to its unavailability, we decided to go for React. React.js is very good for making reusable web components and it is quite efficient as well.

Project Restrictions

TB has not been using Babel or other modern build tools for providing modern features to project so we can only use JS features that are supported by Firefox Browser. JSX, file imports, and bundling are not supported at the moment, although one can compile code using JSX and other features into vanilla js files and then use it in Thunderbird. We are planning to add some modern build process very soon to support all these features.

Getting Started with project

Please check out README.md and feel free to open an issue if you get stuck.

Docs for React components

Most of the documentation is in form of inline comments in code files. Below are some pages which give an abstract overview of dialogs converted so far.

  1. Calendar Properties Dialog
  2. Print Dialog
  3. Calendar Alarm Dialog
  4. Event Dialog
  5. Task Dialog

Contact me

Arshad Khan

Arshad

Site | Github | Facebook | Twitter | LinkedIn | Medium | E-Mail

Clone this wiki locally