<?xml version="1.0"?>
<?xml-stylesheet type="text/css" href="http://wiki.openmoko.org/skins/common/feed.css?303"?>
<feed xmlns="http://www.w3.org/2005/Atom" xml:lang="en">
		<id>http://wiki.openmoko.org/api.php?action=feedcontributions&amp;user=Placid&amp;feedformat=atom</id>
		<title>Openmoko - User contributions [en]</title>
		<link rel="self" type="application/atom+xml" href="http://wiki.openmoko.org/api.php?action=feedcontributions&amp;user=Placid&amp;feedformat=atom"/>
		<link rel="alternate" type="text/html" href="http://wiki.openmoko.org/wiki/Special:Contributions/Placid"/>
		<updated>2013-05-21T07:08:37Z</updated>
		<subtitle>User contributions</subtitle>
		<generator>MediaWiki 1.19.6</generator>

	<entry>
		<id>http://wiki.openmoko.org/wiki/Talk:November_6,_2007_Community_Update</id>
		<title>Talk:November 6, 2007 Community Update</title>
		<link rel="alternate" type="text/html" href="http://wiki.openmoko.org/wiki/Talk:November_6,_2007_Community_Update"/>
				<updated>2007-11-06T17:52:40Z</updated>
		
		<summary type="html">&lt;p&gt;Placid: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;How many of you must have 850 MHz support, and would be satisfied with an 850/1800/1900MHz variant, and how many of you must have full quad-band?&lt;br /&gt;
&lt;br /&gt;
Note that by asking this question we do not promise to provide these options.&lt;br /&gt;
&lt;br /&gt;
Please put your answers below:&lt;br /&gt;
&lt;br /&gt;
'''Must have an 850/1800/1900MHz variant'''&lt;br /&gt;
* -- [[User:Mwester]] 06:46, 6 November 2007 (CST) - This thing is nothing but an extremely expensive PDA without 850 support.  It should do what it was claimed it could do when it was sold (quad-band), but I can live with taking a real phone with me when travelling internationally.&lt;br /&gt;
* -- [[User:ShakataGaNai|ShakataGaNai]] 03:34, 6 November 2007 (CET)&lt;br /&gt;
* -- [[User:Aking|Aking]] 21:55 EST, 2007-11-05 - Live/work in an 850 only zone&lt;br /&gt;
* -- [[User:Matt|Mattdawg]] 19:57 MST, 6 November 2007&lt;br /&gt;
* -- [[User:Writchie|Wally Ritchie]] 10:02 EST, 6 November 2007 - GTA02 MUST support largest US GSM carrier.&lt;br /&gt;
* -- [[User:Digger|Digger]] 04:15, 6 November 2007 (CET) - But for the money would prefer quad-band&lt;br /&gt;
* -- [[User:Wisp|wisp]] 04:29, 6 November 2007 (CET) - But for the money would greatly prefer quad-band &lt;br /&gt;
* -- [[User:WJCarpenter|WJCarpenter]] 19:45, 6 November 2007 (PST)&lt;br /&gt;
* -- [[User:Angus|Angus]] 20:59, 5 November 2007 (MST) - Required for Rogers in Canada&lt;br /&gt;
* -- [[User:Montgoss|Montgoss]] 22:34 CST, 5 November 2007 - Frequently in areas that use 850 band.&lt;br /&gt;
* -- [[User:Xaid|Xaid]] 21:12, November 5th, 2007 (MST) - Rogers Wireless in Edmonton uses both 850/1900 bands.&lt;br /&gt;
* -- [[User:Mmontour|Mmontour]] 06:45, 6 November 2007 (CET) - So far I've been able to use my phone with 1900 only (Fido in Vancouver, BC) but I do sometimes travel to 850-only areas.&lt;br /&gt;
* -- [[User:Romulus|Romulus]] 07:31, November 6th, 2007 (PST) - I'm with Rogers and will need 850 when on the road.&lt;br /&gt;
* -- [[User:Mary|Mary]] 11:24, November 6th, 2007 (EST)&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
'''Is OK with the current 900/1800/1900MHz variant'''&lt;br /&gt;
* -- [[User:BlueStar88|BlueStar88]] 11:50, 6 November 2007 (CET) - 900 (D1-, D2- and O2-Network) and 1800 (E- and O2-Network) are essential in Germany&lt;br /&gt;
* -- (Most of Europe? From my quick bit of research, it seems 850Mhz is only needed for the US, Canada, Anguilla, Ecuador, Montserrat, Panama, St. Kitts and Nevis, Turks and Caicos Islands )&lt;br /&gt;
* -- [[User:C.M|C.M]] 06:44 CST, 6 November 2007 - 850 would be nice, but I don't need it.&lt;br /&gt;
* -- [[User:Avanc|Avanc]] 08:52 CET, 6 November 2007 - 850 would be nice, but I don't want to miss 900&lt;br /&gt;
* -- [[User:PT|PT]] 08:27 GMT, 6 November 2007 - 850 would be nice but the other three are more important for me&lt;br /&gt;
* -- [[User:s.decken|s.decken]] 10:49 GMT, 6 November 2007 - 850 would be nice but not required&lt;br /&gt;
* -- [[User:PiotrDuda|_alcik_]] 11:55 GMT, 6 November 2007 - I really need the 900.&lt;br /&gt;
* -- [[User:Mic|Mic]] 12:15 CET, 6 November 2007 - in Europe is 900 essential&lt;br /&gt;
* -- [[User:Mockenh|Mockenh]] 12:45 CET, 6 November 2007 - need 900 (Germany)&lt;br /&gt;
* -- [[User:Psmears|Psmears]] 14:55, 6 November 2007 (CET) 900/1800 covers most of the world; 1900 covers enough of USA/Canada to be useful for short trips.&lt;br /&gt;
* -- [[User:Placid|Placid]] 18:52, 6 November 2007 (CET) - UK, T-Mobile, OK with tri-band.&lt;br /&gt;
* -- [[User:Vegar|Vegar]] 16:46, 6 November 2007 (CET) - 850 would be nice, but the other three are much more important&lt;br /&gt;
* -- [[User:einalex|einalex]] 17:04 CET, 6 November 2007 - in Germany/Europe GSM 900 is a must-have. For me, 850 is optional.&lt;br /&gt;
* -- [[User:PBeck|PatrickBeck]] 17:45, 6 November 2007 (CET)  I live in germany, so is 850 optional for me. But quadband would be nice.&lt;br /&gt;
* -- [[User:AVee]] Same as above, having a hardware/software switch for 850/900 would help as well.&lt;br /&gt;
&lt;br /&gt;
'''Must have full quad-band support''' (note that this is not for GTA01 or GTA02)&lt;br /&gt;
* -- [[User:Elektrolott|Elektrolott]] 18:45 (PST), 2007-11-05&lt;br /&gt;
* -- [[User:ClashTheBunny|ClashTheBunny]] 04:03, 6 November 2007 (CET) - Right now I live on the North Shore of Boston and most places are 850&lt;br /&gt;
* -- [[User:Sagacis|Sagacis]] 04:16, 6 November 2007 (CET) - The phone is a brick to me without 850.  International travel means I need all four bands.&lt;br /&gt;
* -- [[User:Davemaster|Davemaster]] 21:47, 5 November 2007 (ET) - International travelers,  Me and my group (company) deals all over. We need all four bands.&lt;br /&gt;
*-- [[User:Rakshat|Rakshat]] 05:40, 6 November 2007 (CET) - For travel in the US, otherwise I am ok with the 900/1800/1900Mhz variant&lt;br /&gt;
* --[[User:NeilenMarais|NeilenMarais]] 15:37, 6 November 2007 (CET) - For travel to US also&lt;br /&gt;
* -- [[User:Jaebird|Jaebird]] 09:00, 6 November 2007 (CST) - The phone should be refundable to me without 850 (It was sold as a quad band phone, it is NOT).  International travel means I need all four bands.&lt;/div&gt;</summary>
		<author><name>Placid</name></author>	</entry>

	<entry>
		<id>http://wiki.openmoko.org/wiki/User:Placid</id>
		<title>User:Placid</title>
		<link rel="alternate" type="text/html" href="http://wiki.openmoko.org/wiki/User:Placid"/>
				<updated>2007-11-06T15:23:58Z</updated>
		
		<summary type="html">&lt;p&gt;Placid: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Website: [http://beplacid.net Placid]&lt;br /&gt;
&lt;br /&gt;
Programmer from the UK&lt;/div&gt;</summary>
		<author><name>Placid</name></author>	</entry>

	<entry>
		<id>http://wiki.openmoko.org/wiki/Talk:November_6,_2007_Community_Update</id>
		<title>Talk:November 6, 2007 Community Update</title>
		<link rel="alternate" type="text/html" href="http://wiki.openmoko.org/wiki/Talk:November_6,_2007_Community_Update"/>
				<updated>2007-11-06T15:23:14Z</updated>
		
		<summary type="html">&lt;p&gt;Placid: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;How many of you must have 850 MHz support, and would be satisfied with an 850/1800/1900MHz variant, and how many of you must have full quad-band?&lt;br /&gt;
&lt;br /&gt;
Note that by asking this question we do not promise to provide these options.&lt;br /&gt;
&lt;br /&gt;
Please put your answers below:&lt;br /&gt;
&lt;br /&gt;
'''Must have an 850/1800/1900MHz variant'''&lt;br /&gt;
* -- [[User:Mwester]] 06:46, 6 November 2007 (CST) - This thing is nothing but an extremely expensive PDA without 850 support.  It should do what it was claimed it could do when it was sold (quad-band), but I can live with taking a real phone with me when travelling internationally.&lt;br /&gt;
* -- [[User:ShakataGaNai|ShakataGaNai]] 03:34, 6 November 2007 (CET)&lt;br /&gt;
* -- [[User:Aking|Aking]] 21:55 EST, 2007-11-05 - Live/work in an 850 only zone&lt;br /&gt;
* -- [[User:Matt|Mattdawg]] 19:57 MST, 6 November 2007&lt;br /&gt;
* -- [[User:Writchie|Wally Ritchie]] 10:02 EST, 6 November 2007 - GTA02 MUST support largest US GSM carrier.&lt;br /&gt;
* -- [[User:Digger|Digger]] 04:15, 6 November 2007 (CET) - But for the money would prefer quad-band&lt;br /&gt;
* -- [[User:Wisp|wisp]] 04:29, 6 November 2007 (CET) - But for the money would greatly prefer quad-band &lt;br /&gt;
* -- [[User:WJCarpenter|WJCarpenter]] 19:45, 6 November 2007 (PST)&lt;br /&gt;
* -- [[User:Angus|Angus]] 20:59, 5 November 2007 (MST) - Required for Rogers in Canada&lt;br /&gt;
* -- [[User:Montgoss|Montgoss]] 22:34 CST, 5 November 2007 - Frequently in areas that use 850 band.&lt;br /&gt;
* -- [[User:Xaid|Xaid]] 21:12, November 5th, 2007 (MST) - Rogers Wireless in Edmonton uses both 850/1900 bands.&lt;br /&gt;
* -- [[User:Mmontour|Mmontour]] 06:45, 6 November 2007 (CET) - So far I've been able to use my phone with 1900 only (Fido in Vancouver, BC) but I do sometimes travel to 850-only areas.&lt;br /&gt;
'''Is OK with the current 900/1800/1900MHz variant'''&lt;br /&gt;
* -- [[User:BlueStar88|BlueStar88]] 11:50, 6 November 2007 (CET) - 900 (D1-, D2- and O2-Network) and 1800 (E- and O2-Network) are essential in Germany&lt;br /&gt;
* -- (Most of Europe? From my quick bit of research, it seems 850Mhz is only needed for the US, Canada, Anguilla, Ecuador, Montserrat, Panama, St. Kitts and Nevis, Turks and Caicos Islands )&lt;br /&gt;
* -- [[User:C.M|C.M]] 06:44 CST, 6 November 2007 - 850 would be nice, but I don't need it.&lt;br /&gt;
* -- [[User:Avanc|Avanc]] 08:52 CET, 6 November 2007 - 850 would be nice, but I don't want to miss 900&lt;br /&gt;
* -- [[User:PT|PT]] 08:27 GMT, 6 November 2007 - 850 would be nice but the other three are more important for me&lt;br /&gt;
* -- [[User:s.decken|s.decken]] 10:49 GMT, 6 November 2007 - 850 would be nice but not required&lt;br /&gt;
* -- [[User:PiotrDuda|_alcik_]] 11:55 GMT, 6 November 2007 - I really need the 900.&lt;br /&gt;
* -- [[User:Mic|Mic]] 12:15 CET, 6 November 2007 - in Europe is 900 essential&lt;br /&gt;
* -- [[User:Mockenh|Mockenh]] 12:45 CET, 6 November 2007 - need 900 (Germany)&lt;br /&gt;
* -- [[User:Psmears|Psmears]] 14:55, 6 November 2007 (CET) 900/1800 covers most of the world; 1900 covers enough of USA/Canada to be useful for short trips.&lt;br /&gt;
* -- [[User:Placid|Placid]] 1515 (GMT), 6 November 2007 - UK, T-Mobile, OK with tri-band.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
'''Must have full quad-band support''' (note that this is not for GTA01 or GTA02)&lt;br /&gt;
* -- [[User:Elektrolott|Elektrolott]] 18:45 (PST), 2007-11-05&lt;br /&gt;
* -- [[User:ClashTheBunny|ClashTheBunny]] 04:03, 6 November 2007 (CET) - Right now I live on the North Shore of Boston and most places are 850&lt;br /&gt;
* -- [[User:Sagacis|Sagacis]] 04:16, 6 November 2007 (CET) - The phone is a brick to me without 850.  International travel means I need all four bands.&lt;br /&gt;
* -- [[User:Davemaster|Davemaster]] 21:47, 5 November 2007 (ET) - International travelers,  Me and my group (company) deals all over. We need all four bands.&lt;br /&gt;
*-- [[User:Rakshat|Rakshat]] 05:40, 6 November 2007 (CET) - For travel in the US, otherwise I am ok with the 900/1800/1900Mhz variant&lt;br /&gt;
* --[[User:NeilenMarais|NeilenMarais]] 15:37, 6 November 2007 (CET) - For travel to US also&lt;br /&gt;
* -- [[User:Jaebird|Jaebird]] 09:00, 6 November 2007 (CST) - The phone should be refundable to me without 850 (It was sold as a quad band phone, it is NOT).  International travel means I need all four bands.&lt;/div&gt;</summary>
		<author><name>Placid</name></author>	</entry>

	<entry>
		<id>http://wiki.openmoko.org/wiki/Neo_1973_Battery_Charging_Logic</id>
		<title>Neo 1973 Battery Charging Logic</title>
		<link rel="alternate" type="text/html" href="http://wiki.openmoko.org/wiki/Neo_1973_Battery_Charging_Logic"/>
				<updated>2007-08-21T08:20:38Z</updated>
		
		<summary type="html">&lt;p&gt;Placid: /* from deep discharged battery */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;The [[Neo1973 Battery]] charging logic is embedded into our [[Neo1973 GTA01 Power Management|PCF50606 Power Management]] Unit (PMU).&lt;br /&gt;
&lt;br /&gt;
The PCF50606 supports a variety of [[Neo1973 Battery]] charging modes, based around the hardware limitations of USB.&lt;br /&gt;
&lt;br /&gt;
Some USB hubs only provide up to 100mA per device.&lt;br /&gt;
If more than the available current is drawn from them, they may be reset, or power off.&lt;br /&gt;
This resets all devices connected to the USB bus, possibly causing data loss.&lt;br /&gt;
So, fast charge mode is only enabled after the Neo is told that it is safe to charge at this current. &lt;br /&gt;
&lt;br /&gt;
An alternative method is used when connected to a more USB-compliant dumb charger.  If the Neo measures 48&amp;amp;nbsp;k&amp;amp;Omega; +/- 1% between usb pin 5 and ground, it will detect the dumb charger and use it for fast charging. &lt;br /&gt;
&lt;br /&gt;
{{warning|While we have spent a significant amount on various safe-guards such as battery-internal overcurrent/overvoltage protection, manual twisting with low-level charger control aspects is not recommended.  It might damage either the [[battery]] or charging circuit.}}&lt;br /&gt;
&lt;br /&gt;
== Charging Modes ==&lt;br /&gt;
&lt;br /&gt;
=== Pre Charge ===&lt;br /&gt;
&lt;br /&gt;
The default mode is what the PMU calls 'Pre Charge'. In which we draw up to 100mA charging current from the USB socket.  This mode is safe to use on any USB socket, since the USB  specification mandates that 100mA is always available.&lt;br /&gt;
&lt;br /&gt;
However, 100mA charging at a 1200mAh [[Neo1973 Battery]] means around 12hrs charging time, not very practical at all.&lt;br /&gt;
&lt;br /&gt;
=== Fast Charge ===&lt;br /&gt;
&lt;br /&gt;
Fast Charge is what the PMU calls the charging mode in which we draw up to 500mA charging current from the USB socket.  This mode can only be used if the USB stack on the host controller has selected a '''USB Configuration''' for the Neo which allows it to draw 500mA.&lt;br /&gt;
&lt;br /&gt;
By default, if you apply +5V to the USB device socket, we draw only 100mA. &lt;br /&gt;
&lt;br /&gt;
==== Fast Charge (CCCV) ====&lt;br /&gt;
&lt;br /&gt;
Fast charging, using first constant current, later constant voltage.  This is what we use for our Li-Ion [[Neo1973 Battery]]&lt;br /&gt;
&lt;br /&gt;
==== Fast Charge (CVCC) ====&lt;br /&gt;
&lt;br /&gt;
[[Category:Neo1973 Hardware]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Neo1973 emergency charging ==&lt;br /&gt;
&lt;br /&gt;
=== from deep discharged battery ===&lt;br /&gt;
&lt;br /&gt;
A deep discharged battery is one where the terminal voltage is below the minimal voltage threshold.  The Neo1973 (specifically: The PCF50606 PMU) will not power-on the device. ''see also [[Neo1973 GTA01 Power Management]]&lt;br /&gt;
&lt;br /&gt;
If you make sure to remove the USB cable and put a deep discharged battery into the Neo1973, the battery can still be charged.  All you need to do is to provide 5V to the USB socket, by either connecting the Neo1973 to some USB port or a dumb USB charger.&lt;br /&gt;
&lt;br /&gt;
The battery will charge only with 100mA, and it will take a couple of hours until the battery is again charged to a level where it can power the phone.&lt;br /&gt;
&lt;br /&gt;
{{note|Please do not press the power button before you have waited for something like four hours. If you do so, the phone might [partially] power up, and draw more power than the 100mA supplied by the charger/USB, and so begin discharging itself again.&lt;br /&gt;
&lt;br /&gt;
If you did press the power button, &lt;br /&gt;
#remove the battery, &lt;br /&gt;
#wait a moment,&lt;br /&gt;
#insert the battery&lt;br /&gt;
#connect the charger or USB.}}&lt;br /&gt;
&lt;br /&gt;
The procedure to follow is:&lt;br /&gt;
# '''Open Case.&lt;br /&gt;
# '''Remove Battery.&lt;br /&gt;
# '''Wait 20s.''' ''This resets the hardware, and makes sure nothing is drawing current during the next stage.&lt;br /&gt;
# '''Insert the Battery.'''&lt;br /&gt;
# '''Plug into a USB host, or USB charger.''' ''At this time, the battery will be charging at a low rate.&lt;br /&gt;
# '''Wait 1 hour.'''  At this time, the battery will be approximately 5% charged, which should run the Neo for several minutes.  ''This time needs to be resolved: it is not quite clear how long to charge a deeply discharged battery before the device is able to request a 500 mA fast charge current.&lt;br /&gt;
# '''If you have a USB host, plug it into a port capable of sourcing 500mA and load the appropriate drivers, so the neo can negotiate to draw 500mA.&lt;br /&gt;
&lt;br /&gt;
*If you have a dumb charger, see the [[Bootloader]] page for how to add a u-boot menu entry to turn on fast-charging.&lt;br /&gt;
&lt;br /&gt;
==Proposals for alternative charging schemes==&lt;br /&gt;
&lt;br /&gt;
An alternate method - for example sensing if there is no USB communication from the host for 30 seconds - as may be the case with dumb 'USB chargers' - would need to be used to be compatible with the vast majority of already existing hardware. &lt;br /&gt;
This has a small risk of causing buses it is connected to in suspend mode, when they are not active, to crash, and is not compliant with the specification. &lt;br /&gt;
&lt;br /&gt;
:The USB spec requires the host to reply in a much shorter time than 30 seconds. Waiting that long is overkill and would be very annoying if you were trying to charge with something like a [http://www.21st-century-goods.com/page/21st/PROD/AHPG crank charger].&lt;br /&gt;
&lt;br /&gt;
[[Category:Neo1973 Hardware]]&lt;/div&gt;</summary>
		<author><name>Placid</name></author>	</entry>

	<entry>
		<id>http://wiki.openmoko.org/wiki/Openmoko_Local_Groups:_London</id>
		<title>Openmoko Local Groups: London</title>
		<link rel="alternate" type="text/html" href="http://wiki.openmoko.org/wiki/Openmoko_Local_Groups:_London"/>
				<updated>2007-07-30T11:30:26Z</updated>
		
		<summary type="html">&lt;p&gt;Placid: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Welcome to OpenMoko London!&lt;br /&gt;
&lt;br /&gt;
Beer and Neo anyone?&lt;br /&gt;
&lt;br /&gt;
{|border=1&lt;br /&gt;
!Name&lt;br /&gt;
!Skills&lt;br /&gt;
!Interest&lt;br /&gt;
!Location&lt;br /&gt;
|-&lt;br /&gt;
|[[User:jptmoore|John Moore]]&lt;br /&gt;
|C/Scheme&lt;br /&gt;
|Application development&lt;br /&gt;
|Pinner&lt;br /&gt;
|-&lt;br /&gt;
|Alex&lt;br /&gt;
|Java,Perl,Python&lt;br /&gt;
|User &amp;amp; developer&lt;br /&gt;
|Hampshire&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
See [[Talk:OpenMoko_Local_Groups:_London|discussion]]&lt;br /&gt;
&lt;br /&gt;
[[Category:Community]]&lt;/div&gt;</summary>
		<author><name>Placid</name></author>	</entry>

	<entry>
		<id>http://wiki.openmoko.org/wiki/Openmoko_Local_Groups:_London</id>
		<title>Openmoko Local Groups: London</title>
		<link rel="alternate" type="text/html" href="http://wiki.openmoko.org/wiki/Openmoko_Local_Groups:_London"/>
				<updated>2007-07-30T10:51:01Z</updated>
		
		<summary type="html">&lt;p&gt;Placid: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Welcome to OpenMoko London!&lt;br /&gt;
&lt;br /&gt;
Beer and Neo anyone?&lt;br /&gt;
&lt;br /&gt;
{|border=1&lt;br /&gt;
!Name&lt;br /&gt;
!Skills&lt;br /&gt;
!Interest&lt;br /&gt;
!Location&lt;br /&gt;
|-&lt;br /&gt;
|[[User:jptmoore|John Moore]]&lt;br /&gt;
|C/Scheme&lt;br /&gt;
|Application development&lt;br /&gt;
|Pinner&lt;br /&gt;
|-&lt;br /&gt;
|Alex&lt;br /&gt;
|Java,Perl,Python&lt;br /&gt;
|Application development&lt;br /&gt;
|Hampshire&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
See [[Talk:OpenMoko_Local_Groups:_London|discussion]]&lt;br /&gt;
&lt;br /&gt;
[[Category:Community]]&lt;/div&gt;</summary>
		<author><name>Placid</name></author>	</entry>

	<entry>
		<id>http://wiki.openmoko.org/wiki/Openmoko_Local_Groups:_London</id>
		<title>Openmoko Local Groups: London</title>
		<link rel="alternate" type="text/html" href="http://wiki.openmoko.org/wiki/Openmoko_Local_Groups:_London"/>
				<updated>2007-07-30T10:50:41Z</updated>
		
		<summary type="html">&lt;p&gt;Placid: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Welcome to OpenMoko London!&lt;br /&gt;
&lt;br /&gt;
Beer and Neo anyone?&lt;br /&gt;
&lt;br /&gt;
{|border=1&lt;br /&gt;
!Name&lt;br /&gt;
!Skills&lt;br /&gt;
!Interest&lt;br /&gt;
!Location&lt;br /&gt;
|-&lt;br /&gt;
|[[User:jptmoore|John Moore]]&lt;br /&gt;
|C/Scheme&lt;br /&gt;
|Application development&lt;br /&gt;
|Pinner&lt;br /&gt;
|-&lt;br /&gt;
|[Alex]&lt;br /&gt;
|Java,Perl,Python&lt;br /&gt;
|Application development&lt;br /&gt;
|Hampshire&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
See [[Talk:OpenMoko_Local_Groups:_London|discussion]]&lt;br /&gt;
&lt;br /&gt;
[[Category:Community]]&lt;/div&gt;</summary>
		<author><name>Placid</name></author>	</entry>

	<entry>
		<id>http://wiki.openmoko.org/wiki/Wishlist/BuiltInScriptingLanguage</id>
		<title>Wishlist/BuiltInScriptingLanguage</title>
		<link rel="alternate" type="text/html" href="http://wiki.openmoko.org/wiki/Wishlist/BuiltInScriptingLanguage"/>
				<updated>2007-04-12T13:58:05Z</updated>
		
		<summary type="html">&lt;p&gt;Placid: /* Perl */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{Wishlist}}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Discussion ==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[http://lists.openmoko.org/pipermail/community/2007-January/001909.html There was a discussion on the mailing list about choosing a built-in scripting language.]&lt;br /&gt;
&lt;br /&gt;
Many different scripting languages will be optionally available in the repository.   However,  developers who choose one of these languages for their applications will not be able to see their applications included in the standard ROM nor available for use by those without an external microSD card.&lt;br /&gt;
&lt;br /&gt;
[http://lists.openmoko.org/pipermail/community/2007-January/001945.html As expressed by Corey]:&lt;br /&gt;
&lt;br /&gt;
''It's true that you have the ability to add anything to the phone.''&lt;br /&gt;
&lt;br /&gt;
''There's another important consideration to remember: OpenMoko is a platform also; an inherent aspect of such a platform is that it always come shipped with X standard api's available for developers. This is why FIC had to select a group of components: gcc, glibc, xorg/kdrive, dbus and gtk, for instance.''&lt;br /&gt;
&lt;br /&gt;
''They may decide that a scripting language would also be a necessary or beneficial feature to include in the base/standard platform''&lt;br /&gt;
&lt;br /&gt;
...&lt;br /&gt;
&lt;br /&gt;
''Choice is good.''&lt;br /&gt;
&lt;br /&gt;
''And so is having a known/standard/default/static api and platform to build from; when I begin writting commercial and/or free software for the OpenMoko, I will design my software according the existing OpenMoko specs, and thereby circumvent the necessity of having to verify that my customers/end users have first installed the necessary scripting language, which would additionally circumvent the probability that your phone will end up with every scripting language known to man.''&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
''&amp;gt; So having lua on my system would be more or less pointless as I don't use it myself.''&lt;br /&gt;
&lt;br /&gt;
''Less than one meg of space would be potentially wasted, true enough in your case. Know that there is probably plenty of other software on the OpenMoko platform that you, yourself, will not be using.''&lt;br /&gt;
&lt;br /&gt;
''Also realize that though _you_ may not be directly using this hypothetical scripting language, it is more than likely that one or more of the standard apps that ship with the phone will be using it, and that other 3rd party software that you may or may not install may also be using it.''&lt;br /&gt;
&lt;br /&gt;
[http://lists.openmoko.org/pipermail/community/2007-January/001947.html Derek Pressnall also expressed it well:]&lt;br /&gt;
&lt;br /&gt;
''The reason is the same reason the device is being shipped with a given kernel (Linux), a given set of libraries (glibc, gtk), etc.  So that when a developer writes an application, it will be known to be able to run on all shipped devices.  So, in this light, it may be benificial to included a standard interpreted language that can be a known&lt;br /&gt;
target. ''&lt;br /&gt;
&lt;br /&gt;
''The benefits to having an interpreter included (esp. one that has hooks into the gui and other phone functions) are that more apps will be made available -- there are more hackers that can code up quick scripts than ones that will learn &amp;amp; code for a specific gui accessible only from a compiled language.  And, the benefit of having a particular interpreter is that when these little apps / scripts are packaged up, you don't have a dependancy nightmare (even though this can be somewhat mitigated by a good package management system, it is only as good as the backend repository, and having self-contained packages are the simplest of all).  Also, by settling on a single standard, even if it is one that some developers may have to learn, it makes it more worthwhile to learn a new scripting environment that is widely deployed on your target platform.  But for these same reasons, the interpreted language target will need careful consideration, lest we get stuck with something that doesn't adequetly meet most needs.''&lt;br /&gt;
&lt;br /&gt;
''As a secondary issue, if the included interpreter is easily embeddable, then it would be nice to have it as the standard across all the included applets that can use it (i.e., it would be good if the email/sms client, phonebook manager, dialer, etc. were all scriptable).''&lt;br /&gt;
&lt;br /&gt;
''But whatever is decided on (if a single language is picked), a function library should be developed for it that includes access to all the phone specific features (in addition to the gui hooks).''&lt;br /&gt;
&lt;br /&gt;
[[http://lists.openmoko.org/pipermail/community/2007-January/001955.html and Ben Burdette:]]&lt;br /&gt;
&lt;br /&gt;
''That's all well and good when everyone has SPACE for every scripting  language known to man.  But use 10mb here, 10mb there for scripting languages, and suddenly there's nothing left of my 64mb of flash. ''&lt;br /&gt;
&lt;br /&gt;
''I'm all for allowing people to use whatever scripting language they want.  But I'd like the peace of mind of knowing I can write a scripted app that will run on every OpenMoko phone out there, even if they have no memory expansion card.  I don't want the situation where the poor user has to unload someone else's app and scripting environment in order to use mine, or vice versa. ''&lt;br /&gt;
&lt;br /&gt;
Bryan Larsen adds:&lt;br /&gt;
&lt;br /&gt;
''It'll be faster for me to develop my apps in Ruby-GTK2 and then port to C once the application stabilizes, since so much of the actual work involves playing with and discarding various ideas.  Why should I have to go through the totally unnecessary step of transliterating my code into C just so it can be used by mainstream users?  I don't really care if Ruby or Python or even Javascript is chosen, I just want something for rapid development that I can ship without translating!''&lt;br /&gt;
&lt;br /&gt;
For all these reasons, a choice should be made, and it should be made quickly.  A scripting language should be chosen and &amp;quot;blessed&amp;quot;; actual implementation on OpenMoko is a much lower priority as most people will likely be (or should be) prototyping their applications on a PC anyways.&lt;br /&gt;
&lt;br /&gt;
== Factors to Consider ==&lt;br /&gt;
&lt;br /&gt;
# '''How popular is it?''' The fewer people that need to learn a new language, the less whining we'll get on the list when it's chosen.&lt;br /&gt;
# '''How big is the run time environment?'''  This is perhaps the most important question, since we are trying to fit into a very small fraction of the 64MB of space available in the OpenMoko ROM.  We only need the run time environment; it is expected that developers will have a PC or microSD card to compile to the intermediate form used by the scripting language.  It's also presumed that a stripped down, precompiled standard library will be included.&lt;br /&gt;
# '''Is it easy to learn?'''  Assuming that the user has already learned some Algol influenced language, (ie pretty much every language in widespread current use except for Lisp and FORTRAN), how easy is it to learn?&lt;br /&gt;
# '''How advanced is it?'''  We want to include a language that people will use.  Specifically I'm going to look for &amp;quot;closures&amp;quot; and &amp;quot;meta-programming&amp;quot; as a measure of how &amp;quot;advanced&amp;quot; the language is.  These are very arbitrary choices, but they are something I've found useful.  If you have any other pet measures, let me know!&lt;br /&gt;
# '''Does it have bindings to GTK2, OpenMoko-libs and D-BUS?'''  These three things will be required to write applications that look and feel like OpenMoko apps, as well as interact well with the built-in applications.&lt;br /&gt;
# '''How does it perform?'''  Performance is usually not a major concern for a scripting language, but due to the limited horsepower available on phones, it is a concern.&lt;br /&gt;
# '''Is it embeddable?'''  Traditionally in the Unix world, applications were small tools bound together by scripts and pipes.  Traditionally in the Windows world, applications were huge monolothic beasts that were scriptable using a built-in scripting language such as Visual Basic for Applications.  This model is also used in the Unix world, Emacs being the classic example.  A hybrid model has emerged and become popular in modern Unix GUI's such as OSX, Gnome and KDE: applications expose a scripting friendly API via D-BUS, CORBA or Applescript so that external scripts can appear to act as internal scripts.  If the scripting language chosen is easily embeddable, all three models become available on OpenMoko.  It's expected that the third model will be the most popular, but the second model may have size/overhead advantages.&lt;br /&gt;
# '''What major applications of interest''' are available in the language and would be useful on OpenMoko?&lt;br /&gt;
&lt;br /&gt;
== The Languages (already included) ==&lt;br /&gt;
&lt;br /&gt;
=== BASH / Shell scripts ===&lt;br /&gt;
&lt;br /&gt;
# already included, useful for most cases - [http://99-bottles-of-beer.net/language-bash-98.html example]&lt;br /&gt;
# Shell is a very popular scripting language.&lt;br /&gt;
# There will be a shell of some form available on OpenMoko, therefore it is &amp;quot;free&amp;quot;.&lt;br /&gt;
# Shell is idiosyncratic, but all Unix developers know it in at least a very limited degree.&lt;br /&gt;
# Shell is a full language, but can hardly be compared to languages designed monolithically.  :)&lt;br /&gt;
# D-BUS is usable from the command line.  GTK2 may be used via [http://www.gtk-server.org/index.html gtk-server].&lt;br /&gt;
&lt;br /&gt;
=== AWK ===&lt;br /&gt;
&lt;br /&gt;
# already included, very powerful - [http://99-bottles-of-beer.net/language-awk-53.html example]&lt;br /&gt;
&lt;br /&gt;
=== SED ===&lt;br /&gt;
&lt;br /&gt;
# already included, useful together with bash / awk [http://99-bottles-of-beer.net/language-sed-1087.html example1],[http://www.student.northpark.edu/pemente/sed/sed1line.txt example2]&lt;br /&gt;
&lt;br /&gt;
=== Javascript ===&lt;br /&gt;
&lt;br /&gt;
# Javascript is a very popular scripting language because it's the defacto web user-side scripting language.&lt;br /&gt;
# Javascript will be available on whichever web browser is included in the project, therefore it is &amp;quot;free&amp;quot;.&lt;br /&gt;
# Javascript has a straightforward C-style syntax.  Core Javascript is actually a very nice language; it gets a bad rap because of inconsistencies in implementation and bugs in the various browsers.&lt;br /&gt;
# Closures are very popular in Javascript.  Metaprogramming is possible; JSON is an example of a form of such.&lt;br /&gt;
# An incomplete set of bindings for GTK2 are [http://oss.mps.com.sg/GtkJavaScript available here.].  [http://www.gtk-server.org/index.html gtk-server] may be used instead if those bindings are insufficient.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== The Languages (not included) ==&lt;br /&gt;
&lt;br /&gt;
''Warning: opinions ahead''&lt;br /&gt;
&lt;br /&gt;
=== Lua ===&lt;br /&gt;
&lt;br /&gt;
# Lua is a moderately popular scripting language popular in video games and in Brazil.  &lt;br /&gt;
# It has a tiny footprint: 150K claimed, the run time environment takes up around 400K in OpenZaurus.  &lt;br /&gt;
# Lua has a simple syntax and is easy to learn.  &lt;br /&gt;
# It has first class closures.  A fundamental building block of Lua is the ability to redefine any defined or undefined aspect of the language; this provides a basic metaprogramming ability.  [[http://metalua.luaforge.net/ metalua] provides full metaprogramming, if such extremes are needed.  &lt;br /&gt;
# Bindings are available for GTK2.&lt;br /&gt;
# Performance is very similar to Python or Perl&lt;br /&gt;
# It is very easy to embed.  &lt;br /&gt;
&lt;br /&gt;
=== Python ===&lt;br /&gt;
&lt;br /&gt;
# Python is an extremely popular scripting language.&lt;br /&gt;
# By stripping down the standard libraries to the edge of usability, it can be made to fit within 1MB.  (claim unverified).   I suspect that 3MB is a more usable number.&lt;br /&gt;
# Designed as an educational language, it is easy to learn.  &lt;br /&gt;
# It has closures, although they were a late addition to the language.  Metaprogramming is very difficult.  &lt;br /&gt;
# Bindings are available for GTK2 and D-BUS.  GTK bindings are part of the Gnome project.&lt;br /&gt;
# Performance is good.  Psyco can make it extremely good, but that is unlikely to be available to OpenMoko.&lt;br /&gt;
# Python can be embedded, although not trivially.&lt;br /&gt;
# OLPC uses Python heavily and may produce applications suitable for porting to OpenMoko&lt;br /&gt;
&lt;br /&gt;
=== Ruby ===&lt;br /&gt;
&lt;br /&gt;
# Ruby is a popular scripting language.  &lt;br /&gt;
# Size is unknown, although comparable to Python, I suspect.  &lt;br /&gt;
# Ruby is seen by many to be an excellent compromise between the terseness and power of Perl and the readability and ease of learning of Python.  &lt;br /&gt;
# It has closures.  Metaprogramming can be hairy, but Rails is an excellent example of the beautiful results it can acheive.  &lt;br /&gt;
# Bindings are available for GTK2 and D-BUS.&lt;br /&gt;
# Performance is worse than Python or Perl in current versions, although the next version of Ruby is likely to be much better.&lt;br /&gt;
&lt;br /&gt;
=== Perl ===&lt;br /&gt;
&lt;br /&gt;
# Perl is an extremely popular scripting language.  &lt;br /&gt;
# Sizewise, it is likely to be a little bit smaller than Python or Ruby.&lt;br /&gt;
# It is not generally considered an easy language to learn.  This is probably mostly due to the idiosyncrasy of typical Perl programs.  Perl is generally easier to write than to read or maintain, most other languages are the other way around.   &lt;br /&gt;
# Perl has first class closures.  Perl's metaprogramming abilities lie between that of Python and Ruby.&lt;br /&gt;
# Perl has existed for a considerable amount of time in comparison to other scripting languages, which means it is stable and boasts an extensive amount of third-party libraries/modules.&lt;br /&gt;
# Bindings are available to GTK2 and D-BUS.  Gtk bindings are part of the GNOME project.&lt;br /&gt;
&lt;br /&gt;
=== Lisp/Scheme/Guile ===&lt;br /&gt;
&lt;br /&gt;
# There are a lot of Lisp variants available.  It is the second oldest high-level programming language available, yet still retains moderate popularity for new projects.&lt;br /&gt;
# Lisp variants have been run on 16K computers.  Usable variants are substantially larger, but will be significantly smaller than Python.&lt;br /&gt;
# Lisp syntax is very simple, and hated by many.  :)&lt;br /&gt;
# Modern lisp variants are more &amp;quot;powerful&amp;quot; than every other language listed here.&lt;br /&gt;
# GTK2 and D-BUS bindings are available&lt;br /&gt;
&lt;br /&gt;
=== Java ===&lt;br /&gt;
&lt;br /&gt;
# Not a scripting language, but Java does offer garbage collection and a few features that make development slightly faster than C.  A J2ME JVM is ubiquitous on competing cell phones so is likely to be included in OpenMoko for purely competitive reasons.&lt;br /&gt;
# A full J2ME implementation takes about 2 Megabytes of space.  [http://developers.sun.com/techtopics/mobility/getstart/articles/survey/ (reading in between the lines here.  I could be very wrong)].  However since it's likely to be included in the phone for other reasons it can be considered &amp;quot;free&amp;quot;.&lt;br /&gt;
# Java is very C-like.&lt;br /&gt;
# Java is not a scripting language and doesn't support advanced scripting language features.&lt;br /&gt;
# libswt-gtk provides uses GTK2 to display SWT java apps, and libgtk-java provides a direct binding.&lt;br /&gt;
&lt;br /&gt;
=== JRuby ===&lt;br /&gt;
&lt;br /&gt;
# JRuby is a version of ruby that runs on the JVM.  Jython is also available although it appears that JRuby is being more actively supported by Sun.&lt;br /&gt;
# If a JVM is on the phone, then JRuby is &amp;quot;free&amp;quot;.&lt;br /&gt;
#&lt;br /&gt;
#&lt;br /&gt;
# JRuby can use the Java bindings to GTK2.&lt;br /&gt;
&lt;br /&gt;
== Summary ==&lt;br /&gt;
&lt;br /&gt;
If the space is available, the most popular choices will be Ruby and Python.  Python is currently more popular, however Ruby is gaining ground fast.  The choice between the two is political.  Neither is wrong; you'll offend people making either choice.  However, &amp;quot;both&amp;quot; is a very expensive option, so a choice will have to be made.&lt;br /&gt;
&lt;br /&gt;
If the space is more limited, Lua and Scheme are probably the best choices.  Unless your developers include a large number of grey-bearded Lisp hackers, Lua is probably the best choice.  This may be unfortunate, but it is so.&lt;br /&gt;
&lt;br /&gt;
If an appropriate amount of manpower is available to bring the bindings up to snuff, the &amp;quot;free&amp;quot; choice of Javascript may be the best choice of all.&lt;br /&gt;
&lt;br /&gt;
JRuby is also an interesting choice.  It's very likely that a J2ME JVM will be included in the standard installation for purely competitive reasons, so JRuby is very close to free with a little bit of work.&lt;br /&gt;
&lt;br /&gt;
--[[User:Bryan Larsen|Bryan Larsen]] 21:44, 3 April 2007 (CEST)&lt;br /&gt;
&lt;br /&gt;
[[Category:Ideas]]&lt;/div&gt;</summary>
		<author><name>Placid</name></author>	</entry>

	<entry>
		<id>http://wiki.openmoko.org/wiki/Wishlist/BuiltInScriptingLanguage</id>
		<title>Wishlist/BuiltInScriptingLanguage</title>
		<link rel="alternate" type="text/html" href="http://wiki.openmoko.org/wiki/Wishlist/BuiltInScriptingLanguage"/>
				<updated>2007-04-12T13:57:41Z</updated>
		
		<summary type="html">&lt;p&gt;Placid: /* Perl */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{Wishlist}}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Discussion ==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[http://lists.openmoko.org/pipermail/community/2007-January/001909.html There was a discussion on the mailing list about choosing a built-in scripting language.]&lt;br /&gt;
&lt;br /&gt;
Many different scripting languages will be optionally available in the repository.   However,  developers who choose one of these languages for their applications will not be able to see their applications included in the standard ROM nor available for use by those without an external microSD card.&lt;br /&gt;
&lt;br /&gt;
[http://lists.openmoko.org/pipermail/community/2007-January/001945.html As expressed by Corey]:&lt;br /&gt;
&lt;br /&gt;
''It's true that you have the ability to add anything to the phone.''&lt;br /&gt;
&lt;br /&gt;
''There's another important consideration to remember: OpenMoko is a platform also; an inherent aspect of such a platform is that it always come shipped with X standard api's available for developers. This is why FIC had to select a group of components: gcc, glibc, xorg/kdrive, dbus and gtk, for instance.''&lt;br /&gt;
&lt;br /&gt;
''They may decide that a scripting language would also be a necessary or beneficial feature to include in the base/standard platform''&lt;br /&gt;
&lt;br /&gt;
...&lt;br /&gt;
&lt;br /&gt;
''Choice is good.''&lt;br /&gt;
&lt;br /&gt;
''And so is having a known/standard/default/static api and platform to build from; when I begin writting commercial and/or free software for the OpenMoko, I will design my software according the existing OpenMoko specs, and thereby circumvent the necessity of having to verify that my customers/end users have first installed the necessary scripting language, which would additionally circumvent the probability that your phone will end up with every scripting language known to man.''&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
''&amp;gt; So having lua on my system would be more or less pointless as I don't use it myself.''&lt;br /&gt;
&lt;br /&gt;
''Less than one meg of space would be potentially wasted, true enough in your case. Know that there is probably plenty of other software on the OpenMoko platform that you, yourself, will not be using.''&lt;br /&gt;
&lt;br /&gt;
''Also realize that though _you_ may not be directly using this hypothetical scripting language, it is more than likely that one or more of the standard apps that ship with the phone will be using it, and that other 3rd party software that you may or may not install may also be using it.''&lt;br /&gt;
&lt;br /&gt;
[http://lists.openmoko.org/pipermail/community/2007-January/001947.html Derek Pressnall also expressed it well:]&lt;br /&gt;
&lt;br /&gt;
''The reason is the same reason the device is being shipped with a given kernel (Linux), a given set of libraries (glibc, gtk), etc.  So that when a developer writes an application, it will be known to be able to run on all shipped devices.  So, in this light, it may be benificial to included a standard interpreted language that can be a known&lt;br /&gt;
target. ''&lt;br /&gt;
&lt;br /&gt;
''The benefits to having an interpreter included (esp. one that has hooks into the gui and other phone functions) are that more apps will be made available -- there are more hackers that can code up quick scripts than ones that will learn &amp;amp; code for a specific gui accessible only from a compiled language.  And, the benefit of having a particular interpreter is that when these little apps / scripts are packaged up, you don't have a dependancy nightmare (even though this can be somewhat mitigated by a good package management system, it is only as good as the backend repository, and having self-contained packages are the simplest of all).  Also, by settling on a single standard, even if it is one that some developers may have to learn, it makes it more worthwhile to learn a new scripting environment that is widely deployed on your target platform.  But for these same reasons, the interpreted language target will need careful consideration, lest we get stuck with something that doesn't adequetly meet most needs.''&lt;br /&gt;
&lt;br /&gt;
''As a secondary issue, if the included interpreter is easily embeddable, then it would be nice to have it as the standard across all the included applets that can use it (i.e., it would be good if the email/sms client, phonebook manager, dialer, etc. were all scriptable).''&lt;br /&gt;
&lt;br /&gt;
''But whatever is decided on (if a single language is picked), a function library should be developed for it that includes access to all the phone specific features (in addition to the gui hooks).''&lt;br /&gt;
&lt;br /&gt;
[[http://lists.openmoko.org/pipermail/community/2007-January/001955.html and Ben Burdette:]]&lt;br /&gt;
&lt;br /&gt;
''That's all well and good when everyone has SPACE for every scripting  language known to man.  But use 10mb here, 10mb there for scripting languages, and suddenly there's nothing left of my 64mb of flash. ''&lt;br /&gt;
&lt;br /&gt;
''I'm all for allowing people to use whatever scripting language they want.  But I'd like the peace of mind of knowing I can write a scripted app that will run on every OpenMoko phone out there, even if they have no memory expansion card.  I don't want the situation where the poor user has to unload someone else's app and scripting environment in order to use mine, or vice versa. ''&lt;br /&gt;
&lt;br /&gt;
Bryan Larsen adds:&lt;br /&gt;
&lt;br /&gt;
''It'll be faster for me to develop my apps in Ruby-GTK2 and then port to C once the application stabilizes, since so much of the actual work involves playing with and discarding various ideas.  Why should I have to go through the totally unnecessary step of transliterating my code into C just so it can be used by mainstream users?  I don't really care if Ruby or Python or even Javascript is chosen, I just want something for rapid development that I can ship without translating!''&lt;br /&gt;
&lt;br /&gt;
For all these reasons, a choice should be made, and it should be made quickly.  A scripting language should be chosen and &amp;quot;blessed&amp;quot;; actual implementation on OpenMoko is a much lower priority as most people will likely be (or should be) prototyping their applications on a PC anyways.&lt;br /&gt;
&lt;br /&gt;
== Factors to Consider ==&lt;br /&gt;
&lt;br /&gt;
# '''How popular is it?''' The fewer people that need to learn a new language, the less whining we'll get on the list when it's chosen.&lt;br /&gt;
# '''How big is the run time environment?'''  This is perhaps the most important question, since we are trying to fit into a very small fraction of the 64MB of space available in the OpenMoko ROM.  We only need the run time environment; it is expected that developers will have a PC or microSD card to compile to the intermediate form used by the scripting language.  It's also presumed that a stripped down, precompiled standard library will be included.&lt;br /&gt;
# '''Is it easy to learn?'''  Assuming that the user has already learned some Algol influenced language, (ie pretty much every language in widespread current use except for Lisp and FORTRAN), how easy is it to learn?&lt;br /&gt;
# '''How advanced is it?'''  We want to include a language that people will use.  Specifically I'm going to look for &amp;quot;closures&amp;quot; and &amp;quot;meta-programming&amp;quot; as a measure of how &amp;quot;advanced&amp;quot; the language is.  These are very arbitrary choices, but they are something I've found useful.  If you have any other pet measures, let me know!&lt;br /&gt;
# '''Does it have bindings to GTK2, OpenMoko-libs and D-BUS?'''  These three things will be required to write applications that look and feel like OpenMoko apps, as well as interact well with the built-in applications.&lt;br /&gt;
# '''How does it perform?'''  Performance is usually not a major concern for a scripting language, but due to the limited horsepower available on phones, it is a concern.&lt;br /&gt;
# '''Is it embeddable?'''  Traditionally in the Unix world, applications were small tools bound together by scripts and pipes.  Traditionally in the Windows world, applications were huge monolothic beasts that were scriptable using a built-in scripting language such as Visual Basic for Applications.  This model is also used in the Unix world, Emacs being the classic example.  A hybrid model has emerged and become popular in modern Unix GUI's such as OSX, Gnome and KDE: applications expose a scripting friendly API via D-BUS, CORBA or Applescript so that external scripts can appear to act as internal scripts.  If the scripting language chosen is easily embeddable, all three models become available on OpenMoko.  It's expected that the third model will be the most popular, but the second model may have size/overhead advantages.&lt;br /&gt;
# '''What major applications of interest''' are available in the language and would be useful on OpenMoko?&lt;br /&gt;
&lt;br /&gt;
== The Languages (already included) ==&lt;br /&gt;
&lt;br /&gt;
=== BASH / Shell scripts ===&lt;br /&gt;
&lt;br /&gt;
# already included, useful for most cases - [http://99-bottles-of-beer.net/language-bash-98.html example]&lt;br /&gt;
# Shell is a very popular scripting language.&lt;br /&gt;
# There will be a shell of some form available on OpenMoko, therefore it is &amp;quot;free&amp;quot;.&lt;br /&gt;
# Shell is idiosyncratic, but all Unix developers know it in at least a very limited degree.&lt;br /&gt;
# Shell is a full language, but can hardly be compared to languages designed monolithically.  :)&lt;br /&gt;
# D-BUS is usable from the command line.  GTK2 may be used via [http://www.gtk-server.org/index.html gtk-server].&lt;br /&gt;
&lt;br /&gt;
=== AWK ===&lt;br /&gt;
&lt;br /&gt;
# already included, very powerful - [http://99-bottles-of-beer.net/language-awk-53.html example]&lt;br /&gt;
&lt;br /&gt;
=== SED ===&lt;br /&gt;
&lt;br /&gt;
# already included, useful together with bash / awk [http://99-bottles-of-beer.net/language-sed-1087.html example1],[http://www.student.northpark.edu/pemente/sed/sed1line.txt example2]&lt;br /&gt;
&lt;br /&gt;
=== Javascript ===&lt;br /&gt;
&lt;br /&gt;
# Javascript is a very popular scripting language because it's the defacto web user-side scripting language.&lt;br /&gt;
# Javascript will be available on whichever web browser is included in the project, therefore it is &amp;quot;free&amp;quot;.&lt;br /&gt;
# Javascript has a straightforward C-style syntax.  Core Javascript is actually a very nice language; it gets a bad rap because of inconsistencies in implementation and bugs in the various browsers.&lt;br /&gt;
# Closures are very popular in Javascript.  Metaprogramming is possible; JSON is an example of a form of such.&lt;br /&gt;
# An incomplete set of bindings for GTK2 are [http://oss.mps.com.sg/GtkJavaScript available here.].  [http://www.gtk-server.org/index.html gtk-server] may be used instead if those bindings are insufficient.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== The Languages (not included) ==&lt;br /&gt;
&lt;br /&gt;
''Warning: opinions ahead''&lt;br /&gt;
&lt;br /&gt;
=== Lua ===&lt;br /&gt;
&lt;br /&gt;
# Lua is a moderately popular scripting language popular in video games and in Brazil.  &lt;br /&gt;
# It has a tiny footprint: 150K claimed, the run time environment takes up around 400K in OpenZaurus.  &lt;br /&gt;
# Lua has a simple syntax and is easy to learn.  &lt;br /&gt;
# It has first class closures.  A fundamental building block of Lua is the ability to redefine any defined or undefined aspect of the language; this provides a basic metaprogramming ability.  [[http://metalua.luaforge.net/ metalua] provides full metaprogramming, if such extremes are needed.  &lt;br /&gt;
# Bindings are available for GTK2.&lt;br /&gt;
# Performance is very similar to Python or Perl&lt;br /&gt;
# It is very easy to embed.  &lt;br /&gt;
&lt;br /&gt;
=== Python ===&lt;br /&gt;
&lt;br /&gt;
# Python is an extremely popular scripting language.&lt;br /&gt;
# By stripping down the standard libraries to the edge of usability, it can be made to fit within 1MB.  (claim unverified).   I suspect that 3MB is a more usable number.&lt;br /&gt;
# Designed as an educational language, it is easy to learn.  &lt;br /&gt;
# It has closures, although they were a late addition to the language.  Metaprogramming is very difficult.  &lt;br /&gt;
# Bindings are available for GTK2 and D-BUS.  GTK bindings are part of the Gnome project.&lt;br /&gt;
# Performance is good.  Psyco can make it extremely good, but that is unlikely to be available to OpenMoko.&lt;br /&gt;
# Python can be embedded, although not trivially.&lt;br /&gt;
# OLPC uses Python heavily and may produce applications suitable for porting to OpenMoko&lt;br /&gt;
&lt;br /&gt;
=== Ruby ===&lt;br /&gt;
&lt;br /&gt;
# Ruby is a popular scripting language.  &lt;br /&gt;
# Size is unknown, although comparable to Python, I suspect.  &lt;br /&gt;
# Ruby is seen by many to be an excellent compromise between the terseness and power of Perl and the readability and ease of learning of Python.  &lt;br /&gt;
# It has closures.  Metaprogramming can be hairy, but Rails is an excellent example of the beautiful results it can acheive.  &lt;br /&gt;
# Bindings are available for GTK2 and D-BUS.&lt;br /&gt;
# Performance is worse than Python or Perl in current versions, although the next version of Ruby is likely to be much better.&lt;br /&gt;
&lt;br /&gt;
=== Perl ===&lt;br /&gt;
&lt;br /&gt;
# Perl is a very popular scripting language.  &lt;br /&gt;
# Sizewise, it is likely to be a little bit smaller than Python or Ruby.&lt;br /&gt;
# It is not generally considered an easy language to learn.  This is probably mostly due to the idiosyncrasy of typical Perl programs.  Perl is generally easier to write than to read or maintain, most other languages are the other way around.   &lt;br /&gt;
# Perl has first class closures.  Perl's metaprogramming abilities lie between that of Python and Ruby.&lt;br /&gt;
# Perl has existed for a considerable amount of time in comparison to other scripting languages, which means it is stable and boasts an extensive amount of third-party libraries/modules.&lt;br /&gt;
# Bindings are available to GTK2 and D-BUS.  Gtk bindings are part of the GNOME project.&lt;br /&gt;
&lt;br /&gt;
=== Lisp/Scheme/Guile ===&lt;br /&gt;
&lt;br /&gt;
# There are a lot of Lisp variants available.  It is the second oldest high-level programming language available, yet still retains moderate popularity for new projects.&lt;br /&gt;
# Lisp variants have been run on 16K computers.  Usable variants are substantially larger, but will be significantly smaller than Python.&lt;br /&gt;
# Lisp syntax is very simple, and hated by many.  :)&lt;br /&gt;
# Modern lisp variants are more &amp;quot;powerful&amp;quot; than every other language listed here.&lt;br /&gt;
# GTK2 and D-BUS bindings are available&lt;br /&gt;
&lt;br /&gt;
=== Java ===&lt;br /&gt;
&lt;br /&gt;
# Not a scripting language, but Java does offer garbage collection and a few features that make development slightly faster than C.  A J2ME JVM is ubiquitous on competing cell phones so is likely to be included in OpenMoko for purely competitive reasons.&lt;br /&gt;
# A full J2ME implementation takes about 2 Megabytes of space.  [http://developers.sun.com/techtopics/mobility/getstart/articles/survey/ (reading in between the lines here.  I could be very wrong)].  However since it's likely to be included in the phone for other reasons it can be considered &amp;quot;free&amp;quot;.&lt;br /&gt;
# Java is very C-like.&lt;br /&gt;
# Java is not a scripting language and doesn't support advanced scripting language features.&lt;br /&gt;
# libswt-gtk provides uses GTK2 to display SWT java apps, and libgtk-java provides a direct binding.&lt;br /&gt;
&lt;br /&gt;
=== JRuby ===&lt;br /&gt;
&lt;br /&gt;
# JRuby is a version of ruby that runs on the JVM.  Jython is also available although it appears that JRuby is being more actively supported by Sun.&lt;br /&gt;
# If a JVM is on the phone, then JRuby is &amp;quot;free&amp;quot;.&lt;br /&gt;
#&lt;br /&gt;
#&lt;br /&gt;
# JRuby can use the Java bindings to GTK2.&lt;br /&gt;
&lt;br /&gt;
== Summary ==&lt;br /&gt;
&lt;br /&gt;
If the space is available, the most popular choices will be Ruby and Python.  Python is currently more popular, however Ruby is gaining ground fast.  The choice between the two is political.  Neither is wrong; you'll offend people making either choice.  However, &amp;quot;both&amp;quot; is a very expensive option, so a choice will have to be made.&lt;br /&gt;
&lt;br /&gt;
If the space is more limited, Lua and Scheme are probably the best choices.  Unless your developers include a large number of grey-bearded Lisp hackers, Lua is probably the best choice.  This may be unfortunate, but it is so.&lt;br /&gt;
&lt;br /&gt;
If an appropriate amount of manpower is available to bring the bindings up to snuff, the &amp;quot;free&amp;quot; choice of Javascript may be the best choice of all.&lt;br /&gt;
&lt;br /&gt;
JRuby is also an interesting choice.  It's very likely that a J2ME JVM will be included in the standard installation for purely competitive reasons, so JRuby is very close to free with a little bit of work.&lt;br /&gt;
&lt;br /&gt;
--[[User:Bryan Larsen|Bryan Larsen]] 21:44, 3 April 2007 (CEST)&lt;br /&gt;
&lt;br /&gt;
[[Category:Ideas]]&lt;/div&gt;</summary>
		<author><name>Placid</name></author>	</entry>

	<entry>
		<id>http://wiki.openmoko.org/wiki/Wishlist/BuiltInScriptingLanguage</id>
		<title>Wishlist/BuiltInScriptingLanguage</title>
		<link rel="alternate" type="text/html" href="http://wiki.openmoko.org/wiki/Wishlist/BuiltInScriptingLanguage"/>
				<updated>2007-04-12T13:41:43Z</updated>
		
		<summary type="html">&lt;p&gt;Placid: /* Perl */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{Wishlist}}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Discussion ==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[http://lists.openmoko.org/pipermail/community/2007-January/001909.html There was a discussion on the mailing list about choosing a built-in scripting language.]&lt;br /&gt;
&lt;br /&gt;
Many different scripting languages will be optionally available in the repository.   However,  developers who choose one of these languages for their applications will not be able to see their applications included in the standard ROM nor available for use by those without an external microSD card.&lt;br /&gt;
&lt;br /&gt;
[http://lists.openmoko.org/pipermail/community/2007-January/001945.html As expressed by Corey]:&lt;br /&gt;
&lt;br /&gt;
''It's true that you have the ability to add anything to the phone.''&lt;br /&gt;
&lt;br /&gt;
''There's another important consideration to remember: OpenMoko is a platform also; an inherent aspect of such a platform is that it always come shipped with X standard api's available for developers. This is why FIC had to select a group of components: gcc, glibc, xorg/kdrive, dbus and gtk, for instance.''&lt;br /&gt;
&lt;br /&gt;
''They may decide that a scripting language would also be a necessary or beneficial feature to include in the base/standard platform''&lt;br /&gt;
&lt;br /&gt;
...&lt;br /&gt;
&lt;br /&gt;
''Choice is good.''&lt;br /&gt;
&lt;br /&gt;
''And so is having a known/standard/default/static api and platform to build from; when I begin writting commercial and/or free software for the OpenMoko, I will design my software according the existing OpenMoko specs, and thereby circumvent the necessity of having to verify that my customers/end users have first installed the necessary scripting language, which would additionally circumvent the probability that your phone will end up with every scripting language known to man.''&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
''&amp;gt; So having lua on my system would be more or less pointless as I don't use it myself.''&lt;br /&gt;
&lt;br /&gt;
''Less than one meg of space would be potentially wasted, true enough in your case. Know that there is probably plenty of other software on the OpenMoko platform that you, yourself, will not be using.''&lt;br /&gt;
&lt;br /&gt;
''Also realize that though _you_ may not be directly using this hypothetical scripting language, it is more than likely that one or more of the standard apps that ship with the phone will be using it, and that other 3rd party software that you may or may not install may also be using it.''&lt;br /&gt;
&lt;br /&gt;
[http://lists.openmoko.org/pipermail/community/2007-January/001947.html Derek Pressnall also expressed it well:]&lt;br /&gt;
&lt;br /&gt;
''The reason is the same reason the device is being shipped with a given kernel (Linux), a given set of libraries (glibc, gtk), etc.  So that when a developer writes an application, it will be known to be able to run on all shipped devices.  So, in this light, it may be benificial to included a standard interpreted language that can be a known&lt;br /&gt;
target. ''&lt;br /&gt;
&lt;br /&gt;
''The benefits to having an interpreter included (esp. one that has hooks into the gui and other phone functions) are that more apps will be made available -- there are more hackers that can code up quick scripts than ones that will learn &amp;amp; code for a specific gui accessible only from a compiled language.  And, the benefit of having a particular interpreter is that when these little apps / scripts are packaged up, you don't have a dependancy nightmare (even though this can be somewhat mitigated by a good package management system, it is only as good as the backend repository, and having self-contained packages are the simplest of all).  Also, by settling on a single standard, even if it is one that some developers may have to learn, it makes it more worthwhile to learn a new scripting environment that is widely deployed on your target platform.  But for these same reasons, the interpreted language target will need careful consideration, lest we get stuck with something that doesn't adequetly meet most needs.''&lt;br /&gt;
&lt;br /&gt;
''As a secondary issue, if the included interpreter is easily embeddable, then it would be nice to have it as the standard across all the included applets that can use it (i.e., it would be good if the email/sms client, phonebook manager, dialer, etc. were all scriptable).''&lt;br /&gt;
&lt;br /&gt;
''But whatever is decided on (if a single language is picked), a function library should be developed for it that includes access to all the phone specific features (in addition to the gui hooks).''&lt;br /&gt;
&lt;br /&gt;
[[http://lists.openmoko.org/pipermail/community/2007-January/001955.html and Ben Burdette:]]&lt;br /&gt;
&lt;br /&gt;
''That's all well and good when everyone has SPACE for every scripting  language known to man.  But use 10mb here, 10mb there for scripting languages, and suddenly there's nothing left of my 64mb of flash. ''&lt;br /&gt;
&lt;br /&gt;
''I'm all for allowing people to use whatever scripting language they want.  But I'd like the peace of mind of knowing I can write a scripted app that will run on every OpenMoko phone out there, even if they have no memory expansion card.  I don't want the situation where the poor user has to unload someone else's app and scripting environment in order to use mine, or vice versa. ''&lt;br /&gt;
&lt;br /&gt;
Bryan Larsen adds:&lt;br /&gt;
&lt;br /&gt;
''It'll be faster for me to develop my apps in Ruby-GTK2 and then port to C once the application stabilizes, since so much of the actual work involves playing with and discarding various ideas.  Why should I have to go through the totally unnecessary step of transliterating my code into C just so it can be used by mainstream users?  I don't really care if Ruby or Python or even Javascript is chosen, I just want something for rapid development that I can ship without translating!''&lt;br /&gt;
&lt;br /&gt;
For all these reasons, a choice should be made, and it should be made quickly.  A scripting language should be chosen and &amp;quot;blessed&amp;quot;; actual implementation on OpenMoko is a much lower priority as most people will likely be (or should be) prototyping their applications on a PC anyways.&lt;br /&gt;
&lt;br /&gt;
== Factors to Consider ==&lt;br /&gt;
&lt;br /&gt;
# '''How popular is it?''' The fewer people that need to learn a new language, the less whining we'll get on the list when it's chosen.&lt;br /&gt;
# '''How big is the run time environment?'''  This is perhaps the most important question, since we are trying to fit into a very small fraction of the 64MB of space available in the OpenMoko ROM.  We only need the run time environment; it is expected that developers will have a PC or microSD card to compile to the intermediate form used by the scripting language.  It's also presumed that a stripped down, precompiled standard library will be included.&lt;br /&gt;
# '''Is it easy to learn?'''  Assuming that the user has already learned some Algol influenced language, (ie pretty much every language in widespread current use except for Lisp and FORTRAN), how easy is it to learn?&lt;br /&gt;
# '''How advanced is it?'''  We want to include a language that people will use.  Specifically I'm going to look for &amp;quot;closures&amp;quot; and &amp;quot;meta-programming&amp;quot; as a measure of how &amp;quot;advanced&amp;quot; the language is.  These are very arbitrary choices, but they are something I've found useful.  If you have any other pet measures, let me know!&lt;br /&gt;
# '''Does it have bindings to GTK2, OpenMoko-libs and D-BUS?'''  These three things will be required to write applications that look and feel like OpenMoko apps, as well as interact well with the built-in applications.&lt;br /&gt;
# '''How does it perform?'''  Performance is usually not a major concern for a scripting language, but due to the limited horsepower available on phones, it is a concern.&lt;br /&gt;
# '''Is it embeddable?'''  Traditionally in the Unix world, applications were small tools bound together by scripts and pipes.  Traditionally in the Windows world, applications were huge monolothic beasts that were scriptable using a built-in scripting language such as Visual Basic for Applications.  This model is also used in the Unix world, Emacs being the classic example.  A hybrid model has emerged and become popular in modern Unix GUI's such as OSX, Gnome and KDE: applications expose a scripting friendly API via D-BUS, CORBA or Applescript so that external scripts can appear to act as internal scripts.  If the scripting language chosen is easily embeddable, all three models become available on OpenMoko.  It's expected that the third model will be the most popular, but the second model may have size/overhead advantages.&lt;br /&gt;
# '''What major applications of interest''' are available in the language and would be useful on OpenMoko?&lt;br /&gt;
&lt;br /&gt;
== The Languages (already included) ==&lt;br /&gt;
&lt;br /&gt;
=== BASH / Shell scripts ===&lt;br /&gt;
&lt;br /&gt;
# already included, useful for most cases - [http://99-bottles-of-beer.net/language-bash-98.html example]&lt;br /&gt;
# Shell is a very popular scripting language.&lt;br /&gt;
# There will be a shell of some form available on OpenMoko, therefore it is &amp;quot;free&amp;quot;.&lt;br /&gt;
# Shell is idiosyncratic, but all Unix developers know it in at least a very limited degree.&lt;br /&gt;
# Shell is a full language, but can hardly be compared to languages designed monolithically.  :)&lt;br /&gt;
# D-BUS is usable from the command line.  GTK2 may be used via [http://www.gtk-server.org/index.html gtk-server].&lt;br /&gt;
&lt;br /&gt;
=== AWK ===&lt;br /&gt;
&lt;br /&gt;
# already included, very powerful - [http://99-bottles-of-beer.net/language-awk-53.html example]&lt;br /&gt;
&lt;br /&gt;
=== SED ===&lt;br /&gt;
&lt;br /&gt;
# already included, useful together with bash / awk [http://99-bottles-of-beer.net/language-sed-1087.html example1],[http://www.student.northpark.edu/pemente/sed/sed1line.txt example2]&lt;br /&gt;
&lt;br /&gt;
=== Javascript ===&lt;br /&gt;
&lt;br /&gt;
# Javascript is a very popular scripting language because it's the defacto web user-side scripting language.&lt;br /&gt;
# Javascript will be available on whichever web browser is included in the project, therefore it is &amp;quot;free&amp;quot;.&lt;br /&gt;
# Javascript has a straightforward C-style syntax.  Core Javascript is actually a very nice language; it gets a bad rap because of inconsistencies in implementation and bugs in the various browsers.&lt;br /&gt;
# Closures are very popular in Javascript.  Metaprogramming is possible; JSON is an example of a form of such.&lt;br /&gt;
# An incomplete set of bindings for GTK2 are [http://oss.mps.com.sg/GtkJavaScript available here.].  [http://www.gtk-server.org/index.html gtk-server] may be used instead if those bindings are insufficient.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== The Languages (not included) ==&lt;br /&gt;
&lt;br /&gt;
''Warning: opinions ahead''&lt;br /&gt;
&lt;br /&gt;
=== Lua ===&lt;br /&gt;
&lt;br /&gt;
# Lua is a moderately popular scripting language popular in video games and in Brazil.  &lt;br /&gt;
# It has a tiny footprint: 150K claimed, the run time environment takes up around 400K in OpenZaurus.  &lt;br /&gt;
# Lua has a simple syntax and is easy to learn.  &lt;br /&gt;
# It has first class closures.  A fundamental building block of Lua is the ability to redefine any defined or undefined aspect of the language; this provides a basic metaprogramming ability.  [[http://metalua.luaforge.net/ metalua] provides full metaprogramming, if such extremes are needed.  &lt;br /&gt;
# Bindings are available for GTK2.&lt;br /&gt;
# Performance is very similar to Python or Perl&lt;br /&gt;
# It is very easy to embed.  &lt;br /&gt;
&lt;br /&gt;
=== Python ===&lt;br /&gt;
&lt;br /&gt;
# Python is an extremely popular scripting language.&lt;br /&gt;
# By stripping down the standard libraries to the edge of usability, it can be made to fit within 1MB.  (claim unverified).   I suspect that 3MB is a more usable number.&lt;br /&gt;
# Designed as an educational language, it is easy to learn.  &lt;br /&gt;
# It has closures, although they were a late addition to the language.  Metaprogramming is very difficult.  &lt;br /&gt;
# Bindings are available for GTK2 and D-BUS.  GTK bindings are part of the Gnome project.&lt;br /&gt;
# Performance is good.  Psyco can make it extremely good, but that is unlikely to be available to OpenMoko.&lt;br /&gt;
# Python can be embedded, although not trivially.&lt;br /&gt;
# OLPC uses Python heavily and may produce applications suitable for porting to OpenMoko&lt;br /&gt;
&lt;br /&gt;
=== Ruby ===&lt;br /&gt;
&lt;br /&gt;
# Ruby is a popular scripting language.  &lt;br /&gt;
# Size is unknown, although comparable to Python, I suspect.  &lt;br /&gt;
# Ruby is seen by many to be an excellent compromise between the terseness and power of Perl and the readability and ease of learning of Python.  &lt;br /&gt;
# It has closures.  Metaprogramming can be hairy, but Rails is an excellent example of the beautiful results it can acheive.  &lt;br /&gt;
# Bindings are available for GTK2 and D-BUS.&lt;br /&gt;
# Performance is worse than Python or Perl in current versions, although the next version of Ruby is likely to be much better.&lt;br /&gt;
&lt;br /&gt;
=== Perl ===&lt;br /&gt;
&lt;br /&gt;
# Perl is a very popular scripting language, although that popularity appears to be waning.  &lt;br /&gt;
# Sizewise, it is likely to be a little bit smaller than Python or Ruby.&lt;br /&gt;
# It is not generally considered an easy language to learn.  This is probably mostly due to the idiosyncrasy of typical Perl programs.  Perl is generally easier to write than to read or maintain, most other languages are the other way around.   &lt;br /&gt;
# Perl has first class closures.  Perl's metaprogramming abilities lie between that of Python and Ruby.&lt;br /&gt;
# Perl has existed for a considerable amount of time in comparison to other scripting languages, which means it is stable and boasts an extensive amount of third-party libraries/modules.&lt;br /&gt;
# Bindings are available to GTK2 and D-BUS.  Gtk bindings are part of the GNOME project.&lt;br /&gt;
&lt;br /&gt;
=== Lisp/Scheme/Guile ===&lt;br /&gt;
&lt;br /&gt;
# There are a lot of Lisp variants available.  It is the second oldest high-level programming language available, yet still retains moderate popularity for new projects.&lt;br /&gt;
# Lisp variants have been run on 16K computers.  Usable variants are substantially larger, but will be significantly smaller than Python.&lt;br /&gt;
# Lisp syntax is very simple, and hated by many.  :)&lt;br /&gt;
# Modern lisp variants are more &amp;quot;powerful&amp;quot; than every other language listed here.&lt;br /&gt;
# GTK2 and D-BUS bindings are available&lt;br /&gt;
&lt;br /&gt;
=== Java ===&lt;br /&gt;
&lt;br /&gt;
# Not a scripting language, but Java does offer garbage collection and a few features that make development slightly faster than C.  A J2ME JVM is ubiquitous on competing cell phones so is likely to be included in OpenMoko for purely competitive reasons.&lt;br /&gt;
# A full J2ME implementation takes about 2 Megabytes of space.  [http://developers.sun.com/techtopics/mobility/getstart/articles/survey/ (reading in between the lines here.  I could be very wrong)].  However since it's likely to be included in the phone for other reasons it can be considered &amp;quot;free&amp;quot;.&lt;br /&gt;
# Java is very C-like.&lt;br /&gt;
# Java is not a scripting language and doesn't support advanced scripting language features.&lt;br /&gt;
# libswt-gtk provides uses GTK2 to display SWT java apps, and libgtk-java provides a direct binding.&lt;br /&gt;
&lt;br /&gt;
=== JRuby ===&lt;br /&gt;
&lt;br /&gt;
# JRuby is a version of ruby that runs on the JVM.  Jython is also available although it appears that JRuby is being more actively supported by Sun.&lt;br /&gt;
# If a JVM is on the phone, then JRuby is &amp;quot;free&amp;quot;.&lt;br /&gt;
#&lt;br /&gt;
#&lt;br /&gt;
# JRuby can use the Java bindings to GTK2.&lt;br /&gt;
&lt;br /&gt;
== Summary ==&lt;br /&gt;
&lt;br /&gt;
If the space is available, the most popular choices will be Ruby and Python.  Python is currently more popular, however Ruby is gaining ground fast.  The choice between the two is political.  Neither is wrong; you'll offend people making either choice.  However, &amp;quot;both&amp;quot; is a very expensive option, so a choice will have to be made.&lt;br /&gt;
&lt;br /&gt;
If the space is more limited, Lua and Scheme are probably the best choices.  Unless your developers include a large number of grey-bearded Lisp hackers, Lua is probably the best choice.  This may be unfortunate, but it is so.&lt;br /&gt;
&lt;br /&gt;
If an appropriate amount of manpower is available to bring the bindings up to snuff, the &amp;quot;free&amp;quot; choice of Javascript may be the best choice of all.&lt;br /&gt;
&lt;br /&gt;
JRuby is also an interesting choice.  It's very likely that a J2ME JVM will be included in the standard installation for purely competitive reasons, so JRuby is very close to free with a little bit of work.&lt;br /&gt;
&lt;br /&gt;
--[[User:Bryan Larsen|Bryan Larsen]] 21:44, 3 April 2007 (CEST)&lt;br /&gt;
&lt;br /&gt;
[[Category:Ideas]]&lt;/div&gt;</summary>
		<author><name>Placid</name></author>	</entry>

	</feed>