Disclaimer
The content of this wiki page is my personal opinion only and although I am an employee of Intel, the statements I make here in no way represent Intel's position on the issue, nor am I authorized to speak
on behalf of Intel on this matter.
--Max
The problem, and a solution
MeeGo is designed to run on a variety of devices: netbooks, handsets, in-vehicles, connected TVs, and media phones. But desktops are not in this list. So one must either use a real MeeGo-supported device or an emulator to test the software she/he developed in a desktop box, which is less convenient than testing the software in the desktop box directly.
A solution for this problem is to make MeeGo to support desktops. Since netbooks and desktops are similar by nature, so it does not need much extra effort.
Current status
Following screen shot shows the Netbook branch of MeeGo running on a desktop box.
In fact, the Netbook branch of MeeGo has some support for desktop boxes already, as described in following sections.
User experience (UX)
As a conclusion, the behavior of Netbook UX has been adjusted for desktop screens, as following:
- When using a screen which is larger than typical netbook screens, all the apps you are using will be shown in one zone instead of multiple zones.
Details is described in the following sub-sections.
Architecture
- Window manager: mutter
- Window manager plugin: mutter-moblin
- Panel services of window manager: zones, myzone, status, people, internet, media, pasteboard, applications
Compare MeeGo zones (large display mode) with traditional workspaces
- The zone is MeeGo's implementation of workspace
- A new zone can be created only if there is a zone contains more than one app.
- Switching zones takes noticeable time, which is caused by the way the animation effect designed.
- Conclusion: MeeGo zones has fewer features than traditional workspaces, and it is also slower. But it is still bearable to most end users, while it would be cool if we re-design it to fit desktop usage model better.
Where are the shortcuts, folders, and files which should be shown on traditional desktop?
- Default folders (Documents, Downloads, Music, Pictures, Videos, Trash) can be accessed from the Devices panel.
- The Desktop folder and Documents folder are merged into one single Documents folder.
- I like it. It is difficult for users to remember where a file is if it can be either in Documents folder or in Desktop folder. If one really want files and folders to be shown in the desktop, we can simply show the content of the Documents folder in the desktop, but the UX need to be re-designed to gave users good experience.
- The Trash folder is put in a less important place.
- No shortcut can be made by end user using MeeGO UX.
- Conclusion: This is a big change, while it also make sense. So we can keep the current implementation.
Hardware support
Software
- MeeGo has 1000+ packages.
- All development libraries for the Netbook branch are there, including:
- The required development tools for the Netbook branch are there, including:
MeeGo IT Build
Image can be downloaded from: http://opensource.intel.com/linux-wiki/MeeGoITBuild
The packages of the image are in the following repos:
- Repository for 'Enterprise' packages, which should all be on their way into MeeGo Trunk: http://build.meego.com/project/show?project=devel:enterprise . Following packages are in the repo:
- chromium
- evolution
- evolution-data-server
- jana
- krb5-auth-dialog
- nss
- openconnect
- pidgin-sipe
- rdesktop
- tigervnc
- tsclient
Gaps
Comparing the Netbook branch of MeeGo with other well known Linux distros, we can find the following gaps:
User experience(UX)
- Missing some handy system utilities like:
- Menu for shut down / suspend / reboot / lock the system
- No multiple-users support
Hardware support
- There are 1,389 drivers enabled in MeeGo kernel 2.6.33.3-5.3-netbook, while there are 3,261 drivers enabled in kenel 2.6.31.5-127.fc12.i686.PAE of Fedora 12.
- Platforms with the GMA-500, Nvidia, or ATI graphics chipsets are not supported
- No x86_64 support
- For details, please refer to #Appendix 3: Investigation on kernel & graphics drivers.
Software
- MeeGo has 1000+ packages, while Fedora 13 has 9000+ packages, and Ubuntu 10.04 has 34,000+ packages.
- Some frequently used software is missing in MeeGo, such as:
MeeGo IT Build
Proposal
To make MeeGo to support desktops, at least it should have the required changes below. MeeGo will support desktops better if the optional changes below be applied.
Required changes
- User experience - Enhance Netbook UX to give users better experience for desktop usage model, including:
- Add menu for shut down / suspend / reboot / lock the system in the UX.
- Hardware support - Enable most desktop hardware, which should be comparable to what Ubuntu, Fedora, or OpenSUSE does.
- Enable more kernel drivers.
- Add non-intel video drivers/libraries, including:
- Xorg X11 video drivers
- Mesa dri drivers
- libdrm libraries
- kernel video drivers
- Support x86_64.
Required changes in detail
- Create two new build repos in OBS to build packages to run on desktops:
- i586 - Using a gcc which has not been optimized for Atom.
- x86_64
- Change existing packages:
- kernel
- Enable more drivers in the config file, including:
- video drivers
- Gpu drm drivers
- mesa
- Add mesa dri drivers for: mga, r128, r200, r300, radeon, savage, sis, tdfx, unichrome.
- libdrm
- Add a libdrm library for nVidia: libdrm_nouveau.so
- Add new packages:
- xorg-x11-drv-XXX, where XXX can be replaced by: apm, ast, ati, cirrus, geode, glint, i128, i740, mach64, mga, neomagic, nouveau, nv, openchrome, r128, rendition, s3virge, savage, siliconmotion, sis, sisusb, tdfx, trident, v4l, or voodoo.
- meego-panel-leave
- This is a new panel service of the window manager. It adds a new button in the bar of mutter-moblin. When the user clicks the button, a panel will be popped up, and she/he can choose to shut down / suspend / reboot / lock the system from the panel.
Optional changes
- User experience - Polish Netbook UX to give users better experience for desktop usage model, including:
- Make it quicker when switch between apps.
- Support multiple-users
- Software - The more, the better
- The first set of apps/features to add is as following:
- java
- eclipse
- OpenOffice.org
- rdesktop
- icecream distributed compiler (see home:sbryan project on moblin-mdi for an local dev team specifc customized package)
- Resolution configuration
- Export display for presentations
- MeeGo has much fewer packages (1,000+) than Ubuntu (34,000+) or Fedora (9,000+). I have a solution to choose important projects to be packaged first, which is documented at the following internal URL: http://otc-files.bj.intel.com/pub/MeeGo/desktop/solution_for_new_packages_by_max.html
MeeGo for Intel Public Key Infrastructure
The features about Intel PKI should be integrated into 'firstboot'.
MeeGo for 'enterprise'
I can think of three solutions:
Using Google Apps is the solution I prefer. Since there is no perfect solution to support Microsoft documents and services in Linux.
Appendix 1: How to install MeeGo for Netbook on a desktop box
- Make sure there is an Intel graphics chip/card in your desktop box.
- You may need to change BIOS settings to use the integrated Intel graphics chip.
- Download MeeGo v1.0 for Netbook from http://meego.com/downloads/releases/1.0/meego-v1.0-netbooks-google-chrome-browser and dd it into a USB disk. Boot from it to install MeeGo.
- If you found that the installation blocked when writing boot information to disk, don't panic. This seems to be a bug. A work around is to reboot the system, and enter the following commands in grub to boot MeeGo:
root (hdX,X)
kernel /boot/vmlinuz-XX.XX root=/dev/XXX ro
boot
Appendix 2: Investigation on MeeGo Netbook UX
Architecture
- Window manager: mutter
- Window manager plugin: mutter-moblin
- Panel services of window manager: zones, myzone, status, people, internet, media, pasteboard, applications
Compare MeeGo zones (large display mode) with traditional workspaces
- The zone is MeeGo's implementation of workspace
- A new zone can be created only if there is a zone contains more than one app.
- Switching zones takes noticeable time, which is caused by the way the animation effect designed.
- Conclusion: MeeGo zones has fewer features than traditional workspaces, and it is also slower. But it is still bearable to most end users, while it would be cool if we re-design it to fit desktop usage model better.
Where are the shortcuts, folders, and files which should be shown on traditional desktop?
- Default folders (Documents, Downloads, Music, Pictures, Videos, Trash) can be accessed from the Devices panel.
- The Desktop folder and Documents folder are merged into one single Documents folder.
- I like it. It is difficult for users to remember where a file is if it can be either in Documents folder or in Desktop folder. If one really want files and folders to be shown in the desktop, we can simply show the content of the Documents folder in the desktop, but the UX need to be re-designed to gave users good experience.
- The Trash folder is put in a less important place.
- No shortcut can be made by end user using MeeGO UX.
- Conclusion: This is a big change, while it also make sense. So we can keep the current implementation.
Appendix 3: Investigation on kernel & graphics drivers
- More kernel drivers need to be enabled.
- Following non-intel video drivers/libraries need to be added:
- Xorg X11 video drivers
- Mesa dri drivers
- libdrm libraries
- kernel video drivers
See more details below.
Mesa DRI driver
Ubuntu Lucid
$ ls /usr/lib/dri
i810_dri.so i915_dri.so i965_dri.so mach64_dri.so mga_dri.so r128_dri.so r200_dri.so r300_dri.so r600_dri.so radeon_dri.so savage_dri.so sis_dri.so swrast_dri.so tdfx_dri.so unichrome_dri.so
$ dpkg -S /usr/lib/dri/*
libgl1-mesa-dri: /usr/lib/dri/i810_dri.so
libgl1-mesa-dri: /usr/lib/dri/i915_dri.so
libgl1-mesa-dri: /usr/lib/dri/i965_dri.so
libgl1-mesa-dri: /usr/lib/dri/mach64_dri.so
libgl1-mesa-dri: /usr/lib/dri/mga_dri.so
libgl1-mesa-dri: /usr/lib/dri/r128_dri.so
libgl1-mesa-dri: /usr/lib/dri/r200_dri.so
libgl1-mesa-dri: /usr/lib/dri/r300_dri.so
libgl1-mesa-dri: /usr/lib/dri/r600_dri.so
libgl1-mesa-dri: /usr/lib/dri/radeon_dri.so
libgl1-mesa-dri: /usr/lib/dri/savage_dri.so
libgl1-mesa-dri: /usr/lib/dri/sis_dri.so
libgl1-mesa-dri: /usr/lib/dri/swrast_dri.so
libgl1-mesa-dri: /usr/lib/dri/tdfx_dri.so
libgl1-mesa-dri: /usr/lib/dri/unichrome_dri.so
$ dpkg -L libgl1-mesa-dri
/.
/usr
/usr/share
/usr/share/doc
/usr/share/doc/libgl1-mesa-dri
/usr/share/doc/libgl1-mesa-dri/copyright
/usr/share/doc/libgl1-mesa-dri/changelog.Debian.gz
/usr/lib
/usr/lib/dri
/usr/lib/dri/i810_dri.so
/usr/lib/dri/i915_dri.so
/usr/lib/dri/i965_dri.so
/usr/lib/dri/mach64_dri.so
/usr/lib/dri/mga_dri.so
/usr/lib/dri/r128_dri.so
/usr/lib/dri/r200_dri.so
/usr/lib/dri/r300_dri.so
/usr/lib/dri/r600_dri.so
/usr/lib/dri/radeon_dri.so
/usr/lib/dri/savage_dri.so
/usr/lib/dri/sis_dri.so
/usr/lib/dri/swrast_dri.so
/usr/lib/dri/tdfx_dri.so
/usr/lib/dri/unichrome_dri.so
Fedora 12
[root@xyu9-dev dri]# ls /usr/lib/dri/
i810_dri.so libdricore.so r200_dri.so savage_dri.so tdfx_dri.so
i915_dri.so mga_dri.so r300_dri.so sis_dri.so unichrome_dri.so
i965_dri.so r128_dri.so radeon_dri.so swrast_dri.so
[root@xyu9-dev dri]# rpm -qf /usr/lib/dri/*
mesa-dri-drivers-7.6-0.13.fc12.i686
mesa-dri-drivers-7.6-0.13.fc12.i686
mesa-dri-drivers-7.6-0.13.fc12.i686
mesa-dri-drivers-7.6-0.13.fc12.i686
mesa-dri-drivers-7.6-0.13.fc12.i686
mesa-dri-drivers-7.6-0.13.fc12.i686
mesa-dri-drivers-7.6-0.13.fc12.i686
mesa-dri-drivers-7.6-0.13.fc12.i686
mesa-dri-drivers-7.6-0.13.fc12.i686
mesa-dri-drivers-7.6-0.13.fc12.i686
mesa-dri-drivers-7.6-0.13.fc12.i686
mesa-dri-drivers-7.6-0.13.fc12.i686
mesa-dri-drivers-7.6-0.13.fc12.i686
mesa-dri-drivers-7.6-0.13.fc12.i686
MeeGo
$ ls /usr/lib/dri
dummy_drv_video.so i915_dri.so i965_dri.so swrast_dri.so
$ rpm -qf /usr/lib/dri/*
libva-1.0.1-3.4.i586
mesa-dri-i915-driver-7.8.1-4.2.i586
mesa-dri-i965-driver-7.8.1-4.2.i586
mesa-dri-swrast-driver-7.8.1-4.2.i586
$ rpm -qpl mesa-dri-i915-driver-7.8.1-6.6.i586.rpm
/usr/lib/dri/i915_dri.so
While mesa is packaged into following rpms:
egl-utils-7.8.1-6.2.i586.rpm
glx-utils-7.8.1-6.2.i586.rpm
mesa-7.8.1-6.2.src.rpm
mesa-debuginfo-7.8.1-6.2.i586.rpm
mesa-dri-drivers-devel-7.8.1-6.2.i586.rpm
mesa-dri-i915-driver-7.8.1-6.2.i586.rpm
mesa-dri-i965-driver-7.8.1-6.2.i586.rpm
mesa-dri-swrast-driver-7.8.1-6.2.i586.rpm
mesa-libEGL-7.8.1-6.2.i586.rpm
mesa-libEGL-devel-7.8.1-6.2.i586.rpm
mesa-libGL-7.8.1-6.2.i586.rpm
mesa-libGL-devel-7.8.1-6.2.i586.rpm
mesa-libGLU-7.8.1-6.2.i586.rpm
mesa-libGLU-devel-7.8.1-6.2.i586.rpm
mesa-libGLUT-7.8.1-6.2.i586.rpm
mesa-libGLUT-devel-7.8.1-6.2.i586.rpm
Conclusion
Mesa dri driver for non-intel graphics chips need to be added.
Libdrm library
Fedora 12
[root@xyu9-dev dri]# rpm -ql libdrm
/etc/udev/rules.d/91-drm-modeset.rules
/usr/lib/libdrm.so.2
/usr/lib/libdrm.so.2.4.0
/usr/lib/libdrm_intel.so.1
/usr/lib/libdrm_intel.so.1.0.0
/usr/lib/libdrm_nouveau.so.1
/usr/lib/libdrm_nouveau.so.1.0.0
/usr/lib/libdrm_radeon.so.1
/usr/lib/libdrm_radeon.so.1.0.0
/usr/share/doc/libdrm-2.4.15
/usr/share/doc/libdrm-2.4.15/README
MeeGo
[root@localhost lib]# rpm -ql libdrm
/usr/lib/libdrm.so.2
/usr/lib/libdrm.so.2.4.0
/usr/lib/libdrm_intel.so.1
/usr/lib/libdrm_intel.so.1.0.0
/usr/lib/libdrm_radeon.so.1
/usr/lib/libdrm_radeon.so.1.0.0
/usr/lib/libkms.so.1
/usr/lib/libkms.so.1.0.0
/usr/share/doc/libdrm-2.4.20
/usr/share/doc/libdrm-2.4.20/README
Conclusion
Need to add a libdrm library for nVidia cards (libdrm_nouveau.so)
Xorg X11 video driver
MeeGo has:
xorg-x11-drv-intel-2.11.0-1.5.i586
xorg-x11-drv-vesa-2.3.0-2.5.i586
While Fedora 12 has:
xorg-x11-drv-apm-1.2.2-1.fc12.i686
xorg-x11-drv-ast-0.89.9-1.fc12.i686
xorg-x11-drv-ati-6.13.0-0.10.20091006git457646d73.fc12.i686
xorg-x11-drv-cirrus-1.3.2-1.fc12.i686
xorg-x11-drv-dummy-0.3.2-3.fc12.i686
xorg-x11-drv-fbdev-0.4.1-1.fc12.i686
xorg-x11-drv-geode-2.11.4.1-1.fc12.i686
xorg-x11-drv-glint-1.2.4-1.fc12.i686
xorg-x11-drv-i128-1.3.3-1.fc12.i686
xorg-x11-drv-i740-1.3.2-1.fc12.i686
xorg-x11-drv-intel-2.9.1-1.fc12.i686
xorg-x11-drv-mach64-6.8.2-1.fc12.i686
xorg-x11-drv-mga-1.4.11-1.fc12.i686
xorg-x11-drv-neomagic-1.2.4-2.fc12.i686
xorg-x11-drv-nouveau-0.0.15-17.20091105gite1c2efd.fc12.i686
xorg-x11-drv-nv-2.1.15-2.fc12.i686
xorg-x11-drv-openchrome-0.2.904-1.fc12.i686
xorg-x11-drv-r128-6.8.1-2.fc12.i686
xorg-x11-drv-rendition-4.2.2-4.fc12.i686
xorg-x11-drv-s3virge-1.10.4-1.fc12.i686
xorg-x11-drv-savage-2.3.1-1.fc12.i686
xorg-x11-drv-siliconmotion-1.7.3-1.fc12.i686
xorg-x11-drv-sis-0.10.2-1.fc12.i686
xorg-x11-drv-sisusb-0.9.3-1.fc12.i686
xorg-x11-drv-tdfx-1.4.3-1.fc12.i686
xorg-x11-drv-trident-1.3.3-1.fc12.i686
xorg-x11-drv-v4l-0.2.0-3.fc12.1.i686
xorg-x11-drv-vesa-2.2.1-1.fc12.i686
xorg-x11-drv-voodoo-1.2.3-1.fc12.i686
Conclusion: Xorg X11 video driver for non-intel video cards need to be added.
Kernel drivers for graphics
Fedora 12
[root@xyu9-dev kernel]# ls /lib/modules/2.6.31.5-127.fc12.i686.PAE/kernel/drivers/video/
aty i810 metronomefb.ko s3fb.ko tdfxfb.ko via
backlight kyro neofb.ko savage tridentfb.ko
cirrusfb.ko macmodes.ko nvidia sm501fb.ko vfb.ko
display matrox output.ko sstfb.ko vga16fb.ko
fb_ddc.ko mb862xx riva svgalib.ko vgastate.ko
[root@xyu9-dev kernel]# ls /lib/modules/2.6.31.5-127.fc12.i686.PAE/kernel/drivers/video/aty/
aty128fb.ko atyfb.ko radeonfb.ko
[root@xyu9-dev kernel]# ls /lib/modules/2.6.31.5-127.fc12.i686.PAE/kernel/drivers/video/i810/
i810fb.ko
[root@xyu9-dev kernel]# ls /lib/modules/2.6.31.5-127.fc12.i686.PAE/kernel/drivers/gpu/drm/
drm_kms_helper.ko i2c i830 mga r128 savage tdfx via
drm.ko i810 i915 nouveau radeon sis ttm
MeeGo
[root@localhost kernel]# ls /lib/modules/2.6.33.3-5.3-netbook/kernel/drivers/video/
i810 vgastate.ko
[root@localhost kernel]# ls /lib/modules/2.6.33.3-5.3-netbook/kernel/drivers/video/i810/
i810fb.ko
[root@localhost kernel]# ls /lib/modules/2.6.33.3-5.3-netbook/kernel/drivers/gpu/drm/
mga
[root@localhost kernel]# ls /lib/modules/2.6.33.3-5.3-netbook/kernel/drivers/gpu/drm/mga/
mga.ko
Conclusion
Kernel video drivers for non-intel graphics chips need to be added.
General kernel drivers
- There are 650~ files in MeeGo kernel, while there are 2600~ files in kernel of Fedora 13.
- There are 1389 drivers enabled in MeeGo kernel, while there are 3261 drivers enabled in kenel of Fedora 12. (I checked /boot/config-2.6.33.3-5.3-netbook for MeeGo, and /boot/config-2.6.31.5-127.fc12.i686.PAE for Fedora 12)
- Conclusion: more kernel drivers need to be enabled.
Example of system requirements
System Requirements of OpenSUSE 11.2
See http://www.novell.com/documentation/opensuse112/art_osuse_installquick_112/?page=/documentation/opensuse112/art_osuse_installquick_112/data/art_osuse_installquick_112.html
- Pentium* III 500 MHz or higher processor (Pentium 4 2.4 GHz or higher or any AMD64 for Intel* EM64T processor recommended)
- 512 MB physical RAM (1 GB recommended)
- 3 GB available disk space (more recommended)
- 800 x 600 display resolution (1024 x 768 or higher recommended)
System requirements of Ubuntu
Appendix 4: Investigation on development library and apps
Package number of MeeGo and main distros:
- MeeGo has 1000+ packages.
- Fedora 13 has 9000+ packages.
- Ubuntu 10.04 has 34,000+ packages. Most of them came from Debian.
A method to figure out which app/library need to be added first
See http://otc-files.bj.intel.com/pub/MeeGo/desktop/solution_for_new_packages_by_max.html
Packages I recommend to add first
java
eclipse
OpenOffice.org
rdesktop
Packages others suggested
xchat
Appendix 5: Investigation on desktop development process of Ubuntu, Fedora, and OpenSUSE
In Ubuntu, contributors are fall into several categories.
In Fedora, external contributors are in the same role.
In OpenSUSE, OBS is used, and it is open to external developers.