|
|
Subscribe / Log in / New account

Jolla Review: Some Rough Edges, But This Linux Smartphone Shows Promise (Forbes)

Jolla Review: Some Rough Edges, But This Linux Smartphone Shows Promise (Forbes)

Posted Jan 14, 2014 16:15 UTC (Tue) by lbt (subscriber, #29672)
In reply to: Jolla Review: Some Rough Edges, But This Linux Smartphone Shows Promise (Forbes) by raven667
Parent article: Jolla Review: Some Rough Edges, But This Linux Smartphone Shows Promise (Forbes)

Yep :

  • complete root access
  • ability to replace the kernel
  • ability to replace the entire stack
  • ability to run on other devices
  • being based on a GNU/Linux openly developed stack which you can push patches to

Here is Stskeeps' comments on the bootloader at talk.maemo.org

Is it 100% FSF approved: no.
Is it a (sustainable) step in the right direction? You tell me :)

Of course this is indeed a *yawn* to anyone who's principles demand that they only use a GTA04 style device - but if you want a smartphone running a modern linux then this may be for you.

All our core- and middle-ware development is open and is done on open infra.

What's closed: some kernel blobs from our suppliers, some 3rd party apps and yes, the UI layer and apps are closed at the moment (we need to exist in a harsh commercial environment and survival is a key prerequisite to any improvements in this area)

Are we 'there' yet? no. We're small and resource constrained - but I can guarantee that our hearts and minds are in the right places.

See you all at FOSDEM ... again :)

From the device, just as a matter of interest:

david@ash:~$ ssh nemo@10.0.0.101
Last login: Mon Jan 13 13:40:01 2014 from 10.0.0.108
ps -ef
,---
| SailfishOS 1.0.2.5 (Maadajävri) (armv7hl)
'---
[nemo@localhost ~]$ ps -ef | grep -v \\\[
UID        PID  PPID  C STIME TTY          TIME CMD
root         1     0  0 Jan11 ?        00:00:05 /sbin/init --unit=default.target
root       154     1  0 Jan11 ?        00:00:32 /lib/systemd/systemd-udevd
root       156     1  0 Jan11 ?        00:01:28 /lib/systemd/systemd-journald
root       408     1  0 Jan11 ?        00:00:00 /sbin/droid-hal-init
root       411     1  0 Jan11 ?        00:00:02 /usr/sbin/ohmd --no-daemon
root       412     1  0 Jan11 ?        00:00:02 /usr/sbin/usb_moded
system     540   408  0 Jan11 ?        00:16:57 /system/bin/sensord
system     551   408  0 Jan11 ?        00:00:02 /system/bin/ssr_diag
root       552   408  0 Jan11 ?        00:00:00 /system/bin/subsystem_ramdump 1
camera     553   408  0 Jan11 ?        00:00:02 /system/bin/mm-qcamera-daemon
system     554   408  0 Jan11 ?        00:00:00 /system/bin/qseecomd
system     571   554  0 Jan11 ?        00:00:01 /system/bin/qseecomd
root       662     1  0 Jan11 ?        00:00:38 /usr/sbin/dsme -p /usr/lib/dsme/libstartup.so --systemd
root       663   662  0 Jan11 ?        00:00:24 /usr/sbin/dsme-server -p /usr/lib/dsme/libstartup.so --systemd
radio      682   408  0 Jan11 ?        00:00:43 /system/bin/rild
root       683   408  0 Jan11 ?        00:00:00 /system/bin/logd2
root       689   408  0 Jan11 ?        00:00:12 /system/bin/thermald
9999       723   408  0 Jan11 ?        00:00:09 /system/bin/rmt_storage
radio      737   408  0 Jan11 ?        00:00:03 /system/bin/qmuxd
radio      738   408  0 Jan11 ?        00:00:01 /system/bin/netmgrd
root       756     1  0 Jan11 ?        00:00:05 /usr/sbin/bluetoothd -n
root       758     1  0 Jan11 ?        00:04:00 /usr/sbin/connmand -n
root       759     1  0 Jan11 ?        00:04:01 /lib/systemd/systemd-logind
root       761     1  0 Jan11 ?        00:00:00 /usr/sbin/tohd
root       763     1  0 Jan11 ?        00:00:00 /usr/sbin/apkd
dbus       784     1  0 Jan11 ?        00:03:57 /bin/dbus-daemon --system --address=systemd: --nofork --nopidfile --systemd-activation
root       846     1  0 Jan11 ?        00:02:14 /usr/bin/statefs /run/state -f --system -o allow_other,gid=100
radio      849     1  0 Jan11 ?        00:00:06 /usr/sbin/ofonod -n --noplugin=dun_gw,hfp,hfp_ag
root       850     1  0 Jan11 ?        00:00:00 /usr/sbin/connman-vpnd -n
root       854     1  0 Jan11 ?        00:00:00 /usr/bin/odnpd
root       875     1  0 Jan11 ?        00:01:12 /usr/sbin/mce --systemd
root       888     1  0 Jan11 ?        00:06:51 /usr/libexec/upowerd
root       894     1  0 Jan11 ?        00:00:20 /usr/libexec/polkit-1/polkitd --no-debug
nemo       911     1  0 Jan11 ?        00:00:14 /lib/systemd/systemd --user
nemo       914   911  0 Jan11 ?        00:00:00 (sd-pam)                        
nemo       919   911  0 Jan11 ?        00:00:00 /usr/bin/ohm-session-agent
nemo       920   911  0 Jan11 ?        00:00:35 /usr/bin/timed-qt5 --systemd
nemo       922   911  0 Jan11 ?        00:00:29 /bin/dbus-daemon --session --address=systemd: --nofork --systemd-activation
nemo       939     1  0 Jan11 ?        00:00:00 /usr/bin/profiled
nemo       940   911  0 Jan11 ?        00:00:25 /usr/bin/statefs /run/user/100000/state -f -o allow_other
nemo       960   911  0 Jan11 ?        00:00:02 /usr/bin/ngfd
nemo       962   911  0 Jan11 ?        00:00:00 /usr/bin/tonegend -b 100 -r 20 --volume-dtmf 15
nemo       963   911  0 Jan11 ?        00:00:03 /usr/bin/voicecall-manager
nemo       964   911  0 Jan11 ?        00:00:00 /usr/libexec/mapplauncherd/booster-generic --systemd
nemo       965   911  0 Jan11 ?        00:00:02 /usr/bin/connectionagent
nemo       966   911  4 Jan11 ?        03:13:39 /usr/bin/lipstick -plugin evdevtouch:/dev/input/event0:rotate=0 -plugin evdevkeyboard:keymap=/usr/share/qt5/keymaps/boston.qmap --systemd
nemo       967   911  0 Jan11 ?        00:00:05 /usr/libexec/tracker-store
nemo       969   911  0 Jan11 ?        00:00:00 /usr/libexec/mapplauncherd/booster-qt5 --systemd --boot-mode
nemo       970   964  0 Jan11 ?        00:00:01 /usr/bin/ambienced
nemo       973   911  0 Jan11 ?        00:00:00 /usr/bin/invoker -o -s --type=generic /usr/bin/ambienced
nemo       976   964  0 Jan11 ?        00:03:06 /usr/bin/messageserver5
nemo       980   969  0 Jan11 ?        00:02:57 /usr/bin/msyncd                                             
nemo       981   911  0 Jan11 ?        00:00:00 /usr/bin/invoker -G -o -s --type=qt5 /usr/bin/msyncd
nemo       982   969  0 Jan11 ?        00:00:03 /usr/bin/jolla-signon-ui                                    
nemo       986     1  0 Jan11 ?        00:00:02 /usr/libexec/gconfd-2
nemo       997   911  0 Jan11 ?        00:00:00 /usr/bin/invoker -o --type=generic --global-syms /usr/bin/messageserver5
nemo      1001     1  0 Jan11 ?        00:02:07 /usr/bin/pulseaudio --start -n --file=/etc/pulse/arm_qct_msm8930_cdp.pa
nemo      1004     1  0 Jan11 ?        00:00:33 /usr/libexec/mission-control-5
nemo      1011     1  0 Jan11 ?        00:00:00 /usr/libexec/telepathy-ring
root      1019     1  0 Jan11 ?        00:00:05 /usr/sbin/wpa_supplicant -u -f /var/log/wpa_supplicant.log -c /etc/wpa_supplicant/wpa_supplicant.conf -O/var/run/wpa_supplicant -u -f /var/log/wpa_supplicant.log -P /var/run/wpa_supplicant.pid
nemo      1070   964  0 Jan11 ?        00:00:13 /usr/libexec/telepathy-sasl-signon
nemo      1115     1  0 Jan11 ?        00:00:01 /usr/libexec/obexd --nodaemon --capability !/usr/bin/obex-capability --noplugin=ftp,irmc,mas,pbap,syncevolution
nemo      1162     1  0 Jan11 ?        00:00:00 /usr/bin/invoker --type=generic /usr/libexec/telepathy-sasl-signon
nemo      1186   911  0 Jan11 ?        00:00:00 /usr/libexec/mapplauncherd/booster-qtquick2 --systemd
nemo      1187   911  0 Jan11 ?        00:00:00 /usr/libexec/mapplauncherd/booster-silica-qt5 --systemd
nemo      1188   911  0 Jan11 ?        00:00:00 /usr/bin/invoker -o -s --type=qt5 /usr/bin/jolla-signon-ui
nemo      1189   911  0 Jan11 ?        00:00:11 /usr/bin/maliit-server
nemo      1190   911  0 Jan11 ?        00:00:00 /usr/bin/invoker -o --type=qt5 /usr/bin/commhistoryd
nemo      1191   969  0 Jan11 ?        00:00:06 /usr/bin/commhistoryd                                       
nemo      1192   969  0 Jan11 ?        00:04:41 /usr/bin/contactsd                                          
nemo      1195  1187  0 Jan11 ?        00:01:48 /usr/bin/voicecall-ui -prestart                        
nemo      1197   911  0 Jan11 ?        00:00:00 /usr/bin/invoker -o -s --type=silica-qt5 /usr/bin/voicecall-ui -prestart
nemo      1237   911  0 Jan11 ?        00:00:00 /usr/bin/invoker -o -s --global-syms --type=qt5 /usr/bin/contactsd
nemo      1257   911  0 Jan11 ?        00:00:01 /usr/libexec/tracker-miner-fs
system    1273   408  0 Jan11 ?        00:00:00 /system/bin/mm-pp-daemon
root      1299     1  0 Jan11 ?        00:00:00 /opt/alien/system/bin/alien_init
root      1303     1  0 Jan11 ?        00:00:00 vmtouch -tlq /lib/ld-2.15.so /lib/libc-2.15.so _snip_
root      1346   408  0 Jan11 ?        00:13:38 /system/bin/mpdecision --no_sleep --avg_comp
log       1413  1299  0 Jan11 ?        00:00:07 /opt/alien/system/bin/alienlogd
system    1414  1299  0 Jan11 ?        00:00:00 /opt/alien/system/bin/servicemanager
root      1415  1299  0 Jan11 ?        00:00:00 /opt/alien/system/bin/installd
root      1416  1299  0 Jan11 ?        00:00:03 zygote ien/system/bin/alien-main -Xzygote /opt/alien/system/bin --zygote --start-system-server
drm       1418  1299  0 Jan11 ?        00:00:00 /opt/alien/system/bin/drmserver
nemo      1420  1299  0 Jan11 ?        00:00:00 /opt/alien/system/genv/bin/mysatroker_ressource_manager_server
media     1421  1299  0 Jan11 ?        00:00:00 /opt/alien/system/bin/mediaserver
nemo      1422  1299  0 Jan11 ?        00:00:11 /opt/alien/system/genv/bin/aliensensorserver
root      1423  1299  0 Jan11 ?        00:00:34 /opt/alien/system/genv/bin/alien_bridge_server
root      1424  1299  0 Jan11 ?        00:00:00 /opt/alien/system/genv/bin/alien_keyboard_server
root      1425  1299  0 Jan11 ?        00:00:02 /opt/alien/system/bin/rild -l libalien_native_ril.so
nemo      1485  1299  0 Jan11 ?        00:00:00 /opt/alien/system/genv/bin/mysatroker_audio_server
system    1487  1416  0 Jan11 ?        00:07:17 system_server                                                                                 
10006     1546  1416  0 Jan11 ?        00:02:46 com.android.systemui                                                                          
radio     1573  1416  0 Jan11 ?        00:00:16 com.android.phone                                                                             
10001     1585  1416  0 Jan11 ?        00:00:04 com.myriadgroup.inputmethod.remote                                                            
10000     1599  1416  0 Jan11 ?        00:00:02 com.myriadgroup.home                                                                          
nemo      2314  1187  0 Jan11 ?        00:01:31 /usr/bin/jolla-messages -prestart                      
10004    24761  1416  0 Jan13 ?        00:00:00 android.process.media                                                                         
10022    26645  1416  0 Jan13 ?        00:00:06 com.android.vending                                                                           
10012    26726  1416  0 Jan13 ?        00:00:00 com.google.android.gsf.login                                                                  
root     27433   154  0 14:33 ?        00:00:00 /lib/systemd/systemd-udevd
root     27440   154  0 14:33 ?        00:00:00 /lib/systemd/systemd-udevd
root     27769   154  0 14:50 ?        00:00:00 /lib/systemd/systemd-udevd
nemo     28782 28775  0 15:37 ?        00:00:00 sshd: nemo@pts/0 
nemo     28783 28782  0 15:37 pts/0    00:00:00 -bash
nemo     29307 28783  8 15:54 pts/0    00:00:00 ps -ef
10012    30372  1416  0 Jan13 ?        00:00:05 com.google.process.gapps                                                                      
10012    30573  1416  0 Jan13 ?        00:00:00 com.google.process.location                                                                   
root     31185     1  0 Jan12 ?        00:23:17 /usr/sbin/sensord -c=/etc/sensorfw/primaryuse.conf -d --log-level=warning --no-magnetometer-bg-calibration
nemo     31990 31983  0 Jan13 ?        00:00:44 sshd: nemo@notty 
[nemo@localhost ~]$ 


to post comments

Jolla Review: Some Rough Edges, But This Linux Smartphone Shows Promise (Forbes)

Posted Jan 14, 2014 19:25 UTC (Tue) by ewan (guest, #5533) [Link] (7 responses)

"Of course this is indeed a *yawn* to anyone who's principles demand that they only use a GTA04 style device"

It's a *yawn* to those of us that had N900s as well. And Sharp Zauruses before that. If it's not fully open, it's a dead end, and it will die. A good chunk of the Jolla people were involved with the N900 effort too, so they know exactly what happened to that, and there is no excuse for them taking the same attitude and approach again.

The _only_ potential selling point of the Jolla devices is their free-softwarey-ness, and they're barely better on that front than just buying a Nexus, and a whole lot worse in other ways.

Jolla Review: Some Rough Edges, But This Linux Smartphone Shows Promise (Forbes)

Posted Jan 14, 2014 21:41 UTC (Tue) by dilinger (subscriber, #2867) [Link]

Exactly. This isn't just about priniciples, this is about being pragmatic. I liked the N900 UI (much moreso than android's UI). However, since it wasn't open, it has simply disappeared from my life. I find myself cursing at android's UI (well, Cyanogenmod) daily, but at least it is open. When I upgrade to my next phone, the same UI can/will await me.

Jolla Review: Some Rough Edges, But This Linux Smartphone Shows Promise (Forbes)

Posted Jan 15, 2014 10:44 UTC (Wed) by dsommers (subscriber, #55274) [Link] (5 responses)

The jolla phone is in my experience not more closed than N900, I'd probably say more likely a bit more open. Not completely open, but still open enough to be the most open phone OS in the market today.

Jolla Review: Some Rough Edges, But This Linux Smartphone Shows Promise (Forbes)

Posted Jan 16, 2014 10:20 UTC (Thu) by ewan (guest, #5533) [Link] (4 responses)

It's a closed UI on top of an openish middle, on top of closed drivers, just like the N900 was. Is there any reason to believe it's not going to go exactly the same way?

Jolla Review: Some Rough Edges, But This Linux Smartphone Shows Promise (Forbes)

Posted Jan 16, 2014 13:39 UTC (Thu) by tao (subscriber, #17563) [Link] (3 responses)

What makes this different from N900/N9? Well, SailfishOS and the Jolla phones are not products from a company whose CEO would not possibly allow the success of a Linux-based system...

Jolla Review: Some Rough Edges, But This Linux Smartphone Shows Promise (Forbes)

Posted Jan 16, 2014 14:36 UTC (Thu) by mathstuf (subscriber, #69389) [Link] (2 responses)

Didn't Elop show up after the n900/n9? What stops Jolla from having an Elopolypse?

Jolla Review: Some Rough Edges, But This Linux Smartphone Shows Promise (Forbes)

Posted Jan 16, 2014 15:07 UTC (Thu) by lbt (subscriber, #29672) [Link] (1 responses)

Never say never :)

OTOH the company is small enough and the vision and strategy are so opensource oriented that it's inconceivable at this point.

Also bear in mind that much of the code and tooling is derived from MeeGo and that Mer, Nemo and Qt are all fully open projects; the ability to survive Elop-style management has already been demonstrated - and that's actually a risk-management selling point.

Jolla Review: Some Rough Edges, But This Linux Smartphone Shows Promise (Forbes)

Posted Jan 16, 2014 16:37 UTC (Thu) by ewan (guest, #5533) [Link]

"the vision and strategy are so opensource oriented"

...that they're keeping important chunks of the code closed.

Jolla Review: Some Rough Edges, But This Linux Smartphone Shows Promise (Forbes)

Posted Jan 15, 2014 14:10 UTC (Wed) by pboddie (guest, #50784) [Link] (1 responses)

Of course this is indeed a *yawn* to anyone who's principles demand that they only use a GTA04 style device - but if you want a smartphone running a modern linux then this may be for you.

By "modern linux" I guess you're referring to something other than merely what kernel version you're using, noting this because as far as I can tell the GTA04 developers are targeting current kernel versions and trying to get everything upstream.

What's closed: some kernel blobs from our suppliers, some 3rd party apps and yes, the UI layer and apps are closed at the moment (we need to exist in a harsh commercial environment and survival is a key prerequisite to any improvements in this area)

So the burning question, then, is this: how much more open does this make Jolla than Blackberry?

Jolla Review: Some Rough Edges, But This Linux Smartphone Shows Promise (Forbes)

Posted Jan 15, 2014 15:42 UTC (Wed) by lbt (subscriber, #29672) [Link]

yes - and I was more meaning the 'smartphone' hardware aspect. Whilst the Jolla device is not bleeding edge, it is more advanced (and more closed) hardware than the GTA04.

The modern referred to systemd, user sessions, connman, ofono - that kind of thing (and the reason for the ps -ef)

You could theoretically run the same versions of userspace code on both Jolla and GTA04; I don't know where Openmoko is with Qt though. Mer/Nemo is about to hit Qt 5.2 (it helps that Jolla hired a lot of Qt developers and is actively pushing code into Qt too.)

Blackberry uses the QNX OS - so it's not even close to being as open as SailfishOS although of course they have Qt too.

Jolla Review: Some Rough Edges, But This Linux Smartphone Shows Promise (Forbes)

Posted Jan 15, 2014 15:49 UTC (Wed) by Arker (guest, #14205) [Link] (6 responses)

I really do not think you can coherently claim "complete root access" and "ability to replace the entire stack" if this is all sitting on top of binary drivers.

Nonetheless it does sound like your heart is in the right place, so I wish you the best of luck.

Jolla Review: Some Rough Edges, But This Linux Smartphone Shows Promise (Forbes)

Posted Jan 15, 2014 16:17 UTC (Wed) by lbt (subscriber, #29672) [Link] (5 responses)

Well, no more so than on any desktop PC with an Nvidia card, a closed bios and, say, a usb ADSL modem or a wifi card with a blob.

I *think* we're a tiny bit more hackable than a PC BIOS since the really early bootloader is the open "lk".

OTOH if you're alluding to the usual kernel/blob binding then yes, you're limited to the usual annoying embedded-kernel-module-version-tie if you want those bits of hardware to work (but some is done via libhybris and is, I think, more kernel-version agnostic). Sorry. Rebuilding the kernel and/or adding modules is fine though.

Also, yes, the NSA (or in our case more likely a far-eastern govt) probably have lower level access than you (via the blobs) if that's what you meant.

(usual disclaimer that hacking this kind of thing without knowing what you're doing gets you an expensive brick)

Jolla Review: Some Rough Edges, But This Linux Smartphone Shows Promise (Forbes)

Posted Jan 15, 2014 18:11 UTC (Wed) by Arker (guest, #14205) [Link]

"Well, no more so than on any desktop PC with an Nvidia card, a closed bios and, say, a usb ADSL modem or a wifi card with a blob."

Exactly.

I am not going to say that I have never purchased any of the above, but I can certainly say that I will go to some lengths to avoid them, and would certainly not describe such a system as free or open or trust it any further than my ability to audit.

"Also, yes, the NSA (or in our case more likely a far-eastern govt) probably have lower level access than you (via the blobs) if that's what you meant."

Even if it's only(!) the Chinese military that has the access today, it's almost inevitable that criminal gangs will gain access tomorrow.

Jolla Review: Some Rough Edges, But This Linux Smartphone Shows Promise (Forbes)

Posted Jan 16, 2014 0:24 UTC (Thu) by tialaramex (subscriber, #21167) [Link] (3 responses)

Either I misunderstand you or you're trying to blur the difference between firmware blobs and drivers, between "My USB ADSL modem needs me to have a copy of this mysterious file or else it's essentially useless" vs "My Jolla needs me to run a proprietary kernel module that exists only for specific builds, or else it's essentially useless".

The former is an annoyance, but it's fire-and-forget. I recall running some horrible perl script or something with a Windows driver CD mounted, and then it was done and the USB ADSL modem worked forever after even though I changed CPU architecture. Hobbyists put up with worse all the time.

The latter is a major obstacle, realistically without a large, dedicated engineering resource it will quickly rot and cease to exist.

Ten years or more after the makers of my (early, long pre-UVC) USB webcam went out of business AFAICT, it works fine in Fedora 19, arguably better than it ever did in Windows. Now, ten years after Jolla are bankrupt how much of a Jolla phone will work with a new Linux? My impression is that the answer is "not enough to make it a useful artefact".

Jolla Review: Some Rough Edges, But This Linux Smartphone Shows Promise (Forbes)

Posted Jan 16, 2014 12:11 UTC (Thu) by lbt (subscriber, #29672) [Link] (2 responses)

Rest assured - my intention is not to try and blur anything, apologies if I did.

I thought this was quite clear:
"yes, you're limited to the usual annoying embedded-kernel-module-version-tie"

Also note that we're not having quite the same conversation; I replied to :
"complete root access" and "ability to replace the entire stack"
but I think we need to be discussing:
"what's the long term impact of the hardware landscape in mobile today"

I suggest that the more relevant part of my reply is an nVidia card - once they stop providing support for an old card in a new kernel you're stuck.

Incidentally I was simplifying a bit: on this class of devices the GPU 'driver' is an opensource 'pass through' driver to userland but it probably exposes volatile bits of the kernel internals so it's essentially tied to a version.
Since the kernel is also the usual hacked about non-upstreamed vendor kernel which you could theoretically break into a maintainable patch set with **much** effort - realistically it's not going to happen.

Overall you're right though ... but is the answer "they're working towards our goals but they might go bankrupt, lets not bother supporting them"?

I'm not trying to answer that - but I am trying to explain why, as a free software developer, I'm excited to be making things better, not worse.

Jolla Review: Some Rough Edges, But This Linux Smartphone Shows Promise (Forbes)

Posted Jan 17, 2014 0:53 UTC (Fri) by deepfire (guest, #26138) [Link]

This was very clear and useful, which is a preciously rare thing to have with an actual mainstream software vendor. Thank you for that.

It will be interesting to compare this with Blackphone.

Jolla Review: Some Rough Edges, But This Linux Smartphone Shows Promise (Forbes)

Posted Jan 22, 2014 17:38 UTC (Wed) by tialaramex (subscriber, #21167) [Link]

I have a Nvidia chipset which I think is old enough to be unsupported by Nvidia, but since I never used Nvidia's drivers I haven't noticed any reduction in support. The free drivers do KMS, and I believe they can play 3D games, but I own supported hardware for playing 3D games on, so I didn't really try.

Probably there were dubious proprietary drivers for that webcam at some point too. Never tried them, if it doesn't work in free drivers then realistically (as you've observed) it will probably stop working soon and never work again, so why bother?

Eventually of course even the kernel developers stop caring. My first ever PC, if I still had it, wouldn't boot a modern Linux kernel. I don't ask for miracles, but it does seem as though Jolla doesn't give me most of what I'd actually care about. Thanks for your honesty, and good luck.


Copyright © 2025, Eklektix, Inc.
Comments and public postings are copyrighted by their creators.
Linux is a registered trademark of Linus Torvalds