Taking the Haiku Layout API Public

Blog post by yourpalal on Wed, 2010-04-28 03:22

Project Outline

My GSoC project revolves around polishing and preparing Haiku's Layout API for public consumption. Currently, this is only supposed to be used in Haiku's included applications, so third party applications must manually position and resize all their GUI elements, which can be really tedious and inflexible. I will also be modifying some Haiku-provided applications to use the Layout API, which will help me find bugs and help with Haiku's ongoing localization.

  • Deriving BLayout from BLayoutItem, to allow BView-less BLayouts
  • Implementing archiving for BLayouts/Views using the Layout API: Ticket #5525
    • creating a few classes to manage BLayout [de]archiving. For the detail oriented, I have posted my ideas here. I have been doing some thinking and some details have evolved a bit, but the general idea remains the same.
    • deriving BLayoutItem from BArchivable, and implementing related methods using the classes mentioned above
    • modifying BView's archive related methods to use those classes as well
    • writing unit tests along the way
  • Stabilising the ABI and making it fragile base class safe, add padding, extra virtuals, PerformCode() methods, etc. (Ticket #5526)
  • modifying the following applications to use the Layout API
    • MediaConverter
    • People
    • Screen (preflet)
    • possibly Sounds (preflet), already fairly complete here (thanks Adrien)
    • Time (preflet)
    • Mail (preflet)
    • Shortcuts (preflet)
  • finding and fixing Layout bugs along the way including:
  • I'm also planning to write some documentation and articles on the Layout api throughout the summer, but this is not formally part of my project due to google imposed formalities :P


What I am hoping to do is implement the archiving process before the midterm evaluation, which also means I would derive BLayout from BLayoutItem in the first half of the summer. This would leave the rest of the summer to squash bugs, finalize the ABI, add Layout to some apps etc. However, I think it is fair warning for the Haiku community that I have never had the chance to work 8 hours a day on programming, so my estimates might be off by a bit :D I am however, confident that I will finish these goals over the summer. After GSoC is done, I would like to continue working on Haiku, and have a few ideas I would like to implement, two new widgets for the Interface Kit, animation for widgets, maybe an encryption kit with keyring capabilities and work on the HaikuBook, among others.

Personal Profile

  • Full Name: Alex Wilson
  • Trac Username: yourpalal
  • IRC username: yourpalal
  • Brief bio:

    I am twenty years old, and just finished my first year at Macewan University in Edmonton, Canada. I started programming by teaching myself Python in high school, and then moved on to c/c++, and now Java in my classes at school. I have also dabbled in assembly, lisp, perl, Go and probably some others, to varying degrees. I really enjoy programming, and am planning to make my career in it. I'm fairly certain I found Haiku through osnews.com, which is my go-to time wasting site. I really appreciate Haiku's robust, c++ based OOP APIs (maybe that's too many adjectives) especially coming from the Linux world! Anyway, I'm really happy about this opportunity to work on Haiku over the summer (and get paid for it!) and am hoping to continue working on Haiku into the future.