PulkoMandy's blog

Haiku monthly activity report - 04/2014

Blog post by PulkoMandy on Sat, 2015-04-25 17:59

A new month, a new report!

Statistics

The commit range this month is hrev48952-hrev49106. I got bored of doing the statistics by hand, so I've run the repo through gitstats instead. This gives more information than what I could do manually, including a listing of the most active commiters this month. Be sure to have a look at the results!

General news

Rather sad news this month: after years of service, bebits.com was put offline. This is another piece of the BeOS history disappearing from the web. However, there are some backups, and we'll see what can be done with them.

Another thing to mention is the analysis of Haiku sources by PVS-Studio. This is a static source analysis system similar to Coverity. It is commercial software, but they ran one analysis for free on the Haiku source (they did a similar thing for the Linux kernel already). They sent us the results and the devlopers will be fixing the many stupid mistakes the tool detected. You can read more about it in a separate news article.

Outside the tree

Some developers are working on new features outside the main git repository (often for big changes that would break everything). This month, we saw commits from:

  • Axeld working on a "launch daemon" for Haiku. Inspired by Apple's launchd and Red Hat's systemd, this will replace our current boot script. The launch daemon will take care of starting all of the system servers, and making sure they are restarted i ncase of a crash, for example. This will replace our current hand-crafted boot script. Potential improvements are a faster boot process (using all CPU cores instead of just one with the sequential boot script), a more stable system (with automatic restart of the servers), and a more customizable boot process (packages will be able to add new servers, which was difficult with the previous boot script approach). It will also help handling services restart on system updates, if/when we consider doing that (this means, it would be possible to update some servers without needing to restart the computer).
  • Jessicah and tqh are still working on UEFI boot support for Haiku. This would help supporting Apple machines, but could be useful on PCs as well to avoid booting through the legacy BIOS. The BIOS is generally available in current machines, but this will probably change over time, so we'd better be prepared.

Packages

3deyes worked on extending our set of translators and support for documents and images. Now available in HaikuDepot are DjVuViewer and DjVuTranslator (for djvu files, an alternative to PDFs), NanoSVGTranslator (for SVG graphics), jbig2dec, a new version of MuPDF and DocumentViewer as well as a new PDF Translator, openjpeg. He also added support for multiple page documents in ShowImage, which can now be used for PDF and DjVu files (and a few other multi-page formats).

With help from diver, he also uploaded packages for GenesisCommander, an updated version of Qupzilla. They also added new packages for BeZilla (Firefox 2.0) and MailNews (Thunderbird), as well as a set of VST instruments called mda_vst (to use with Cubase or similar apps).

korli worked on keeping the UNIX tools up to date , with updates to the ca_root_certificates (SSL certificates used to check which websites are "safe" for HTTPS, for example), patch, wget, which, coreutils.

PulkoMandy also uploaded several packages, including a complete GCC toolchain for AVR8 microcontrollers (if you want to do some Arduino development), as well as several old libraries needed to get VLC 0.8.6 in a package (work still in progress). He also worked on updating ICU to the latest release to provide even better internationalization support.

Olta released version 1.2 of Beam, with several fixes accumulated over the years.

Humdinger updated the cdrecord packages, however it is currently still broken. We have discussed this with the main cdrecord developer, and helped them identify some issues in their code. We also found some problems in Haiku. Once all issues are fixed, we will have a working cdrecord package again. Humdinger also uploaded a package for FilWip.

AnEvilYak updated packages for the gcc4 version of Haiku: BePDF, Pe, Vision, and added libsanta.

64-bit userlandfs

mmlr fixed some issues in userlandfs, making it 64-bit safe. The userlandfs allows testing of filesystem drivers without loading it in the kernel space, making it possible for developers to use all userland debugging tools to get a filesystem working (and avoinding the kernel debugger as much as possible). Userlandfs can also be used to run BeOS filesystem add-ons (they are not directly compatible with our kernel), as well as FUSE ones, coming from the Linux world.

Memory faults debug

mmlr also worked on several use-after-free and other memory usage problems using the guarded heap. This is a special memory allocator that will use a lot more memory than the normal one, but will catch programming errors (like accessing a memory segment after it was freed, or accecing memory outside the bounds of the segment) immediately (the normal allocator usually notices these problems only much later, when the memory is released).

malloc_debug can now display a stack trace to help the developer know where the problems are.

Using these new features allowed to find and fix problems in BShelf, BView, Tracker, media_addon_server, HaikuDepot, BPathFinder, libmedia, the input server Keyboard add-on, AboutSystem, Shortcuts, libicon, the network stack, B*Layout, usb_hid. Well, everywhere around the system.

mmlr also identified a bug caused by a class name conflict between libmedia and the input_server, which was causing the latter to enter an infinite loop as it tried to use a class from libmedia instead of its own code. He also fixed silent relaunch of applications with arguments (this allows to use the command line to call an already running application and give it new command line arguments).

Barrett worked on Deskbar, DeskBar replicants and the Media Kit to fix some memory leaks and other similar problems.

User interface

Waddlesplash added the "hide dotfiles" option to Tracker, useful if you want to browse the home folder from your Linux system. He also made some other cosmetic and bug fixes to Tracker. He also converted TextSearch to use layouted views, and cleaned up the code a bit.

Axel continued his work on the new Network preferences panel. Just like in BeOS, you can now configure services there (ssh, ftp, and telnet).

Janus was also quite busy this month, fixing a crash in BColumnListview, and also making it support bigger font sizes. He also fixed several apps and preferences panel to all have the same layout for their buttons (so "Apply" and "Revert" are always at the same place and always behave the same). He also improved support for changing colors in the Appearance preferences (not all apps and controls would use the colors where they would be needed).

Janus also fixed some problems with the image cache in ShowImage, which would sometimes crash.

Package management

Axeld implemented reporting the package size while installing packages, so applications can now report the download progress in bytes, instead of just a percentage. Stippi made some progress on HaikuDepot, allowing to show the "title" of packages, rather than the "name" (this means you can get the correct name, with spaces, special characters, and uppercase letters, for your packages). The app is also showing the size of the packages now.

Architectures and ports

kallisti5 updated the Mesa package for x86_64 to version 10.5.2. But he is mostly working on the ARM port (and more specifically Raspberry Pi 2 and Cubieboard 4 support).

mmu_man resumed work on the PPC port and fixed several issues with the build tools. He got things far enough to get a bootable image (with just the kernel) to run on an old Macintosh system.

Drivers

Ithamar pushed several fixes to the USB driver to improve handling of stalled devices, making the USB generally more reliable. He also changed the panic when the system is unable to write to a disk to a simple log message in the syslog, so unplugging an USB disk without unmounting it will no longer crash the whole system (you may still lose some of your data, however).

Documentation

waddlesplash made some improvements to the looks and typesetting of the Haiku Book.

Haiku monthly activity report - 03/2015

Blog post by PulkoMandy on Sun, 2015-03-29 12:55

Hello there, here comes the activity report for the month of march 2015.

This month there were 104 commits (hrev48848-hrev48952), 5 more than in the previous month.

Haiku monthly activity report - 02/2015

Blog post by PulkoMandy on Mon, 2015-03-02 09:38

Hello there!

My contract has ended, but for now I have some free time to write a report every month about the ongoing development efforts from the Haiku team. I think this is a nice way to better see the work done, more so than looking at the roadmap progress bars which tend to not move much.

This month there were 91 commits (hrev48757-hrev48848). Let's see what's inside those.

End of contract - closing words.

Blog post by PulkoMandy on Wed, 2015-02-18 08:21

Hi,

As you probably have noticed, there were no weekly report in the previous weeks. The reason for this is that my contract is currently stopped. There is currently not enough money in Haiku's treasure chest to safely continue it. So, it's time to me to get back to "real life" and a full-time job in a software development company.

First of all I want to thank everyone who made this long contract possible by donating money to Haiku. It was a great experience for me, and a lot of fun as well. I did my best to move Haiku forward towards the R1 release. Unfortunately the beta 1 still isn't there, and we currently have 57 blocking tickets. It is a small number, but only the most complex or big issues are left.

Contract weekly report #61

Blog post by PulkoMandy on Fri, 2015-01-30 09:27

Hello there!

As you may have noticed if you watch the commit list closely, my libbind work has not been merged yet. There are still some bugs to solve there, but I got sidetracked. I use BReferenceable in my DNS cache implementation to keep track of the cache entries. BReferenceable is a class used in Haiku to implement reference counted objects. In C++, the language only has very simple memory management, in the form of the new and delete operators. Objects can be allocated on the stack (they are temporary and only last as long as the function they are declared in is executing), or on the heap (for long lived objects). Objects allocated on the stack are deleted automatically when the function exits, while objects allocated on the heap must be deleted manually. This is one of the annoying parts of C++: managing the lifetime of these objects, making sure they are deleted only once, and that no one will try to use them after deletion.

Contract weekly report #60

Blog post by PulkoMandy on Fri, 2015-01-23 07:39

Hello world!

Not much commits from me this week, as I'm still working on the libbind update, and I'm also doing some work for other customers. I got netresolv to build after implementing the missing getifaddrs function in Haiku - this is a non-POSIX function, but it is available in Linux and all major BSDs. It enumerates all network addresses for all network interfaces on the system, similar to our BNetworkRoster and BNetworkInterface classes.