Flock is the annual conference for the Fedora distribution, but, like most free-software events, the program draws on a wide range of projects. At this year's event in Prague, keynote speaker Sean Cross spoke about his work on the Novena laptop project—including some speculation as to why it is succeeding in the demonstrably harsh space of open hardware products. Cross told the audience he hoped to get Fedora running on Novena (which runs Debian only at the moment) over the course of the conference, but he also hoped that the Novena story would be a helpful and informative tale for others undertaking a difficult, large-scale task—such as building a distribution.

Novena, for those unfamiliar, is a do-it-yourself laptop designed with hackers in mind. The specifications are unusual; among other things, the CPU is a quad-core ARM Cortex A9 from Freescale, there is a breakout connector for Arduino- or Raspberry Pi–like aftermarket hardware add-ons, and there is a built-in Xilinx Field-Programmable Gate Array (FPGA) on board. The project raised more than $720,000 in a crowdfunding campaign (against an initial target of $250,000), and is run by just two employees: Cross and Andrew "Bunnie" Huang.

Cross met Huang when both were employees at Chumby, Cross explained. Huang was the hardware lead; Cross worked on kernel development. Both resided in Singapore, which, he explained, was almost a necessity when working on consumer electronics projects, due to its close proximity to China. Chumby was a fun company, he said, and he learned a lot from Huang. When Chumby closed its doors, Huang and Cross collaborated on a series of smaller open-hardware projects under the Kosagi company name. Those projects included the NeTV video overlay device and the Kovan robotics controller.

Both projects involved working with FPGAs during the development process, he explained, and they decided that their next project should be a platform for doing FPGA development. The Novena board itself started off as a design for a Tor router with a built-in FPGA. When they presented it at the 2013 Chaos Communication Congress (CCC), however, people kept telling them "that's a really cool laptop." Eventually, the outside interest persuaded them to attempt the crowdsourcing campaign. That campaign exceeded its target by a considerable margin in May, enabling the team to undertake several "stretch" goals.

The Novena is designed to be as free-software friendly as possible, Cross said. All of the schematics and hardware designs are publicly available, and the software is free of binary blobs. "Well," he added, "there is a small asterisk to that, depending on how you define 'blob.'" The device's WiFi module has free software drivers, he explained, but there are always other places where "blobs" can remain. The Novena board has a smart DMA controller and boot ROM, both of which do not have free firmware available. The Vivante video chip also needs non-free drivers to do 2D and 3D acceleration, at present, although progress is being made on reverse-engineering both cores ("it already plays Quake; the community is close to getting Wayland running," he said). Finally, there is hardware video core that requires a blob to accelerate certain codecs, though these are optional.

Whether these bits disqualify Novena as a "free hardware" device is a matter of contention, apparently; on his blog, Huang commented that the FSF would not certify the Novena in its "Respects Your Freedom" program, even though the laptop can be used with the binary-only units turned off and unloaded. Cross also asked, rhetorically, "what is a blob?" The Xilinx FPGA can only be programmed with Xilinx's IDE, he observed. You program it yourself, but it generates a binary—is that binary considered a "blob" or not, he asked.

Hardware design and development

Although the team was experienced with open-hardware products, Cross said, the laptop form factor quickly proved to be really complicated. For example, he compared the power circuit to that of the NeTV and Kovan board. Novena's power requirements necessitate handling far wider input voltages, employing separate switches to control power in different subsystems, battery control, battery charging logic, as well as over- and under-charge protection. They eventually had to design a custom power board for the device, running its own ARM CPU.

They also had to design custom boards for the laptop front panel, the Hall effect sensor (which detects if the lid is closed), and the cable connecting the mainboard to the embedded DisplayPort screen. He noted (in reference to the latter item) that most people don't think of cables as circuits, but they can be quite complex. Furthermore, the project has had to design every plastic and metal part used to assemble the device, down to the screen bezel and the switches. This can get expensive; the first quote they received for the metal-cutting bill alone was $250,000. By doing the CAD work in-house, though, they managed to find another supplier who would deliver for $100,000. The case is designed to be opened up and tinkered with, he explained, so it does not look like most traditional laptops—a factor that made it "interesting" to take through airport security.

The Novena includes several features not included on commercial laptops, Cross explained. In addition to the FPGA, the laptop includes USB On The Go (OTG), which allows the user to boot another computer off of the Novena's storage, dual Ethernet, and a header connector for electronics tinkering. This header was initially a direct copy of the Raspberry Pi header, he explained, so that users could run Raspberry Pi expansion boards ("but much, much faster"), but it was later reduced in size to save space—and bundled with a breakout cable. This was in the spirit of forking open source projects, Cross said, and it proved beneficial. A company called Myriad noticed that Novena used the same breakout header as its own software-defined radio (SDR) board, and offered to re-spin a version of the board specifically for use with the Novena.

The team has also spent a lot of time sourcing individual components. "If you like electronics," he said, "go to Shenzhen." The city is home to countless electronic supply markets that are "ehh ... I'll say 'gray' markets," he joked. Searching for surplus part lots that are in large quantity compared to what Novena needs, but are leftovers to major manufacturers like Foxconn, saved the project considerable money. Experience with the earlier devices and proximity to China helped a lot.

Software

On the software side, Cross said that the team decided to build Novena on ARM because they already had experience with it, and because an ARM-based machine could be used to compile software for virtually every mobile device on the market today—without requiring a cross-compiler. They chose the Freescale chip they use because it is the best documented: there are 5,827 pages of official documentation available on the web, all without requiring any non-disclosure agreement.

That said, he also reported that working with vendors' official board-support packages (BSPs) was not as smooth as it could be. BSPs tend to come with a specific bundle of "supported" modules (the kernel, Xorg, GStreamer, SurfaceFlinger, etc.). But they are rarely up-to-date and often only work with the other components in the BSP. "They're like off-brand LEGOs: they work okay within the kit, but you can't use them with your other toys." Consequently, the project stopped using vendor BSPs and has been working with upstream, mainline code. It takes longer, but support is much better and "is really long-term."

The development process has meant writing new drivers for several components (such as the onboard temperature sensor), he said, but he has been surprised at how quickly mainline kernel support has caught up. It helps that there are other projects working with the same Freescale parts, including Cubox, the Hummingboard, and the Riotboard.

Sometimes, support work flows in the other direction, too, he said. He pointed out that Freescale subcontracts subsystems like USB and video to other suppliers. In the case of PCIe, the Novena team had to write its own drivers, but discovered subsequently that several Samsung devices use the same PCIe components, so the patch benefits other device makers as well.

At this stage, the Vivante GPU requires a lot of work. As mentioned earlier, only non-free drivers are available for the 2D, 3D, and video cores. Luckily, the Etnaviv project is making progress on a free driver, which he hopes will be usable in the 3.17 or 3.18 time frame. The 3D core support is good, he said, but he wants to be able to use the 2D for as many operations as possible, since it consumes 1% of the 3D core's power.

Debian was chosen as the Linux distribution for the Novena because Debian has strong ties to Tor and the Novena mainboard was initially conceived of as a dedicated Tor platform. But, he added, "I have a spare SSD and a screwdriver with me, so if you want to help me get Fedora running, come talk." In an email, Cross said that he indeed did get Fedora running on the Novena hardware by the end of the event. There were a few stumbling blocks, he said, such as SELinux, but Fedora is now "working as well as Debian." GNOME Shell is not working smoothly yet, due to the 3D driver problems. But he estimates that in six months or so, even that could be solved.

Cross ended his talk with a few bits of stray advice he had gleaned from the work on Novena. First, he said, dogfooding is critical. He and Huang use their prototype Novena hardware as their daily machines; it is the only way to make sure that the solutions you work on really get exercised fully. Second, he said, work upstream. Vendor BSPs just aren't robust enough—the Novena hardware has not run Freescale's kernel for a long time.

Third, he advised the developers in the audience to stop assuming that their code was running on the x86 architecture. There are more and more ARM devices on the market, but there are also MIPS, IBM System z, and OpenPOWER boards coming out. They are all Linux, he said, but none are x86: assumptions about byte sizes and endianness need to go. Next, avoid optimization—or at least make sure you have a fallback. You may see some Intel vector instruction set that sounds great, but making your application depend on it will cause trouble for others. Sticking to a higher-level language instead means that anyone can get started—including those on homemade ARM laptops, presumably: the Kosagi wiki lists a few noteworthy examples.

Finally, Cross advised the audience to have fun. There are loads of options at every level of the free software stack, he said, so find a project that you are enthusiastic about.

The Novena hardware is already in production, according to Cross, although the final assembled units are not expected to ship for a while.

Pessimists might say that this means the Novena is not yet an "available" open-hardware device, but it is clearly much closer to completion than many of the other, canceled projects that the community has seen in the past few years. Having experience with prior devices and with the process of working with suppliers in China is clearly a big part of the equation, but there is probably something to be said for outside-the-box approach that Cross and Huang take. The Novena is almost nothing like a commercial laptop, and that is part of why it has so many fans. Which sounds like a good lesson for free software projects as well.

[The author would like to thank the Fedora project for travel assistance to attend Flock 2014.]

Comments (15 posted)

On July 15, KDE announced the 5.0 release of the Plasma desktop environment. The new version appears to be a refresh of Plasma to keep pace with current design and computing trends, including "flatness" (i.e., avoiding 3D decorations), high-DPI displays, and mobile devices.

I tested Plasma 5 in VirtualBox using the Project Neon ISO, which is based on Ubuntu 14.04 and, as one other reviewer had noted [YouTube], it's "put together by people who know what they're doing". Plasma 5.0 reveals much to like after extended use, but with a caveat. As the announcement mentions, the 5.0 release represents a project that still has a number of bugs to squash and features to add.

New visible features include: new high-contrast icons for the desktop that are part of the Breeze theme, which replaced Oxygen from Plasma 4 as default theme pack; an extendable, "converged shell" that allows different user interfaces (UIs) depending on the device it is running on; and increased support for resolution-independence, which allows for "better usability and display on screens with very small pixels, such as Retina displays". The Plasma 5 announcement gives some more details on the converged shell, saying that it "lays the base for a converged user experience bringing up a suitable UI for a given target device. User experiences can be switched dynamically at runtime, [for example] based on hardware events such as plugging in a keyboard and a mouse".

KDE also said that Plasma 5.0 is less demanding of the hardware it runs on:

Qt 5's QtQuick2 uses a hardware-accelerated OpenGL(ES) scenegraph to compose and render graphics on the screen. This allows offloading computationally expensive graphics rendering tasks onto the GPU which frees up resources on the system's main processing unit, is faster and more power-efficient.

Unfortunately, I was not able to test some of these features in VirtualBox. Performance improvements can't reasonably be determined through a virtual machine; I was unable to run it on "bare metal" for this review. I was also unable to test the "converged shell", since shells for other devices (e.g., tablets and media centers) are still under development.

Frameworks

For developers, KDE Frameworks 5, which are the foundational libraries supporting Plasma 5, provide some interesting new features. Released at the beginning of July, Frameworks 5 marks a major step for KDE, as it is trying to position its libraries as a platform-independent solution for developers of Qt-based applications. That is, developers working with Qt can hook into Frameworks 5 libraries to easily provide functionality "to simplify, accelerate and reduce the cost of Qt development." For example, instead of having to code a file compressor and decompressor, Qt developers can use KArchive. Another library, Sonnet, lets developers easily plug in spell-checking software for their applications.

This is nice timing for KDE, as it can capitalize on Qt's recent popularity for cross-platform development. Boasting more than 50 libraries, the extensively documented APIs offer lots of tools for different developer needs. The KDE project divided the libraries into four "tiers", largely based on how complex the libraries are. Tier 1 libraries, like KArchive and Sonnet, are all cross-platform and have few dependencies, while Tier 2 libraries (such as KUnitConversion, for converting between various unit systems) and Tier 3 libraries (such as KDESu, that developers can use to handle asking for passwords among other things) depend on the lower tiers. Almost all of the Frameworks 5 libraries can run on Mac OS X and Windows as well as Linux.

Look and feel

If we step away from the code and look at the desktop environment as an end user, an initial glance makes Plasma 5 look familiar, but modernized. Plasma 4 users should feel, largely, right at home, although they may miss some of the configuration depth that Plasma 4 is famous for. Influences of the recent trend toward "flatness" in user interface design — designing GUI elements to make them look two-dimensional, by avoiding decorations such as 3D borders and drop shadows — abound, such as the new look of the application launcher (seen at right).

The new high-contrast icon set is also in tune with the "flatter" look-and-feel of Plasma 5. However, there remain some 3D elements that jar with the increased flatness, including neon blue drop shadows behind windows. In addition, the minimize, maximize, and close buttons look 3D, so there was still some inconsistency there. The YouTube reviewer linked above did not see these problems; perhaps this particular ISO snapshot had some unintentional regressions.

Reflecting another popular trend, there are two visible instances of a "three parallel horizontal lines button", an increasingly widespread icon design that usually refers to a menu. One can be found in the top left corner, which allows various settings to be tweaked, and another in the bottom right corner as part of the panel; "the infamous Cashew of KDE" is gone.

Configuration options, which KDE is known for, are also to be found in Plasma 5, albeit in a more limited state now, as the project is still in development. I was not able to configure the window manager to use a "desktop cube" to navigate through workspaces, nor was I able to make windows wobble, features that one could set for Plasma 4.

When playing around with the configuration options available, one may encounter several bugs. For instance, none of my changes for desktop effects in system settings worked. KDE was also unable to find the providers.xml file for downloading more desktop effects. As the Plasma 5.0 announcement noted, "many of [these features are] planned to return with a subsequent release", so users can expect later iterations to implement some of these desktop effects.

Some GTK+ and GNOME apps don't seem to play nicely with Plasma 5. For example, gnome-calculator had no icons for the undo and delete buttons (seen at right). Firefox looked and felt native, though, so this is not an issue with all GTK+ applications. There are also some other bugs — inevitable for a developmental ISO snapshot — that limited my ability to test the system fully. Muon Discover, the relatively new apt-get frontend for downloading software, can't be downloaded due to broken dependencies; the included Muon Package Manager works, but is less visually pleasing, since it looks more like Synaptic Package Manager than a polished "app store". Many packages were also unavailable to download, likely due to broken dependencies.

Those seeking to try out Plasma 5 outside the Project Neon ISO may encounter some difficulties. I first tried to run Plasma 5 by using the latest weekly snapshot for Kubuntu 14.04 in VirtualBox. I encountered some showstopper bugs there, including a bottom panel that disappeared completely when setting it to auto-hide. I then tried testing out the desktop on Fedora 20 using an unofficial repo, which refused to launch. The Project Neon ISO worked fine, though.

There's lots to look forward to for those following Plasma 5. Frameworks 5 will have new point releases every month this year. Plasma 5.0 will be focusing largely on squashing bugs, with a 5.1 release set for mid-October 2014. Development is lively; on August 12, KDE announced a 5.0.1 release that fixes bugs and adds translations.

Those still wanting to stick with Plasma 4 have no need to worry; the 4.14 Release Schedule shows that the KDE project is still planning to develop Plasma 4. Nonetheless, Plasma 5, the next generation of the KDE Plasma desktop, brings a fresh, modern look to the Linux desktop; it reflects some of the recent UI development trends in the desktop and mobile world, while still seeming, through and through, like a project made by the KDE team. I look forward to watching this desktop develop in the months to come.

Comments (17 posted)