Blogs

BG026 Coding Sprint report

Blog post by PulkoMandy on Fri, 2012-11-09 08:49

Hi there !
This week was the BeGeistert coding sprint. I assume you already read the great report at IsComputerOn about the conferences for this week-end, so here's just a summary of the work done durint the coding sprint.

ARM Port - Ithamar Adema, René Gollent, Adrien Destugues

Ithamar was holding the keyboard on this one. He's working on low-level Android stuff as his paid job, so he has a good understanding of the hardware and the Linux kernel that serves as a reference.

The ARM port was started as a Google Summer of Code project back in 2009. The project got the kernel compiling, and the bootloader working. Things more or less stayed there after that. However, with the recent release of the Raspberry Pi and some other cheap ARM-based hardware, there is interest for ARM again.

Ithamar is working with the Gumstix Verdex board. This is what was used for the work in 2009. That board is quite old by now, but it has a complete emulation in QEmu which is very useful for debugging the kernel.

We worked on getting interrupts, context switching, and page faults working. This brings the kernel to the point where it says "Cannot find any boot partitions", because there is no mass storage driver yet (it also lights 4 icons on the bootscreen, which is also working). We tried to add the usb mass storage driver, but that reliably triggers a panic which also happens, but only sometimes, on x86.

We also did some work (with remote help from Oliver Tappe) in getting the ARM toolchain working on Haiku. The compiler can now be built, and u-boot tools are ported (they are required to build a bootable image that the u(boot bootloader can work with). The build of an ARM version of Haiku still requires a tool to create partitions from the command line, and some scripts changes to use our own mkdos command instead of dosfstools mkdosfs. Ithamar may work on this since he now has installed Haiku on his laptop.

FDT support - François Revol

As part of his work on the PowerPC port, François is working on Flattened Device Tree support. The FDT is a data structure passed by the u-boot bootloader to the booted kernel. It describes the hardware the kernel is running on, and allows to find where are the serial port, frame buffer, keyboard, mass storage, RAM, etc. needed by Haiku. This avoids hardcoding drivers to fixed addresses for these peripherals. Since u(boot is also used on ARM devices, this work will be reused there as well. This will make it easier to port Haiku to more hardware with PPC and ARM chips.

BMenu tracking code rework - Alexandre Deckner

The code in BMenu is one of the most messy parts of the interface kit. Each menu is actually a BWindow, which means it gets its own thread and event loop. As a menu tends to share a lot of data with its submenus, the code is very messy and has a lot of small bugs. Alexandre is reworking this code to use a better solution.

WebPositive service kit network backend - Alexandre Deckner

The Services Kit is another of our past GSoC projects (2010). The plan is to have a full-featured http API for getting information from web services more easily. The kit has been merged into Haiku but is completely undocumented, so it's not seeing much use.

Alexandre started by merging some patches for better https support. He then tested the kit by writing a weather deskbar replicant that makes use of it.

But the core of this work was on the WebPositive broser. The browser currently uses WebKit's default Curl backend. While being the default, this is not used by most WebKit based browsers and has a number of problems with cookies, caching, and https connexions, as well as being quite slow. The idea is to replace this with a backend relying on the services kit, to avoid this problem. This means the cookies and other information will be shared with other applications using the kit.

Debugger improvements - René Gollent

René worked on watchpoints support in Debugger. That's one more step on making it a suitable replacement to GDB.

Stack&Tile fixes, ALE, and more - Clemens Zeidler

Clemens is currently working on his phd at the university of Aukland. The research department has some projects focused on improving user interface interaction. They use Haiku as a prototype for their research, as it is easier to modify things that affect the whole system. You already kow their work as the Stack and Tile support and the Aukland Layout Model.

This year Clemens showed us the Aukland Layout Editor which is a drag and drop tools for laying out an user interface. It can be used at runtime on ALM-based windows to freely alter the layout. Clemens asked each of us to go through a set of test applications to see if we managed to use the feature to make our work more efficient. There is also support for graphically routing events (such as a button click) to actions, in a way similar to the Cortex application. That stuff looks very promising.

Clemens also fixed some Stack and Tile related bugs in Haiku.

fRiSS user interface update - Adrien Destugues

fRiSS is an RSS and ATOM feed reader for Haiku. It just displays news items from your favourite websites in a window or a desktop replicant. fRiSS is available in Haiku as an optional package, and I'm working on improving it.

With the apha 4 release around the corner, I wanted to improve the user interface that was quickly hacked together. I cleaned up the code and improved the drwaing so it looks more like a regular Haiku application. This was finished right in time for the Alpha 4 code freeze, so people installing alpha 4 will get the very latest version of fRiSS.

NetSurf browser improvements - Adrien Destugues

NetSurf is a web browser. Originally developped for RiscOS, it has a focus on being very fast and lightweight. The BeOS port was started by François Revol with the target of replacing NetPositive. His main use for that was using Netsurf as a replicant inside the BeHappy application. this means while the html rendering works very well, the UI shell around it stayed very basic.

My work included adding graphical toolbar buttons, a download window (not saving the file to disk yet !), some event loop fixes to avoid network activity freezig when the UI is not doing anything, and updating the port to the latest sources from NetSurf git tree. I also added the support for automatically stacking windows using Stack&Tile, which removes the need for any in-application tabbing. I hope to see more applications supporting that soon, maybe starting with Terminal.

NetSurf is a very nice browser and much faster than the alternatives on Haiku. Its main drawback is the lack of JavaScript support, but the developpers are actively working on that. I think this browser has some potential for becoming the standard choice in Haiku. It is also much faster to compile than WebPositive with the whole WebKit framework, which makes it a lot easier to improve on it.

One last mention : I also did some work on APlayer, a release should not be too far but there are some issues I'd like to solve first.

The end.

Overall, this was a pretty good coding sprint with lots of stuff going on. We also saw some remote activity as the Alpha 4 release saw his code freeze happen during the week and is now in final testing stage. If all goes well, it will be available on monday.

The new WonderBrush

Blog post by stippi on Thu, 2012-10-25 10:59

Some of you may know that for quite some time, on and off, I am working on a rewrite of WonderBrush, the graphics tool that comes bundled with Haiku releases. Since I have last demonstrated the prototype publically, I have occasionally found the time to work on it some more. I've ported over most brush tool related code from the original WonderBrush. And in the past weeks, I have specifically worked on a new text tool (written from scratch).

Stack & Tile web questionnaire

Blog post by czeidler on Fri, 2012-10-19 19:55

Hi,

as part of my PhD thesis at the Uni Auckland I would like to do a web survey about Stack & Tile.

Stack & Tile (S&T) is an extension of the window manager used in HAIKU. S&T allows the user to stack windows on top of one other or tile windows beside each other.

With the questionnaire we would like to gather some information about how and how often people are using S&T. Even if you never tried S&T before or you don't know S&T at all, we have some general questions for you and we are interested in your feedback! If you don't know S&T please take a look at the Haiku user guide *).

In the questionnaire you are asked to upload some screenshots as examples of how you typically use S&T. If you want to provide some screenshots please take them beforehand to avoid eventual problems with the web questionnaire (e.g. timeouts).

To participate click:

Stack & Tile web questionnaire

Thank you for your help!
Clemens

*) Haiku user guide (S&T)

BFS Partition Resizer: Final Report

Blog post by ahenriksson on Wed, 2012-09-05 09:55

First of all, I apologize for the delay. I have now returned from my vacation, had a few days to settle in and explain to my neighbours that I'm not dead (!). Anyways, on to the interesting stuff.

On the surface, the status of things is mostly the same as in my last report, with a few bugs less. I thought I had dedicated more than enough time for bugfixing, but that turned out to not be the case. This is partly due to the slower development cycle when testing natively (compile, copy driver to image, boot virtual machine, test, repeat), and the bugs only showing up after doing several resizes with other IO going on. All the bugs of this kind that I know about have been eliminated.

To summarize the things I have accomplished during the summer:
  • Resize support in BFS driver, save for vnode mapping and growing a full file system.
  • Getting the resizing "pipeline" from userspace to driver to a working state (still needs some checking to verify that it's robust).

ALE (Auckland Layout Editor)

Blog post by czeidler on Mon, 2012-09-03 09:49

Recently I spend some time to develop ALE the Auckland Layout Editor and now it's getting time to release a first testing version! ALE is a tool for developers to create GUIs. These GUIs can then be loaded from an application. This first version is still very basic and I hope I can get some feedback what can be improved and which features are most needed. It mainly focus on layout creation and less on editing view properties.

While working on user interface customization it turned out that the step to creating a GUI builder is not that big. When changing a layout at runtime the user must be able to move existing views around, insert them between other views or swap the position of two views. Furthermore, it should be possible to temporary remove unused views from the layout and add them again at a later point. It is also important that the user can't create invalid layouts. For example, views should never overlap each other and the layout must stay solvable. What is missing for a GUI builder is that new views can be created and added to a layout. Furthermore, it must be possible to save and restore a layout and access the items from within an application, i.e. get a pointer to the c++ object.

ALE is a constraint based layout editor that based on the BALMLayout layout class. BALMLayout is a very powerful constraint based layout and can describe layouts that can't be described with other layout classes, like for example the grid-bag layout. Layouts created with ALE are automatically resizable and overlap-free. This means while editing a layout you can't create a layout that has two overlapping views.

ALE has a component factory that can be used to create GUI elements, e.g. buttons or text views. Each view in the layout gets a string id which can be changed in the editor. After the GUI developer designed a GUI the layout can be saved into a BMessage and be attached to a GUI specification file. From the c++ application this BMessage can be read and restored using a LayoutArchive class. This class also allows to map the string identifier of a view to an actual c++ object.

A test version of the editor can be downloaded from *) This is a debug version and relatively large. If you want to take a look at the source code, it is on github **). I you want to build it please come back to me and I will give you some more information about that.

There is also a very simple sample application in the Demo directory. This piece of code shows how to get a pointer to the objects in the layout. To build it just call make in the demo directory. It is using a GUI specification file called TestLayout which is also in the Demo directory. This file must be in the same folder as the app binary file is. Furthermore, it can be opened in the editor to change the layout or add new views.

Known bugs:
- some crashes
- explicit sizes are not stored at the moment
- the layout min size is not restored from the layout specification, this means overlap can occur in your app.

thanks for testing and feedback is welcome!

*)
http://www.cs.auckland.ac.nz/~clemens/ALE_3_9.zip
**)
https://github.com/czeidler/haiku

Google Summer of Code 2012: Wrap up report

Blog post by mmadia on Fri, 2012-08-31 00:41
Google Summer of Code 2012 Logo png

Friday, August 24th marked the end of Google Summer of Code 2012. This was the sixth year that the Haiku project participated and was one of 180 fellow mentoring organizations. This year, five of 1,212 students were mentored by Haiku. To give a frame of reference to the competitiveness in Google Summer of Code, over 400 mentoring organizations and over 4,000 students applied to participate. For both mentoring organizations (and students), it is an honor and pleasure to be selected in Google Summer of Code.

For those not in the know, Google Summer of Code is "a global program that offers student developers stipends to write code for various open source software projects". In other words, simply by being one of the mentoring organizations, many youthful computer-savvy students may learn about HAIKU for the first time. For a carefully selected few, they have the opportunity to receive priority from our mentors in teaching them how to develop software for Haiku. This is a unique opportunity, as there is no other outreach effort of this magnitude available to the Haiku project.

x86_64 port: final report

Blog post by xyzzy on Tue, 2012-08-28 09:57

Since the three-quarter term report, I have continued porting userland servers and apps. The app server is fully functional, as are Deskbar and Tracker and a few other apps. I also cross-compiled all of the basic development optional packages (GCC/Binutils, autotools, make, etc.) for x86_64. Another screenshot showing the current state of things is below:

Syndicate content