LWN.net Weekly Edition for December 4, 2014
Checking out the OnePlus One
The CyanogenMod Android-based firmware for mobile phones has been around for five years or so now; we have looked at various versions along the way, most recently 11.0 M6 back in May. But within the last year, CyanogenMod (CM) has grown from its roots as a replacement firmware to actually being pre-installed—it now ships on the OnePlus One phone. The phones are only available for purchase by invitation (or via a Black Friday sale), but we were able to get our hands on one. Overall, the One makes for a nice showcase, both of CM's capabilities and the hardware designers at OnePlus.
![[Promo photo]](https://static.lwn.net/images/2014/oneplus-promo-sm.jpg)
Most everything about the phone is big—its dimensions, processor, memory, battery life, and screen are all oversized, seemingly—but its price is toward the low end. For around $350 you can get a phone with a Snapdragon 801 2.5 GHz quad-core CPU, 3G of RAM, 64G of storage, a 5.5-inch (14cm) 1920x1080 display, and a 3100mAh battery. The phone is noticeably bigger than my Galaxy Nexus that it replaced, but somehow doesn't seem too big. The weight is perfectly manageable, coming in at 5.7 ounces (162g). The battery life has been nothing short of phenomenal—it goes for several (four or five) days between charges with moderate usage—though it does seem to take quite some time to recharge (six or more hours). In addition, the construction seems solid, though I have thankfully avoided a drop test so far.
![[OnePlus One]](https://static.lwn.net/images/2014/oneplus-sm.jpg)
The phone runs CM 11S—a customized and expanded version of the "standard" CM 11.0, which is based on Android 4.4 (KitKat). The One and its software come from a partnership between OnePlus and Cyanogen Inc.. Interestingly, OnePlus also made some arrangement with Google so that the standard apps (e.g. Maps, Play store, etc.) are shipped with the phone, rather than requiring a separate download as is the case for installing CM on phones. OnePlus has committed to continue updating the phone software for two years; the first over-the-air update for the One came within a few days of receiving the device.
The standard theme is rather square—sparse—with icons and other elements that have simple images and sharp 90° corners. It is an interesting choice, if a little hard to get used to at first. The CM hexagon also appears: in the boot animation and "please wait" spinner, for example. All of that can be changed, of course, with various free and fairly inexpensive themes available for the phone. For anyone familiar with using Android, the One is, unsurprisingly, easy to use. There are differences from Android and CM, of course, but they largely show up in the margins—settings in particular.
![[Home screen]](https://static.lwn.net/images/2014/oneplus-homescreen-sm.png)
One of the more obvious differences is in the camera hardware and app. That combination provides many more shooting "modes" than other phone cameras I have used: things like high dynamic range (HDR), raw, posterize, sepia, and "clear image", which combines ten separate images into the final output image to produce more detail with less noise. In addition, the Gallery app shows 15 images (seen below at right) with different characteristics (though it is a bit unclear what, exactly, they represent) for editing purposes.
The sensor for the rear-facing camera is 13 megapixels—oversized for a phone, once again—while the front-facing camera is 5 megapixels. The main (rear-facing) camera has six lenses and an f/2.0 aperture for low-light picture taking. I am no photography expert (as my photos here and elsewhere will attest), but there appear to be lots of things to try out with this highly portable, "always present" camera in the coming years.
![[Gallery app]](https://static.lwn.net/images/2014/oneplus-gallery-sm.png)
As with all CM releases, it is the customization possibilities that really set it apart. The lock screen can be modified in various ways to provide shortcuts for functions like the camera or to start apps like the Chrome browser, phone, or text messaging. In addition, functions can activated with gestures on the blank sleeping screen: "V" for the flashlight or a circle for the camera. Those can be individually enabled and disabled, though adding your own custom gestures ("M" for maps?) might make a nice addition.
The "Profiles" feature is likely to be useful to many. One can associate a trigger, which is a particular WiFi network (by SSID) or near-field communication (NFC) tag, with a profile. Multiple preferences can be set automatically when the trigger is encountered. So, for instance, connecting to the home network might turn off the lock screen, disable mobile data, and enable data syncing. Connecting to the work network might, instead, ratchet up the security settings. There are a wide array of features that can be configured for each profile.
![[Photo from the One]](https://static.lwn.net/images/2014/oneplus-camera-sm.jpg)
Privacy Guard provides lots of control over the permissions that are granted to apps installed on the system. As was the case in our CM 11.0 M6 review, though, disallowing network access on a per-app basis is not one of the options. Disabling network access (thus, ads) might well annoy app developers (and Google itself), but there are controls to configure almost any other permission that was granted at install time. In addition, there is a wealth of information about which permissions have actually been used by each app and how recently, which should make it easier to determine which apps are sneaking around behind the owner's back—and lock them down.
The owner can unlock the bootloader in the usual way using the following command:
$ fastboot oem unlockIt is important to note that doing so will wipe all of the data off the phone, so it should only be done before doing anything else with the phone or after a backup. After that, a custom recovery image (e.g. ClockworkMod recovery) can be flashed to the device; from there, it is straightforward to switch to some other firmware. When the Lollipop-based CM 12 nightlies stabilize a bit, that seems like an obvious choice to be taken for a spin.
As a debut, both for OnePlus and for pre-installed CyanogenMod, the One makes quite an impression. How, exactly, either of the two companies is making any money at that price point is rather unclear, but that is their business—literally. If you can get your hands on an invite, it is definitely a phone worth checking out.
Stunt Rally: Racing for Linux
Quality open-source racing games are not hard to come by. There's SuperTuxKart for those who like cartoonish kart racing games, Speed Dreams for something more realistic, and Extreme Tux Racer for casual gamers. Stunt Rally is another racing game that stands out from the crowd with its attention to detail, along with some whimsical tracks and vehicles.
Gameplay
![[Jungle track]](https://static.lwn.net/images/2014/stuntrally-jungle-sm.png)
Starting the game leads to a menu that could use a little aesthetic polish. There are a number of gameplay options available, but new users will probably want to start by playing a single course or by launching the tutorial. Once a vehicle and track are chosen, players compete against AI opponents. The game can be controlled with the keyboard or can be configured to use a game controller in the "Input" settings. Stunt Rally's graphics are impressive, and the focus on gravel tracks and 4-wheel-drive vehicles gives the game a nice, gritty feel.
Vehicles include several different types of cars, a futuristic spaceship, a hovercraft, and an alien spheroid starcraft. Overall, the game is fun, save for one annoyance: going off-road and landing in a ditch or deep in water doesn't lead to the vehicle respawning on the road after a few seconds, which is what I expected. Instead, you can hit a "rewind" button to go back in time; while this returns the car to the track, it doesn't lead to a penalty for the player, which did not feel right to me. Nonetheless, it's hard to complain about being able to ride a bouncy alien sphere on Mars. Overall, the game is a blast.
![[Mars track]](https://static.lwn.net/images/2014/stuntrally-mars-sm.png)
There are over 150 different tracks to race on, including a desert, a jungle, the planet Mars, Greece, a metropolis shrouded by fog, and many more. Online multiplayer racing is theoretically possible using a master server list. Unfortunately, not a single multiplayer match was listed during my playtime. One can also host multiplayer games.
Technical details
Stunt Rally's lead developer is based in Poland and goes by the pseudonym Crystal Hammer. He described the game's technical details and history in an email conversation.
The game is not yet available for download from most Linux distribution
repositories. This is due to a licensing issue: the entire project is
open-source (under GPLv3) except for the sky textures, which have a
non-commercial redistribution license. Crystal Hammer doesn't "have
plans on replacing them, since I don't think there are any of such good
quality and with a compatible license
". He said it would be fairly
easy to replace them with open-source textures, though "I suspect that would lower the game's
quality
".
To play the game, users must download a Linux binary tarball or Windows
executable from the project's home page. The source
code can be obtained from the project's Git repository.
The minimum hardware
requirements are a dual-core, 2.0 GHz CPU, and a GPU at least as strong
as "a GeForce 9600 GT or Radeon HD 3870 with Shader Model 3.0
supported and 256 MB GPU RAM
". The project notes that one can run
the game on lower graphical settings with weaker hardware, and that
"integrated graphics processors (from Intel and AMD) will work, but
may be slow, especially the older ones.
" Nonetheless, I was able to
play on the "High" graphical setting on my laptop with an Intel HD 4000
graphics and a dual-core 2.50 GHz processor.
Crystal Hammer began Stunt Rally in 2009, when he forked the game VDrift. He saw the engine as a good base for his own work:
The project, written in C++, relies on a number of dependencies: "We
use Boost, OGRE, SDL, Bullet collision (is also used in VDrift), MyGui, and
for OGRE: PagedGeometry (for vegetation) and Shiny (material generator
library)
". For those unfamiliar with some of these tools: Boost is a collection of general-purpose
C++ libraries, SDL is the Simple
DirectMedia Layer (a cross-platform library commonly used for video game
development among other uses), MyGUI is a
graphical user interface (GUI) library for games and 3D applications, OGRE is a 3D graphics rendering engine,
and Bullet is a physics
engine that is widely used for things like collision detection.
The project is a true labor of love for Crystal Hammer; it's all done in
his spare time, as he works full-time for a company as a C++ and C#
developer. He has no intention to monetize the project , nor even to accept
donations: "I may think about this again later, if a few people do
want that
". He particularly enjoys working on the art assets and new
tracks, while he finds coding AI and realistic car damage "difficult to do (also too time consuming)
". He sees Stunt Rally as substantially different from the VDrift base:
Crystal Hammer's knowledge of racing physics is self-taught, by studying libraries like Bullet, as well as by studying VDrift's code base. He also read books on vehicle and tire dynamics, including materials on Pacejka's Magic formula, which is a means to model tire forces when a vehicle is not perfectly following the curves of the road. Just working on tire physics was laborious and consumed weeks of Crystal Hammer's spare time, he said.
For those interested in contributing, there's lots of work to do. Crystal Hammer mostly would like to have new programmers to develop features or squash bugs, but localization, graphic design, and game testers are also welcome. Currently, he is the only developer, so he'd appreciate the help: "There was a time, like a year, around 2012, when we were 4 guys. We still
keep in contact and they still commit small patches once in a while
". A roadmap page shows a list of tasks Crystal Hammer would like to have worked on, and a bug tracker is used to keep track of their progress. It'll be interesting to see what turns this racing game will take in the years to come.
A preview of darktable 1.6
The darktable project recently announced the first release-candidate (RC) builds for its upcoming version 1.6 release. The new version will add a slideshow presentation tool to darktable's primary photo-editing features, plus several new image operations and support for new digital cameras. This time, several of the additions add to darktable's automatic adjustment capabilities, making the application a bit more friendly for users who are new to high-end photo editing.
The first release candidate arrived on November 16 with the official version number 1.5.1. Indications from the IRC channel are that a second RC build should be expected imminently, with a final 1.6 release before the end of 2014. That would make the 1.6 release just under a year after the last stable upgrade, version 1.4, which we looked at in January.
![[darktable 1.6]](https://static.lwn.net/images/2014/11-dt-darkroom-sm.png)
The RC is tagged in the project's GitHub repository; users can download a source package from that location and compile it locally. As an alternative, binary packages are built regularly for many Linux distributions; in some cases, the packagers build the development series as well as the stable releases.
New user-visible features include slideshow mode, one new image-correction operation, support for better controlling the import process of images, and enhancements to two existing tools. The slideshow mode is noteworthy for the fact that it extends darktable's feature set in a new direction—much as the addition of the geolocation "map mode" did in 1.4. The slideshow feature lets users step through an image collection ("collection," in this case, being darktable's terminology for a top-level image gallery). The feature set is comparable to most other slideshow tools; with automatic and manual advance.
There are clearly dozens upon dozens of applications that can present a slideshow of images these days. The advantage to using darktable's feature are that the collection shown can be generated by filtering one's image library (say, on image ratings, tags, geolocation, or any other metadata field) and that the slideshow can display images as they have been adjusted within darktable. In other words, the user can make color corrections, enhancement elements, and apply filters, then run the slideshow without having to export anything first. For experimentation, this is handy feature.
Image editing
![[darktable 1.6 defringing]](https://static.lwn.net/images/2014/11-dt-defringe-sm.png)
On the editing side (in darktable's "darkroom" mode), the new defringe image operation lets the user zero in on a specific type of color distortion: longitudinal chromatic aberration (LCA). LCA is an aberration caused by the fact that different wavelengths of light have slightly different focal lengths. In an extreme zoom shot, this is visible as a violet halo on objects next to a very bright part of the image. It is different from lateral chromatic aberration, which is the red and green fringing sometimes seen at the outside edges of an image.
![[darktable 1.6 gamut clipping]](https://static.lwn.net/images/2014/11-dt-clipping-sm.png)
Another new feature allows the user to selectively re-map the input color profile of an image into a color range more suitable for working with. Most of the time, an image's input profile (which should correspond to the camera's color space) can be easily converted to a standard working space (like AdobeRGB or L*a*b*).
But sometimes the profile conversion chosen by darktable causes some artifacts in extreme corner cases—such as in highly saturated, blue lights, which can end up converted to negative values—resulting in unsightly black pixels. For those situations, users can tweak the input profile settings manually to avoid such artifacts. Although experienced users may appreciate more control over the input profile settings, for many others the main benefit will be the simple "gamut clipping" option, which can instantly fix the black-pixel problem.
Several existing tools are upgraded in the new release. Most prominent is the basecurve tool, which is used to apply a "base" tone curve to the raw sensor data in an image file. Darktable's tool now includes an array of preset basecurves that correspond to various camera-maker presets. The manufacturers apply these curves in-camera when saving JPEG images, so by including such presets, darktable can create a tone curve that makes a raw image file match the in-camera JPEG. Of course, the manufacturer's preset may not be to the user's liking; luckily it can be deactivated if desired, and other tools used to adjust the image.
![[darktable 1.6 basecurve presets]](https://static.lwn.net/images/2014/11-dt-basecurve-sm.png)
For a lot of users, though, automatically adjusting raw files to match the camera's JPEG images is a major convenience. Many people shoot in RAW+JPEG mode, and even those who do not are used to seeing the in-camera JPEGs used as thumbnails. The notion of automatically doing the useful thing has also been applied to the levels (i.e., basic histogram) tool, which can now estimate a good setting automatically, rather than requiring the user to manually adjust levels.
![[darktable 1.6 sliders]](https://static.lwn.net/images/2014/11-dt-sliders-sm.png)
Finally, several of the existing tools have historically sported adjustment sliders that stopped at some arbitrarily chosen minimum and maximum values. This is easiest to see in the exposure-compensation slider, which is set to +/-3 by default. Those limits are usually sensible, but darktable now offers a way to get around them: right-clicking on the slider allows the user to enter any numeric value. The slider readjusts its scale to match the entered value.
Further polish
Beyond the tool set, the new darktable RC also extends the application's functionality in some lower-level features. For example, the new release supports "huge" image sizes—specifically, those with more than 32-bit indexes, or 4 gigapixels. Fortunately for those who wrestle with such enormous pictures, darktable now makes better use of multiple processor cores: color conversion and exporting to OpenEXR images are now multi-core operations. The application also supports embedding color profiles in PNG and TIFF image files, which it had previously lacked.
One lower-level feature addition that will be an immediate boon to certain customers is support for Fujifilm's X-Trans image sensor. The X-Trans series uses a different pattern to arrange the red, green, and blue subpixels. Without explicit support for the design, raw images from many Fujifilm cameras are unusable.
Speaking of raw format support, darktable now uses the rawspeed library for image-file decoding, rather than LibRaw (although, like LibRaw, rawspeed builds on the same dcraw basic decoding functions used by most free-software photo editors). Rawspeed is a subproject from the same team that works on the competing photo editor Rawstudio; regardless of which editor one prefers, it is always refreshing to see such projects working together.
On the whole, darktable continues to improve with each release; in addition to new tools and editing features, however, the project is also making steady improvements to usability—a process that will be appreciated by new and experienced users alike.
Touring the hidden corners of LWN
One of the more surprising outcomes (to us) of the recent systemd "debates" in our comments section was finding out that some subscribers did not know of our comment filtering feature. Subscribers have been able to filter out specific commenters since 2010, but knowledge of that feature seems to have dissipated over time. We certainly could do a better job of documenting all of our features, but we thought it might be a good time to both introduce a couple of new features while refreshing people's memories of some of the features we already offer.
New stuff
To start with, there are some new features to investigate. Inspired by some of the suggestions about our comment-filtering feature, we have now added the ability to filter out comments from non-subscribers (i.e. guests). As with configuring anything about comment filters (or any other LWN customization), visit the "My Account" page. The controls for the feature are under the "Comment Filtering" heading. Comment filtering is available for all subscribers at the "professional hacker" level or above.
As with filtering individual users, the guest filtering provides a JavaScript-based interface that will show the presence of comments, the number of replies, and the filtered comment's author. Clicking on the "+" icon will expose the comments (and any replies); the comment subtree can be collapsed again by using the "-" icon.
A much more wide-ranging change is that we are working on a new, responsive design for LWN—one that will scale well from small, high-DPI screens on phones and tablets up to desktop screens of varying resolutions. We offered a preview of that functionality to our "maniacal supporter" subscribers recently—we are now ready to give all of our subscribers a look.
To try it out, subscribers at any level can visit the "Customization" page from "My Account". Under "Display Preferences" there is an option to "Use the new (in-development) page engine"; simply check that box and save your preferences to see how things look. We are most definitely interested in feedback, especially regarding how it looks and works on the vast array of different devices out there. Please send any comments to the "sitecode" email address at lwn.net.
While there may not be many subscribers who are using Internet Explorer 8 to access LWN, a warning is in order for any that are. The new display code does not yet work correctly with IE 8.
Oldies but goodies
Another customization feature that has been around for a bit is the "Display old parent in unread comments screen", which shows some more context (the parent comment) when displaying unread comments. It is located in the "Display preferences" section of the "Account customization" screen. Subscribers at any level have access to the unread comments feature, thus they also can set this option.
For those who get annoyed by the ads we show—count us among them at times—it is possible to turn off all advertisements for "professional hackers" subscribers and above. That option can be found in the "Advertising preferences" section of the customization page.
Another feature that readers often miss is our mailing lists. We have two for subscribers: "Daily" and "Daily Headlines". Each of those sends at most one message per day with the news items (or headlines) posted that day. The "Notify" and "Just freed" lists are for anyone; "Notify" is a once-per-week notification that the weekly edition is available, while "Just freed" will send one message on any day where content has come out from behind the LWN paywall. Subscriptions to those lists can be adjusted in the "Mailing lists" section of your account page.
We also have a variety of RSS feeds. In addition, things posted to our daily page are also echoed in our Twitter feed.
Keeping up with the conferences and other events in our community is made easier with the LWN community calendar, which we maintain with lots of help from our readers. In addition, CFPs (calls for papers or proposals) can be tracked in the LWN CFP deadline calendar. Both calendars are summarized for the next few months in each week's Announcements page. As always, if your favorite event does not appear there, please submit it for inclusion.
The latest weekly edition always has new content for our subscribers, but we try to make it easy to find older content as well. Our "Archives" page is a good place to start. It has links to the ten most recent weekly editions, but it also links to several indexes that may be useful. For example, our conference coverage is indexed by conference name and by year; we have an index of guest author articles as well. Finally, both our kernel and security articles have their own indexes.
One more site "feature" that bears mentioning: the subscription page. All of the content and features you see here were supported almost entirely by our subscribers—many thanks to you! If you like what you see here and aren't a subscriber yet, please consider changing that. We have been reporting on the Linux and free software world for 16 years now and have been subscriber-supported for 12 of those years. We'd like to continue for many more, but can only do that with your support.
Do you have a favorite LWN feature that we missed listing here? Let's hear about it in the comments. The same goes for feature requests, though more complicated or elaborate changes are probably best sent to our inbox: the "lwn" alias here at lwn.net. We probably can only get to a small fraction of your suggestions, but our "ears" are certainly open.
Page editor: Jonathan Corbet
Inside this week's LWN.net Weekly Edition
- Security: The GnuPG 2.1 release; New vulnerabilities in apparmor, glibc, kernel, mozilla, ...
- Kernel: ACCESS_ONCE() and compiler bugs; Syscalls in tiny kernels; Kdbus v2; 3.18 statistics.
- Distributions: Term limits and the Debian Technical Committee; Devuan, Fedora, Mageia, ...
- Development: Moving Python to GitHub; The Rocket containerization platform; Scripting with Kawa; Firefox 34; ...
- Announcements: Support FSFE, Mapping the world with open source, The Impact of the Linux Philosophy, new events, ...