Mozilla Project - Rewriting the Calendar Views In this project, you have the premiere opportunity to start something great from scratch. The goal is to rewrite the existing calendar views (day, week, multi-week and month view) using HTML, CSS and a fair bit of JavaScript. The existing views are written with XUL, CSS and JavaScript and have evolved from a simple way to display calendar events to an almost 6000 line monster that has substantial design flaws. You can easily observe these flaws when synchronizing , the events flicker for a short moment. To make things easier, this project can be developed as an extension that can later be integrated into Lightning. As it always is with projects from scratch, getting started will be more difficult to split amongst the students, but given the various features the current views have it will be easy to split the work later on. To start things out, a student capable of creating visually appealing and usable designs can devise a new layout for the views. The design should fit in with the rest of the application and use a similar color palette, but there is room for discussion. Afterwards this design needs to be translated into a basic HTML and CSS structure. In the meanwhile, another participant can devise a strategy on how to handle multiple overlapping events in the week view or days with many events in the month view. The existing code can be used as a reference. Furthermore, one student should handle the backend interaction with the calendar storage so that all changes being made are instantly applied to the view without flickering. At this stage the views will be in shape so that basic usage is possible. Afterwards, existing features like in-place editing, selection and drag-to-create/edit need to be ported to the new views. This project will help you gather practical experience in software design as you need to separate presentation from controlling logic and connect it to the existing model. As the views can display potentially many events it will also provide exercise in performance optimization and if you are so inclined it also allows you to show off your graphic design skills. The Calendar Project consists of a small number of contributors that work on the project mostly in their free time. Aside from an assigned mentor you can reach on IRC, other project members will be able to help out with any issues you might have. You will be considered part of the team and if you enjoy what you are doing you are welcome to continue your contributions after the project.

Skills required: • A good understanding of web technologies, mainly HTML, CSS and JavaScript. • The ability to quickly get acquainted with large pieces of code and understand their nature. • Open communication via mailing lists and IRC. • Strong initiative and self-management skills.

Skills nice to have: • Web design / UI design skills. • A general understanding of responsive design. • Previous experience with open source projects or even Mozilla extensions.

For more information and technical details contact Philipp Kewisch here: IRC: Fallen @ irc.mozilla.org #calendar // Email: [email protected] // Newsgroup: mozilla.dev.apps.calendar Mozilla Calendar Project – Introducing Calendar Accounts Traditionally our calendar extension is organized into a list of calendars, each calendar being implemented by a “provider”, for example local storage or using the CalDAV protocol. The service to manage these calendars maintains a simple list, the entries have no connection to each other. Some calendar providers would greatly benefit from being able to group calendars into accounts, for example free-busy lookups are usually per-server operations and not per-calendar. It would also open the door for some great new features that have been postponed because they can be implemented cleaner with the notion of accounts. As the calendar manager is a central concept in our codebase and making changes has far reaching consequences, this project can be split up between multiple participants. After reaching a common understanding on how the new calendar and account manager interfaces should look like, one student can attend to modifying the calendar manager itself. A further participant with a sense of adventure or previous experience with XUL can take care of adapting the calendar list widget to accommodate displaying accounts. The next student can begin with modifying the CalDAV provider to work with the new account manager code while the last student can adapt the new calendar wizard. This project cannot be written as an extension so it might require a little more initial effort to set up the build environment. Nevertheless, this change has been anticipated for a few years now so its a good chance to receive our eternal gratitude and provide the basis for a load of cool new features like being notified if a new calendar is added to the server, integration with the Thunderbird account manager and better identify management. Also, some concept code for this has already been written which can be used to gather ideas and speed up coding to get to the interesting features quicker. The Mozilla Calendar Project consists of a small number of contributors that work on the project mostly in their free time. Aside from an assigned mentor you can reach on IRC, other project members will be able to help out with any issues you might have. You will be considered part of the team and if you enjoy what you are doing you are welcome to continue your contributions after the project.

Skills required: • A good understanding of web technologies, mainly HTML, CSS and JavaScript. • Basic understanding of version control systems like mercurial or git. • The ability to quickly get acquainted with large pieces of code and understand their nature. • Open communication via mailing lists and IRC. • Strong initiative and self-management skills.

Skills nice to have: • Experience with XUL, Mozilla's XML based user interface language • Previous experience with open source projects or even Mozilla extensions.

For more information and technical details contact Philipp Kewisch here: IRC: Fallen @ irc.mozilla.org #calendar // Email: [email protected] // Newsgroup: mozilla.dev.apps.calendar Mozilla Calendar Project - Resource Booking The Lightning extension has a dialog for inviting attendees to an event, which also shows availability information. Albeit not very obvious, it also allows booking resources and rooms by manually entering the address as understood by the server. The address is controlled by conventions within the scheduling environment, for example a dedicated email address that is managed by the server. Employees have these resources in their address book and need to enter them one by one to find a free room. To improve this experience we would like users to be able to pick rooms and resources in a way that they don't need to remember the room address and quickly see which rooms and resources exist and are available around the proposed time of the event. The attendee dialog needs to be redesigned to accommodate the additional requirements, you will receive feedback and can ask for help from the rest of the team on your design proposal. The dialog uses JavaScript and XUL, an XML based user interface language similar to HTML. The amount of UI work here is likely enough that it can be split between two students. The remaining two students will be working on the backend changes. Each calendar has an abstraction called “provider” which provides a common set of interfaces regardless of if the calendar is the local storage or a remote calendaring system. New features such as resource booking are added using an additional interface that providers may optionally implement. The interface needs to be designed in a way that is general enough to work with different calendaring systems. An implementation of this interface needs to be created within the CalDAV provider, an additional provider can be chosen to ensure the interface is general enough if time permits. The Mozilla Calendar Project consists of a small number of contributors that work on the project mostly in their free time. Aside from an assigned mentor you can reach on IRC, other project members will be able to help out with any issues you might have. You will be considered part of the team and if you enjoy what you are doing you are welcome to continue your contributions after the project.

Skills required: • A good understanding of web technologies including CSS and JavaScript. • Experience with XUL, or at least a good HTML skills. • Basic understanding of version control systems like mercurial or git. • The ability to quickly get acquainted with large pieces of code and understand their nature. • Open communication via mailing lists and IRC. • Strong initiative and self-management skills.

Skills nice to have: • Web design / UI design skills. • Previous experience with open source projects or even Mozilla extensions.

For more information and technical details contact Philipp Kewisch here: IRC: Fallen @ irc.mozilla.org #calendar // Email: [email protected] // Newsgroup: mozilla.dev.apps.calendar