Application Development
Project Areas
1st Party
Updating Mail
Haiku provides an innovative Mail management system using the file system database-like features (queries) to efficiently manage the e-mails. While the technology for this is working well, the user interface is rather limited, making it difficult to use the feature up to its full potential.
The first part of this task is reworking the code base to adhere to our coding style guidelines and convert the user interface to the Layout Kit, making it work with all font sizes and languages. The code should be improved to use proper object oriented programming concepts, and reviewed for potential thread-safety issues.
The second part of this task is to improve the user interface to meet today's expectations of a great way to view and edit your mail.
- #1431: Mail codebase needs a cleanup to fix several issues
- #5140: Mail GUI enhancements
- #5141: Generating queries for related mails in Mail
- Support grouping e-mail messages by discussion thread
- …and of course you can extend this with more ideas for improvements.
Updating and Extending WebPositive
Haiku uses a WebKit based browser called WebPositive. The browser is still quite simple and can be improved in multiple ways. Some of the missing features are:
- Missing session management. Opened tabs should be remembered and restored when the program is exited and restarted.
- Missing Cookie Jar management. There should be a way to list, delete and edit network cookies.
- Missing management of broken HTTPS certificates. There should be a way to remember exceptions to the system-wide certificate list.
- Support for browser extensions, such as ad-block. This could be done either reusing extensions from other browsers (if possible), or using the native add-ons system.
DiskUsage
DiskUsage could be inproved by:
- List of top space using directories in pane on left.
- Colors on fan gradually lighten but stay in same color for subfans to more easily indicate subdirectory relationships.
- Optionally allow for sorting fans based on space usage, not just directory/alphabetical order. Or just make that the default.
- Allow for trashing files or folders from within the app (on right click.)
- Window to find and show duplicate files.
- Allow for filtering based on MIME-type (how much music or images do I have, etc.)
- Improve DiskUsage support of packagefs Tickets: #5513 & #10282
- http://www.pulkomandy.tk/~beosarchive/?file=archive/source/utils/Organiz...
- https://github.com/HaikuArchives/Eventual (for screenshots, see: http://sourceforge.net/projects/eventual/)
- https://depot.haiku-os.org/a_book/
- Create a CVS version control system manager like Atlassian Sourcetree
- Create a TortoiseGIT clone for Haiku
- Update the MoleSVN app to match the features of TortoiseSVN.
- Create something for Mercurial
- There are rendering problems on many web pages. Most of these happen because of missing features both in the WebCore graphics implementation and in the Haiku app_server. This includes missing or incomplete support for dashed lines, shadows, perspective transforms, and probably some bugs in already implemented features. These should be implemented so websites look closer to how they were designed.
- Another missing feature is the ability to load fonts into app_server dynamically. Currently the Haiku API only allows using existing fonts installed in specific system directories. This should be extended so WebKit can make use of fonts it downloads from the web. Some websites use these as pictograms, and not having the correct font results in unuseable websites.
- Even when it looks correct, the rendering in WebKit is usually quite slow. Causes for this are present both in the WebKit code and in Haiku's app_server, which takes care of the drawing. Review the code to identify performance problems, and rework it to make the browser feel faster.
People
The People application is our contacts manager that uses system metadata to store contact information. We need someone to modernise the application and allow it to import (or sync) contacts from online services such as Google Contacts.
LaunchBox
LaunchBox is the Haiku dock application. It needs to be updated to properly display mounted disks, overlays and disk usage instead of generic folder icons.
RemoteDesktop
RemoteDesktop needs to be made end user friendly and given full graphical user interface to match.
Crash Reporter
Haiku is in need of an application that can automatically report crashes that the user wishes to share with Haiku developers. The application could make use of code from Goolge Breakpad, which is under an appropriate licence for Haiku to use.
Password Manager
Haiku already has the underlying technology for a password manager, however there currently is no graphical user interface for the application.
Haiku SDK: Debugger
Our graphical debugger is now used as default in Haiku, but there are still some areas that need improvement to match the features of graphical debuggers on other systems.
Haiku SDK: IDE
Although there are a few lightweight IDEs available for Haiku, we need a full featured IDE like Qt Creator, CLion or KDevelop. The development of a fully featured IDE called Heidi has been started, but needs further work.
Haiku SDK: Graphical Profiler/Tracer
We need something like KCachegrind, AMD CodeAnalyst or Stackify for Haiku.
MediaPlayer
HaikuDepot
3rd Party
Calendar application
Create a native calendar application or port an existing calendar application to Haiku. The app should support creating events and saving them to event files augmented with attributes similar to how People file work for contacts. Additional features of the calendar app might also include support for recurring events, integration with other calendaring software such as Google Calendar or Microsoft Outlook™, and vCalendar support ; CalDAV synchronization, import of iCal files, and more.
You should review existing calendar applications on Haiku/BeOS and other operating system to find out the key features for such an application. Then, decide if one of the applications linked above may be used as a starting point, or if it is better to start from scratch. Aside writting the application itself, it may be useful to improve the BDate, BTime and BDateTime in Haiku to make it possible to do date math easily, work with different timezones, and format dates represented using these classes, as well as relative durations ("Today", "2 days ago", ...), in a localized way.
Some applications to look at for inspiration/examples:
Graphical version control system Frontend
Windows has TortoiseSVN and TortoiseGIT. Choose your preferred VCS, and do something similar for Haiku's Tracker.
Ideas:Graphical project manager tool
BeOS had CodeWarrior IDE built-in, which makes it easy to create a new project and get started on development. Haiku currently only provide make and jam in the default installation, which is far less easy to use for starting developpers. The makefile engine is somewhat simpler, but more limited. All of these tools are to be used in text mode, not so good for beginners. Create some graphical tool to easily get started on 3rd party development in a few clicks.
Photo Album
Update the application AlbumAlbum to match the features of Google Picasa.
Download Manager
While BeGet and VWGet are available for Haiku, we still need a full featured Download Manager for Haiku.
Softphone
Update the application Whisper to match the features of soft phones on other systems.
UML Modeller
Photo post-production
Presentation Creator
Screen Reader
Video DVD Backup
Video DVD Authoring
Porting software
Improving Haiku's WebKit1 port
Haiku has a native WebKit port which uses the WebKit1 API. This port is not complete and there are several bugs and minor problems which needs to be fixed.
Migrating Haiku WebKit port to WebKit2
Haiku has a native WebKit port which uses the WebKit1 API. Since this port was made, the WebKit project migrated to WebKit2, which provides several new features and separates the work in several processes to limit the impact of crashes in one or the other.
The goal of this task is to get WebKit2 to run on Haiku. This involves implementing the required inter-process communication primitives in WTF (first reusing the UNIX socket support used on Linux ports, then migrating to BMessages if this is relevant/useful), and writing a WebKit2-style API for WebKit, which can be used in native Haiku applications. Proof of concepts could be a minimal browser, an update to the existing WebPositive, or adding a web view to existing applications such as Mail or fRiSS.
VirtualBox port to Haiku
VirtualBox is a virtual machine allowing to run an operating system inside of another. Porting it to Haiku would allow Haiku user to run another system, such as Windows or Linux, when they need to run an application that is not yet available for Haiku. This would make using Haiku as their primary operating system a viable approach for more people.
Starting from this preliminary work, continue and complete the port. This includes writing a native GUI for VirtualBox, getting it to run, and more importantly, work on the virtualization driver which will allow virtualbox to run the emulated machine using the native CPU. This makes the emulated system run at close-to-native speed, whereas a software emulation would be unbearably slow.
KVM acceleration for Haiku's QEmu port
QEmu is a virtual machine allowing to run an operating system inside of another. While there already is an Haiku port, it currently does not support any acceleration system through native virtualization (KVM/KQemu). This makes it too slow for many uses. Fixing this would allow Haiku user to run another system, such as Windows or Linux, when they need to run an application that is not yet available for Haiku. This would make using Haiku as their primary operating system a viable approach for more people.
