MDN Doc Sprint & Firefox OS demo in Pune

Hi all,
This would be slightly longish share about the MDN Doc Sprint and Firefox OS Demo I attended and some thoughts.

As warned before, this would be a slightly longish post as there would be quite a few thoughts and shares of what I thought about the event which happened in Pune on 24th September.

I got a mail about a day before the event that a Firefox OS demo is happening. I was curious as had been reading about it and had seen the demo quite sometime back and had been also trying to look up reviews of the same on the web.

Especially after the news of Nokia getting sold to Microsoft (the transaction is yet to be completed and if regulators don’t find anything substantial than in Jan’14 it would be totally an MS Shop), the only game in town would be Android which at best can be told/shared as semi-open. There have been reports of two parallel efforts by FOSS communities i.e. Tizen and Jolla but till there are no devices which can be seen by people here it’s more or less vaporware.

As far as reviews about Firefox OS go, the most interesting one which I had read sometime back was on which kinda depicts the idea and notion that Firefox OS would be more or less web-based OS with clicks and buttons which would take you to different places and show things. The button would more or less be a shortcut to the URL/URI of a web-resource and the button is merely a sort of wrapper for the same. In the demo they showed some code samples and it seemed very much the way. There were talk of having apps. optimized for mobile screens as well but I’m going ahead of myself.

After Ali Spivak’s introduction (Manager of Mozilla Developer Network), she started the day asking and sharing an estimated number of different kind of developers available as a resource pool, for e.g. C++ developers, Java developers and web-developers. She gave some numbers with the trend that web-developers being the most pervasive number of developers and shared as one of the reasons they used web and javascript while making Firefox OS the way it exists today.

There were some interesting comments made by Al Spivak, the first of which was about number of apps. used by people and generally speaking people use a limited number of apps. on their phone, but it doesn’t take into account that people are different. To take an e.g. I have 2-3 browsers on my system when would suffice, if somebody asks why, then it’s because all sites do not render the same on any one browser. To share an e.g. renders more beautifully and correctly on chromium while on Iceweasel/Firefox I have more choices esp. on privacy-based addons. Add to the fact that I can have 2-300 tabs open under Iceweasel without it groaning on my ancient system while chromium would start to freeze under 1/10th of the load. I could go on and on about others browsers and the use-cases for them too, the simple thing is people do want and need choices. Similarly, if you ask me I would have more than one app. for doing the same thing as would not like to be tied to just one vendor (or app.) for anything as possibilities of an app. being there on a platform is unsure on a long-term basis so it’s good to have more than one app which can read and use the same data. So in that sense, on a phone if I were doing any computing activity I would like to have more options definitely.

The other thing which was shared was having the data in a sort of a cache, some sort of application cache. While it is not known whether this would be temporary cache like in Iceweasel/Firefox where the cache holds state as number of tabs/pages and position of the tab/page in the cache for the session till the cache is not cleaned or the session expires or would it be more of a cache which could be used to store user data although there was no comment whether it would be user-configurable or not or how large the cache could be ?

One use-case I am looking forward is to do a bit of mapping using Openstreetmap where you record the waypoints, trace it on a virtual map and then upload the traces and name the places in the map. The part of taking waypoints on the phone should be the only battery intensive operation and if the remaining things can be done between a lappy/desktop PC so much the better. theoretically speaking, having access to a battery API as shared should make things a bit more efficient but unsure how heavy or not JavaScript would vis-a-vis say something like josm which simply works without an issue (at least on the desktop and lappies).

$ aptitude show josm
Package: josm
State: installed
Automatically installed: no
Version: 0.0.svn6115+dfsg1-1
Priority: extra
Section: utils
Maintainer: Debian OpenStreetMap Team
Architecture: all
Uncompressed Size: 6,693 k
Depends: openjdk-6-jre | sun-java6-jre | openjdk-7-jre, libcommons-codec-java, libgettext-commons-java (>= 0.9.6), libmetadata-extractor-java, liboauth-signpost-java (>= 1.2), libsvgsalamander-java, openstreetmap-map-icons-classic, ant

Recommends: josm-plugins, josm-l10n, webkit-image-gtk | webkit-image-qt
Description: Editor for OpenStreetMap
JOSM is an editor for OpenStreetMap (OSM) written in Java. The current version supports stand alone GPX tracks, GPX track data from OSM database and existing nodes, line segments and metadata tags from the OSM database.

OpenStreetMap is a project aimed squarely at creating and providing free geographic data such as street maps to anyone who wants them. The project was started because most maps you think of as free actually have legal or technical restrictions on their use, holding back people from using them in creative, productive or unexpected ways.


Tags: field::geography, implemented-in::java, interface::x11, network::client, protocol::http, role::program, scope::application, uitoolkit::TODO, use::downloading, use::editing, use::viewing, works-with-format::xml, works-with-format::xml:gpx, works-with::image, works-with::image:vector, x11::application

Side note:- Before going further, for people having questions on the tags, this is a debian project and package called debtags. When you have something like 45k packages in the archive, it’s difficult to figure out a package from just the name unless more attributes about the package is shared. For instance I can do this :-

$ debtags search field::geography
agtl - Tool for paperless geocaching
cgi-mapserver - CGI executable for MapServer
dict-gazetteer2k - Placeholder package to install entire Gazetteer 2000
dict-gazetteer2k-counties - Counties Database for the 2000 US Gazetteer
dict-gazetteer2k-places - Places Database for the 2000 US Gazetteer
dict-gazetteer2k-zips - ZIP and ZCTA database for the 2000 US Gazetteer
drawmap - draws customized maps, using raw USGS data files
e00compr - A program to read/write Arcinfo compressed E00 files
emerillon - map viewer for the GNOME desktop
foxtrotgps - GTK+ mapping and GPS application
gcb - Utility to calculate long and short path to a location
gdal-bin - Geospatial Data Abstraction Library - Utility programs
geoclue - Geographic information framework
geoclue-examples - GeoClue example clients
geoclue-hostip - Position server for GeoClue (hostip)
geoclue-localnet - Position server for GeoClue (local network)
geoclue-manual - Position server for GeoClue (manual)
geoclue-yahoo - Map and geocode server for GeoClue (Yahoo)
geoip-bin - IP lookup command line tools that use the GeoIP library
geoip-database - IP lookup command line tools that use the GeoIP library (country database)
geotranz - GEOgraphic coordinates TRANslator
geotranz-doc - GEOgraphic coordinates TRANslator (documentation)
gis-gps - GPS related programs
gis-osm - OpenStreetMap related programs
gis-statistics - Statistics with geographical data
gis-web - Present geographic information via web map server
gis-workstation - Geographic Information Systems (GIS) workstation
gmt - Generic Mapping Tools
gmt-coast-low - Low resolution coastlines for the Generic Mapping Tools
gmt-doc - HTML documentation for GMT, the Generic Mapping Tools
gmt-doc-pdf - PDF docs for GMT, the Generic Mapping Tools
gmt-doc-ps - PostScript docs for the Generic Mapping Tools
gmt-examples - Example scripts illustrating the use of GMT
gmt-manpages - Manpages for the Generic Mapping Tools
gmt-tutorial - Data files needed to reproduce the tutorial examples of GMT
gmt-tutorial-pdf - Tutorial for GMT, the Generic Mapping Tools (PDF)
gmt-tutorial-ps - Tutorial for the Generic Mapping Tools (PostScript)
googleearth-package - utility to automatically build a Debian package of Google Earth
gosmore - viewer / wayfinder / search client
gpsbabel - GPS file conversion plus transfer to/from GPS units
gpsbabel-doc - GPS file conversion plus transfer to/from GPS units
gpsbabel-gui - GPS file conversion plus transfer to/from GPS units - GUI
gpscorrelate - correlates digital photos with GPS data filling EXIF fields (command line)
gpscorrelate-gui - correlates digital photos with GPS data filling EXIF fields (GUI)
gpsd - Global Positioning System - daemon
gpsd-clients - Global Positioning System - clients
gpsdrive - Car navigation system
gpsdrive-data - Car navigation system
gpsman - A GPS data graphical manager
gpsprune - visualize, edit, convert and prune GPS data
gpstrans - communicate with a Garmin Global Positioning System receiver
gpx2shp - convert GPS or GPX file to ESRI Shape file
gpxviewer - views GPS traces collected in the GPX format
grass - Geographic Resources Analysis Support System (GRASS GIS)
grass-dev - GRASS GIS development files
grass-doc - GRASS GIS user documentation
ircmarkers - place markers on maps at given coordinates
jclic - Tool for the development & use of multimedia educational activities
josm - Editor for OpenStreetMap
josm-plugins - Plugins for JOSM
kgeography - geography learning aid for KDE
libcsiro0 - Scientific plotting library (CSIRO libraries)
libgdal-doc - Documentation for the Geospatial Data Abstraction Library
libgeo-coordinates-utm-perl - Perl extension for Latitiude Longitude conversions
libgeo-ipfree-perl - module to look up the country of an IPv4 address
libgeo-metar-perl - accessing Aviation Weather Information with Perl
libgeography-nationalgrid-perl - Class for a point and to transform coordinate systems
libgeoip-dev - Development files for the GeoIP library
libgeoip1 - non-DNS IP-to-country resolver library
libgeos-dev - Geometry engine for GIS - Development files
libgeos-doc - Documentation for the GEOS GIS geometry engine library
libgeotiff-dev - the GeoTIFF library -- development files
libgmt4 - Generic Mapping Tools Library
libgps-dev - Global Positioning System - development files
libgrits-dev - Development files for grits
libgrits-doc - HTML documentation for grits
libjs-leaflet - JavaScript library for mobile-friendly interactive maps
liblocale-subcountry-perl - module for converting state/province names to/from code
libmemphis-doc - A map-rendering library for OpenStreetMap (Documentation)
libosmpbf-java - Java access library for OpenStreetMap PBF file format
libsaga - SAGA GIS development files
libterralib - C++ library for Geographical Information Systems
libterralib-dev - C++ library for Geographical Information Systems -- development package
libterralib-doc - C++ library for Geographical Information Systems -- documentation package
mapnik-doc - C++/Python toolkit for developing GIS applications (doc)
mapnik-utils - C++/Python toolkit for developing GIS applications (utilities)
mapserver-bin - MapServer utilities
mapserver-doc - documentation for MapServer
maptool - Converts OpenStreetMap maps to Navit
marble - globe and map widget
merkaartor - map editor for
mkgmapgui - Graphical User Interface for mkgmap
monav-client - fast navigation system featuring exact routing - client
mtkbabel - Tool for managing i-Blue 747 and compatible GPS data loggers
navit - Car navigation system with routing engine
navit-gui-gtk - Car navigation system with routing engine - GTK+ GUI
ogdi-bin - Open Geographic Datastore Interface Library -- utilities
ooohg - Set of 1600 free of charge maps for libreoffice/
openbmap-logger - gsm/gps-data logger for the openBmap project
openscenegraph - 3D scene graph, utilities and examples (binaries)
osgearth - Dynamic 3D terrain rendering toolkit for OpenSceneGraph (binaries)
osmosis - Command line OpenStreetMap data processor
php5-geoip - GeoIP module for php5
postgis - Geographic objects support for PostgreSQL -- common files
proj-bin - Cartographic projection library (tools)
python-gdal - Python bindings to the Geospatial Data Abstraction Library
python-gps - Global Positioning System - Python libraries
python-mapscript - Python library for MapServer
qgis - Geographic Information System (GIS)
qgis-plugin-grass - GRASS plugin for Quantum GIS
qgis-plugin-grass-common - GRASS plugin for Quantum GIS - architecture-independent data
qlandkartegt - GPS mapping (GeoTiff and vector) and GPSr management
r-cran-mapdata - GNU R support for producing geographic maps (supplemental data)
r-cran-maps - GNU R support for producing geographic maps
routeplanner - A highway trip planner
routeplanner-gnome - A highway trip planner (GNOME interface)
routino - Set of tools to find a path between two points.
routino-www - Web frontend for routino
saga - System for Automated Geoscientific Analyses
science-geography - Debian Science Geography packages
shapelib - Library for reading and writing ArcView Shapefiles - tools
survex - cave surveying and mapping software
terraintool - Generates survex format terrain models from SRTM and ASTER data
thuban - An interactive geographic data viewer
tilestache - map tiles caching system
totalopenstation - download and process data from total station devices
tunnelx - Cave Survey drawing software
tzdata-java - time zone and daylight-saving time data for use by java runtimes
viking - GPS data editor, analyzer and viewer
wims - server for educational content: courses, exercises, and exams
wwl - Calculates distance and azimuth between two Maidenhead locators
xastir - X Amateur Station Tracking and Information Reporting
xplanet - planetary body renderer
xtide - provides tide and current predictions
xtide-coastline - coastline data for xtide

The above actually gives me a large number of apps. if I’m interested in pursuing geography whereas if I were search just in names would reveal lot less. I actually want to do a separate post about the debtags project but that would have to wait for another day.

There were other interesting questions as well. For instance, one of the questions asked by me is using the desktop to do updates on phone firmware and whatever little native-like apps. are there on the phone. For e.g. in Symbian on MS-Windows (-1 point) you could make a profile and sync the data between the machine and your handset. Also you could use the relatively cheap ADSL links to download updates to the desktop and then send them to the phone using the micro-usb data connection. I did ask if something similar is in works and hopefully under the MPL so it could be in most GNU/Linux distribution archives having a wide range of hardware ports by default. Ali did share that something is in works but didn’t give any specifics on either the license or any dates.

One another interesting query was about having deltas in updates. As getting updates/data on-air is expensive, it was shared that it would be nice if we can have just the diff./the deltas rather than downloading the whole update.This has been solved for instance using debdeltas in debian.

Current status: 47 updates [+47].

shirish@debian:~$ sudo aptitude safe-upgrade
The following packages will be upgraded:
libautodie-perl libgmp10 libgmpxx4ldbl libimlib2 libio-socket-ip-perl libmpfr4 libpkcs11-helper1 libpython3.3 libpython3.3-minimal libpython3.3-stdlib libqt4-dbus libqt4-declarative libqt4-declarative-gestures libqt4-declarative-particles libqt4-designer libqt4-dev libqt4-dev-bin libqt4-help libqt4-network libqt4-opengl libqt4-opengl-dev libqt4-qt3support libqt4-script libqt4-scripttools libqt4-sql libqt4-sql-mysql libqt4-sql-sqlite libqt4-svg libqt4-test libqt4-xml libqt4-xmlpatterns libqtcore4 libqtdbus4 libqtgui4 libtalloc2 python-openssl python3.3 python3.3-minimal qdbus qt4-demos qt4-designer qt4-dev-tools qt4-doc qt4-linguist-tools qt4-qmake qt4-qmlviewer qtcore4-l10n

47 packages upgraded, 0 newly installed, 0 to remove and 0 not upgraded.Need to get 137 MB of archives. After unpacking 114 kB will be freed.
Do you want to continue? [Y/n/?] n

shirish@debian:~$ sudo debdelta-upgrade
Delta is too big: libimlib2_1.4.5-1_1.4.5-3_amd64.debdelta Created,time 0.62sec,speed 32kB/sec, libgmpxx4ldbl_2%3a5.1.2+dfsg-3_amd64.deb
Created,time 0.38sec,speed 62kB/sec, libio-socket-ip-perl_0.23-1_all.deb
Delta is too big: libpkcs11-helper1_1.10-1_1.10-2_amd64.debdelta Created,time 0.28sec, speed 152kB/sec, libqt4-dbus_4%3a4.8.5+git121-g2a9ea11+dfsg-1_amd64.deb
Created,time 0.30sec, speed 188kB/sec, libqt4-declarative-gestures_4%3a4.8.5+git121-g2a9ea11+dfsg-1_amd64.deb
Created,time 0.30sec, speed 204kB/sec, libqt4-declarative-particles_4%3a4.8.5+git121-g2a9ea11+dfsg-1_amd64.deb
Created,time 0.71sec, speed 326kB/sec, libqt4-help_4%3a4.8.5+git121-g2a9ea11+dfsg-1_amd64.deb
Created,time 0.45sec, speed 128kB/sec, libqt4-opengl-dev_4%3a4.8.5+git121-g2a9ea11+dfsg-1_amd64.deb
Created,time 0.69sec, speed 361kB/sec, libqt4-scripttools_4%3a4.8.5+git121-g2a9ea11+dfsg-1_amd64.deb
Created,time 0.37sec, speed 352kB/sec, libqt4-sql_4%3a4.8.5+git121-g2a9ea11+dfsg-1_amd64.deb
Created,time 0.26sec, speed 250kB/sec, libqt4-sql-mysql_4%3a4.8.5+git121-g2a9ea11+dfsg-1_amd64.deb
Created,time 0.26sec, speed 225kB/sec, libqt4-sql-sqlite_4%3a4.8.5+git121-g2a9ea11+dfsg-1_amd64.deb
Created,time 0.59sec, speed 289kB/sec, libqt4-svg_4%3a4.8.5+git121-g2a9ea11+dfsg-1_amd64.deb
Created,time 0.37sec, speed 258kB/sec, libqt4-test_4%3a4.8.5+git121-g2a9ea11+dfsg-1_amd64.deb
Delta is too big: libtalloc2_2.0.8-1_2.1.0-1_amd64.debdelta Created,time 4.12sec, speed 252kB/sec, libqt4-xmlpatterns_4%3a4.8.5+git121-g2a9ea11+dfsg-1_amd64.deb
Created,time 0.60sec, speed 249kB/sec, python3.3_3.3.2-7_amd64.deb Created,time 0.27sec, speed 241kB/sec, qdbus_4%3a4.8.5+git121-g2a9ea11+dfsg-1_amd64.deb
Created,time 1.71sec, speed 217kB/sec, qt4-designer_4%3a4.8.5+git121-g2a9ea11+dfsg-1_amd64.deb
Downloaded, time 0.28sec, speed 423B/sec, libautodie-perl_2.20-1_2.21-1_all.debdelta Downloaded, time 0.58sec, speed 3126B/sec, libgmp10_2%3a5.1.2+dfsg-2_2%3a5.1.2+dfsg-3_amd64.debdelta
Downloaded, time 0.59sec, speed 16kB/sec, python-openssl_0.13-2+b2_0.13-2.1_amd64.debdelta Downloaded, time 0.87sec, speed 18kB/sec, libpython3.3-minimal_3.3.2-5_3.3.2-7_amd64.debdelta Downloaded, time 0.97sec, speed 18kB/sec, libqt4-xml_4%3a4.8.5+dfsg-4_4%3a4.8.5+git121-g2a9ea11+dfsg-1_amd64.debdelta
Downloaded,time 1.19sec, speed 38kB/sec, libqt4-opengl_4%3a4.8.5+dfsg-4_4%3a4.8.5+git121-g2a9ea11+dfsg-1_amd64.debdelta
Downloaded,time 1.21sec, speed 61kB/sec, libqtdbus4_4%3a4.8.5+dfsg-4_4%3a4.8.5+git121-g2a9ea11+dfsg-1_amd64.debdelta
Created,time 7.23sec, speed 526kB/sec, qt4-dev-tools_4%3a4.8.5+git121-g2a9ea11+dfsg-1_amd64.deb
Created,time 0.60sec, speed 296kB/sec, qt4-qmlviewer_4%3a4.8.5+git121-g2a9ea11+dfsg-1_amd64.deb
Downloaded,time 3.26sec, speed 26kB/sec, libqt4-dev_4%3a4.8.5+dfsg-4_4%3a4.8.5+git121-g2a9ea11+dfsg-1_amd64.debdelta
Created,time 3.22sec, speed 183kB/sec, qtcore4-l10n_4%3a4.8.5+git121-g2a9ea11+dfsg-1_all.deb
Created,time 0.45sec, speed 157kB/sec, libautodie-perl_2.21-1_all.deb Created,time 0.48sec, speed 464kB/sec, libgmp10_2%3a5.1.2+dfsg-3_amd64.deb
Created,time 0.52sec, speed 172kB/sec, python-openssl_0.13-2.1_amd64.deb Created,time 2.93sec, speed 139kB/sec, libpython3.3-minimal_3.3.2-7_amd64.deb Created,time 0.46sec, speed 271kB/sec, libqt4-xml_4%3a4.8.5+git121-g2a9ea11+dfsg-1_amd64.deb
Downloaded,time 6.57sec, speed 17kB/sec, qt4-qmake_4%3a4.8.5+dfsg-4_4%3a4.8.5+git121-g2a9ea11+dfsg-1_amd64.debdelta
Created,time 0.97sec, speed 334kB/sec, libqt4-opengl_4%3a4.8.5+git121-g2a9ea11+dfsg-1_amd64.deb
Created,time 0.68sec, speed 311kB/sec, libqtdbus4_4%3a4.8.5+git121-g2a9ea11+dfsg-1_amd64.deb
Downloaded,time 4.93sec, speed 27kB/sec, libpython3.3-stdlib_3.3.2-5_3.3.2-7_amd64.debdelta Downloaded,time 4.27sec, speed 34kB/sec, libmpfr4_3.1.1-1_3.1.1-2_amd64.debdelta Downloaded,time 3.85sec, speed 43kB/sec, qt4-demos_4%3a4.8.5+dfsg-4_4%3a4.8.5+git121-g2a9ea11+dfsg-1_amd64.debdelta
Downloaded,time 2.16sec, speed 81kB/sec, libqt4-network_4%3a4.8.5+dfsg-4_4%3a4.8.5+git121-g2a9ea11+dfsg-1_amd64.debdelta
Created,time 16.61sec,speed 55kB/sec, libqt4-dev_4%3a4.8.5+git121-g2a9ea11+dfsg-1_amd64.deb
Created,time 5.55sec, speed 222kB/sec, qt4-qmake_4%3a4.8.5+git121-g2a9ea11+dfsg-1_amd64.deb
Downloaded,time 8.19sec, speed 24kB/sec, qt4-linguist-tools_4%3a4.8.5+dfsg-4_4%3a4.8.5+git121-g2a9ea11+dfsg-1_amd64.debdelta
Downloaded,time 5.82sec, speed 36kB/sec, libqt4-script_4%3a4.8.5+dfsg-4_4%3a4.8.5+git121-g2a9ea11+dfsg-1_amd64.debdelta
Created,time 10.48sec, speed 189kB/sec, libpython3.3-stdlib_3.3.2-7_amd64.deb Created,time 0.61sec, speed 822kB/sec, libmpfr4_3.1.1-2_amd64.deb Downloaded, time 9.60sec, speed 26kB/sec, libqt4-designer_4%3a4.8.5+dfsg-4_4%3a4.8.5+git121-g2a9ea11+dfsg-1_amd64.debdelta
Downloaded, time 7.31sec, speed 35kB/sec, libqt4-qt3support_4%3a4.8.5+dfsg-4_4%3a4.8.5+git121-g2a9ea11+dfsg-1_amd64.debdelta
Downloaded, time 11.74sec, speed 24kB/sec, libqt4-dev-bin_4%3a4.8.5+dfsg-4_4%3a4.8.5+git121-g2a9ea11+dfsg-1_amd64.debdelta
Downloaded,time 13.19sec, speed 27kB/sec, libqtcore4_4%3a4.8.5+dfsg-4_4%3a4.8.5+git121-g2a9ea11+dfsg-1_amd64.debdelta
Created,time 39.22sec, speed 248kB/sec, qt4-demos_4%3a4.8.5+git121-g2a9ea11+dfsg-1_amd64.deb
Created,time 1.84sec, speed 307kB/sec, libqt4-network_4%3a4.8.5+git121-g2a9ea11+dfsg-1_amd64.deb
Created,time 2.21sec, speed 381kB/sec, qt4-linguist-tools_4%3a4.8.5+git121-g2a9ea11+dfsg-1_amd64.deb
Downloaded,time 8.61sec, speed 47kB/sec, libqt4-declarative_4%3a4.8.5+dfsg-4_4%3a4.8.5+git121-g2a9ea11+dfsg-1_amd64.debdelta
Created,time 2.58sec, speed 307kB/sec, libqt4-script_4%3a4.8.5+git121-g2a9ea11+dfsg-1_amd64.deb
Created,time 7.12sec, speed 500kB/sec, libqt4-designer_4%3a4.8.5+git121-g2a9ea11+dfsg-1_amd64.deb
Created,time 2.79sec, speed 372kB/sec, libqt4-qt3support_4%3a4.8.5+git121-g2a9ea11+dfsg-1_amd64.deb
Created,time 4.20sec, speed 380kB/sec, libqt4-dev-bin_4%3a4.8.5+git121-g2a9ea11+dfsg-1_amd64.deb
Created,time 4.13sec, speed 376kB/sec, libqtcore4_4%3a4.8.5+git121-g2a9ea11+dfsg-1_amd64.deb
Downloaded,time 19.58sec, speed 28kB/sec, libpython3.3_3.3.2-5_3.3.2-7_amd64.debdelta Created,time 3.71sec, speed 292kB/sec, libqt4-declarative_4%3a4.8.5+git121-g2a9ea11+dfsg-1_amd64.deb
Created,time 3.63sec, speed 340kB/sec, libpython3.3_3.3.2-7_amd64.deb Downloaded, time 23.05sec, speed 39kB/sec, python3.3-minimal_3.3.2-5_3.3.2-7_amd64.debdelta Created,time 3.46sec, speed 397kB/sec, python3.3-minimal_3.3.2-7_amd64.deb Downloaded,time 53.33sec, speed 26kB/sec, qt4-doc_4%3a4.8.5+dfsg-4_4%3a4.8.5+git121-g2a9ea11+dfsg-1_all.debdelta
Downloaded,time 56.04sec, speed 28kB/sec, libqtgui4_4%3a4.8.5+dfsg-4_4%3a4.8.5+git121-g2a9ea11+dfsg-1_amd64.debdelta
Downloaded,time 1.29sec, speed 17kB/sec, libtalloc2_2.1.0-1_amd64.deb Downloaded,time 0.70sec, speed 58kB/sec, libpkcs11-helper1_1.10-2_amd64.deb Downloaded,time 1.71sec, speed 124kB/sec, libimlib2_1.4.5-3_amd64.deb Created,time 80.11sec, speed 1156kB/sec, qt4-doc_4%3a4.8.5+git121-g2a9ea11+dfsg-1_all.deb Created,time 13.40sec, speed 295kB/sec, libqtgui4_4%3a4.8.5+git121-g2a9ea11+dfsg-1_amd64.deb
Delta-upgrade statistics: total resulting debs, size 130MB time 312sec virtual speed 428kB/sec

$ sudo aptitude safe-upgrade
The following packages will be upgraded:
libautodie-perl libgmp10 libgmpxx4ldbl libimlib2 libio-socket-ip-perl libmpfr4 libpkcs11-helper1 libpython3.3 libpython3.3-minimal libpython3.3-stdlib libqt4-dbus libqt4-declarative libqt4-declarative-gestures libqt4-declarative-particles libqt4-designer libqt4-dev libqt4-dev-bin libqt4-help libqt4-network libqt4-opengl libqt4-opengl-dev libqt4-qt3support libqt4-script libqt4-scripttools libqt4-sql libqt4-sql-mysql libqt4-sql-sqlite libqt4-svg libqt4-test libqt4-xml libqt4-xmlpatterns libqtcore4 libqtdbus4 libqtgui4 libtalloc2 python-openssl python3.3 python3.3-minimal qdbus qt4-demos qt4-designer qt4-dev-tools qt4-doc qt4-linguist-tools qt4-qmake qt4-qmlviewer qtcore4-l10n

47 packages upgraded, 0 newly installed, 0 to remove and 0 not upgraded.
Need to get 0 B/137 MB of archives. After unpacking 114 kB will be freed.
Do you want to continue? [Y/n/?]n

Basically the last lines when doing debdeltas give the whole story :-

Delta-upgrade statistics: total resulting debs, size 130MB time 312sec virtual speed 428kB/sec

From this I seem to have very good download speeds while the reality is different. My download speed is actually 256 kbps (notice the difference between kbps and kBps as seen above or below) so somehow I’m able to download at around 15 times the speed that I should be able be download at the most 256/8= 32 kB/s without any bandwidth being used elsewhere.

428 kB/s / 32 kB/s = 13.375 . So how this is possible ?

Let’s see one of the debdeltas and the resultant deb file :-

Downloaded,time 56.04sec, speed 28kB/sec, libqtgui4_4%3a4.8.5+dfsg-4_4%3a4.8.5+git121-g2a9ea11+dfsg-1_amd64.debdelta
Created,time 13.40sec, speed 295kB/sec, libqtgui4_4%3a4.8.5+git121-g2a9ea11+dfsg-1_amd64.deb

While I have explained it before in other blog posts,what is done is there is another server, What it does every time the debian server is updated (4 times a day at intervals of 8 hrs. each) the debdelta server scans for changes, it downloads the latest changed deb. package against the last .deb package. A .deb package as shared before as well is nothing but an archive for the changed files and the diff. between each file and prepares a .debdelta file. IF and only if the differences between all the files making the .deb is less than 70% it would make a debdelta file otherwise it would share that the delta is too big and would defeat the purpose of having a delta in which case the new .deb file is presented to him to downloaded.

The user downloads the .debdelta file and applies the delta (like a patch) on top of the old deb. which is in user’s archives, see for e.g. the listing of /var/cache/apt/archives which tells/shares with the user a huge list of all the .debs which have been installed and upgraded.

Contents of a .deb file :-

$ dpkg -L libqtgui4

The only thing remaining in debian is to integrate the functionality of debdelta in either libapt or make an additional libapt backend library which can be used by all package managers but that’s a different topic for another day altogether.

Having something similar for Firefox OS would make the whole process a whole lot smoother and easier for the user as well.

There were whole lot of questions which I wanted to ask but didn’t know whether this was the right fora or not for the same :-

a. What, if any efforts have been made to make data privacy of the individual a first class citizen rather than an afterthought ? After the whole NSA thing, it is becoming increasingly difficult and yet more important to have user-data secure. A generic yes/no answer would not have been o.k. with me and I didn’t know if Ali would have the answer as she is the Manager of MDN and this would be more better answered by people who were working on the OS itself. It’s a technical as well as policy thing.

b. This was partly answered as I had asked when we could get the device in our part of the world and the answer was ‘we don’t know’ which is true. They have partnerships with only a few device manufacturers and the only big name as of now is ‘ZTE’ (a chinese company) which does sell some set-top boxes in india and has done networking solutions in the telecommunications business but hasn’t done any great shakes. Unless they get a Samsung or somebody big like that on-board and have some sort of understanding as to how many phones they will push, Firefox OS will not happen unless huge numbers of the phone are pushed or/and pulled.

I had lot many questions but till there is no device and no playing around on it, it is difficult to know what it could do or not do. The brief interaction I had with the phone is the UI is more or less inspired by Android with possibility of multiple homes and things like that. It’s only when you have had a phone/device in your hand that you try different things and you can form an opinion.

The build quality of the phone model could and needs to be vastly improved but that’s probably not something that Mozilla Foundation would or could have any say.

Then after a while, we broke for lunch. After coming back the MDN sprint started and there were two activities planned for the day, one was getting some code samples for budding HTML newbies and Ali wanted to have some working code samples so people could make different objects on a webpage and a browser (or an HTML+CSS3 parser) would draw it without having to use non-free stuff like flash etc. This was more like tutorials for HTML babies.

Soumya took the initiative to dive down and create some working code samples and see which ones are borked/broken of those made, trouble-shoot some of the samples and add some samples. This was done by Soumya and a few people who had some knowledge of HTML.

Then there was a huge bunch of 1st year ones who probably hadn’t done HTML coding (at all) or were not aware and she had the simplest job in the world for them, adding tags to specific webpages which are in the Mozilla wiki but needed somebody to volunteer and lead it sorta for which yours truly volunteered and we had a gang/team of around 20-30 odd people sitting in a circle at the back of the room. I slowly got people signed up via Persona (the single sign-on service preferred by mozilla), and asked Ali to make a shorturl for the mozdoc sprint page as it was a bit too long and showed them how to tag and solved their queries. Before long, we had closed around 400 pages from the list which was tagged by the group ‘API’ . The number is a rough estimate as we started it was in mid 700’s and by the time we ended it was in 400’s . I did see that some people had added ‘API’ as the first word/term which the bot had neglected which basically need to be improvised in the bot’s logic while scanning. I also saw there were quite a few obsolete entries which were on the list which I told them to leave alone. They are/were probably on the list as that part of the documentation needs to be refreshed/rewritten or removed but this again would be done by someone who’s familiar with whatever documentation on whatever API it was. First we started with numbers listing and then quickly had to change to having some keywords as the numbering order would change as soon as the bot had done the pass. As we were unaware how quickly (or not) the bot made a pass it became clear giving keywords of some part of the title which was unique made sense to the people who were adding it. As it is a boring job, in about an hr. or a little more than that, people wounded up doing the tagging.

There was a general vote of thanx and the event was over for the day.


2 thoughts on “MDN Doc Sprint & Firefox OS demo in Pune

  1. Great report! πŸ™‚
    And as your post my comment is too longish :p

    Well as far as number of Apps question is concerned, the example of browsers doesn’t fit right when we are talking about a Mobile OS. See for example I have 2 twitter apps, one with a complete profile control option and one not, so I will go with the one that supports all the functionality dropping the one that doesn’t make sense to me and these are web apps and we are in an initial stage of Marketplace(though 37K+ Apps already there) so you can expect a lot more bunch of them coming down frequently and they don’t eat much of your storage too(if they are not packaged/system apps), a file size of 1.2K or so, you can try them with not much of pain πŸ™‚

    The Storage facts: You need to go through the MDN, they have explained everything, localstorage is like a temporary storage for your app for a session being and an IndexedDB can do more than that. πŸ™‚

    The OpenStreetMap Api use to create an App, that’s an awesome idea, but why would you want the Computer to be connected, see if you are developing an App for at least Firefox OS then my advice is to keep things simple, no user wants to get in an hectic work of connecting the device to the system then using adb to connect(Well that’s an awesome idea for vendors to create application for that just like Samsung Kies, +1) it and then uploading stuff, you can do that on the fly on the device itself. And Yeah Battery issues will be there if you are polling things in a short intervals for a device, my advice is to add a check to look for a particular battery level onto which the app will keep polling and after that suspends(if running in background) or show a warning/notification. πŸ™‚

    Updating things:
    Aah you are seeing things with different perspectives, an ordinary computer system and a SmartPhone device they are far too different to be compared. Yeah Firefox OS does has different repo’s or you can say components but alike Debian or any other system, we don’t track them at all(Its like adding a more load on the storage point of view and also the processing point of view, sending the file to sever asking for diff and then getting specific components and then placing them on their respective places, things can break if we are not using a /tmp on device and that too adds more space complexity but yeah we use the /tmp), no doubt Firefox Os works onto layers, so yeah its a good idea if a specific layer needs to get updated(Genko, b2g, gecko) but its not that every time, so we do need to deploy the whole in a single go(send the current version number, server diff it with the latest one if found then send the whole new one ) πŸ™‚

    Delta server: Loads, loads and loads think of feasibility first and then the applications of it πŸ™‚

    Privacy: Feel assured of security and privacy when you are on a Mozilla’s product. And as far as app’s security/privacy is concerned I can assure you that if it is taken from Firefox’s Marketplace, we do review things a lot before putting it there and an App accessing another app’s data or your personnel data? (No way without your permission) So smile πŸ™‚

    You can get the device from or the Simulator too serves the same purpose πŸ™‚ And the device quality? You yourself has answered it πŸ™‚ πŸ˜€


    1. @Don first of all thanx for the feedback.

      As far as the comment about the great report is concerned, I dunno because there was much I left out. For instance Priyanka Nag did the hosting for the whole of presentation and as she did a backgrounder role I simply forgot her. I’m sure she did lots to get the act together in the background. I also met Divyanshu who showed me how webmaker works and it looked to me as a polished HTML editor + mashups or that’s the way I could describe it.

      I also didn’t talk about third-party IP as phones do have lot of third-party IP in it. That’s one of the reasons why there is consolidation happening in the marketplace. You need lot of capital not only to design the devices but also move them quickly enough and leave some money on the table for the distributors. A pretty high-stakes game and Mozilla Foundation looks like it would have to do lots of negotiation with lot of device vendors if they actually want to ship products to the masses in India and China, two major markets.

      I am not a dev. but probably would go through both localestorage and indexdb to get a sense of how apps. can use them, probably this week-end if I get some time.

      About the openstreetmap thing, doing tracing on a device whose display is less than 4 inches square is unthinkable, at least for me. Also been spoiled by large monitors on desktop, that’s why having a desktop or lappy to do work would be nice. I don’t know if there is possibility of having the maps in a sort of offline-mode would be possible or not. Having for instance, the whole map of Maharashtra in your hand would be awesome and using A-GPS or GPS just for finding yourself as to where you are on the map would be a killer app. at least for people like me. I am a cheapo as far as data over-the-air is concerned. Lot of people would just the maps to go from A to B and if you have map content pre-loaded on your device it would make the things damn easy. There was talk of some mapping app. for firefox but dunno the name. Some people also shared a name ‘Here’ maps or something like that.

      About having updates via computer system would have two-fold benefits, the way I see it .

      a. Being able to get updates cheaply and having those updates on your personal system (like a server)

      b. Possibility to clone all the apps. and data in case the phone gets lost or for any other reason.

      Lastly, thanx for the geekphone site link although the homepage is in a perpetual circular motion (fetching some stuff) for about 10-15 mins now so can’t really access the site.

Leave a Reply

Fill in your details below or click an icon to log in: Logo

You are commenting using your account. Log Out /  Change )

Google+ photo

You are commenting using your Google+ account. Log Out /  Change )

Twitter picture

You are commenting using your Twitter account. Log Out /  Change )

Facebook photo

You are commenting using your Facebook account. Log Out /  Change )


Connecting to %s

This site uses Akismet to reduce spam. Learn how your comment data is processed.