[Sugar-devel] Sugar Digest 2010-08-10

2010-08-10 Thread Walter Bender
==Sugar Digest==

1. Since the early days of One Laptop per Child I spent a lot of
energy combating the accusations that OLPC's plan is to give hardware
to children, sit back, and wait for miracles to happen. The sustained
efforts of the Sugar community and the enormous investment in support
made by the various deployment teams around the world are tangible
evidence that we do not waiting for miracles – rather we are doing the
hard work to ensure that the opportunity to learn is made available to
every child. It is therefore disheartening to hear Nicholas Negroponte
once again say You can, you actually can [give a kid a laptop
connected to the Internet and walk away].
[http://news.cnet.com/8301-13860_3-20012926-56.html] While there is
much evidence to suggest that the informal time spent with computing
is valuable, we have a lot of work ahead of us in order to bridge the
gulf between using a computer and using a computer for learning. While
the much-hyped Whole-in-the-Wall Project demonstrated that children
can learn to use computers without any instruction, if we want them to
engage with powerful ideas, we must offer them more and better
contexts for learning – on their own, among their peers, and under the
guidance of a mentor.

2. I was on a short holiday last week, but I did have time to have
some fun reworking the Sugar Home View so that we can better support
more Activities (and perhaps eventually content). You can see some
sketches here: 
[http://wiki.sugarlabs.org/go/Features/Spiral_Home_View#Detailed_Description].
While there are many ideas kicking around about how we might improve
the Home View, including making it a normal Sugar Activity and further
integrating it into the Journal, I am hoping that this one change will
be complete in time to meet the looming feature freeze for 0.90.

3. Hilaire Fernandes announced the release 10.08 of the DrGeo Activity
[http://blog.ofset.org/hilaire/index.php?post/drgeo-xo-10.08-release].
For those of you have never used it, DrGeo is a great tool for
exploring advanced concepts in geometry.

===In the community===

4. There was an education mini-summit
[http://teachingopensource.org/index.php/LinuxCon_2010] at LinuxCon in
Boston. It was heavily geared towards Sugar with talks about Sugar in
RHEL 6 (Sebastian Dziallas) and Sugar on Ubuntu (Ian Daniher). There
was a very nice talk about using Inkscape in middle school by Máirín
Duffy of Red Hat employee. Alas, I missed both Karlie Robinson talk on
her Beginner Guide to FLOSS education and David Trask's update on the
Maine 1-to-1 computing initiative.

5. Constructionism 2010 - Paris
[http://www.aup.fr/news/special_events/constructionism2010.htm] begins
16 August at the American University of Paris.

===Sugar Labs===

Gary Martin has generated SOMs from the past few weeks of discussion
on the IAEP mailing list.

http://wiki.sugarlabs.org/go/File:2010-July-24-30-som.jpg| (25 emails)
http://wiki.sugarlabs.org/go/File:2010-Jul-31-Aug-6-som.jpg (44 emails)

Visit http://planet.sugarlabs.org for more updates about Sugar and
Sugar deployments.

-walter

-- 
Walter Bender
Sugar Labs
http://www.sugarlabs.org
___
Sugar-devel mailing list
Sugar-devel@lists.sugarlabs.org
http://lists.sugarlabs.org/listinfo/sugar-devel


[Sugar-devel] [ANNOUNCE] Feature and API/ABI Freeze approaching

2010-08-10 Thread Simon Schampijer
Dear Sugar community,

the Feature Freeze for Sucrose 0.90 is approaching. It will be due next 
Monday, the 16th of August [1].

If a feature you are working on is not listed at the 0.90 Feature page 
and you want to propose it for inclusion please do so *now* following 
the Feature Policy [3]. Please have in mind that you have to land your 
code by Feature Freeze and that it has to go through the review process [4].

If your Feature is not ready for this release, you should not worry too 
much, there will be another release in 6 months. Please make sure to 
propose it as early as possible.

Regards,
Simon

[1] http://wiki.sugarlabs.org/go/0.90/Roadmap#Schedule
[2] http://wiki.sugarlabs.org/go/0.90/Feature_List
[3] http://wiki.sugarlabs.org/go/Features/Policy
[4] http://wiki.sugarlabs.org/go/Development_Team/Code_Review
___
Sugar-devel mailing list
Sugar-devel@lists.sugarlabs.org
http://lists.sugarlabs.org/listinfo/sugar-devel


Re: [Sugar-devel] [ANNOUNCE] Feature and API/ABI Freeze approaching

2010-08-10 Thread Walter Bender
On Tue, Aug 10, 2010 at 2:11 PM, Simon Schampijer si...@schampijer.de wrote:
 Dear Sugar community,

 the Feature Freeze for Sucrose 0.90 is approaching. It will be due next
 Monday, the 16th of August [1].

I am still hoping to figure out how to get write to Journal at any
time feature [1] done in time for the freeze... it will be touch and
go as I still have a major blocker in getting the shell to know about
the object_id... Stay tuned.

-walter

[1] http://wiki.sugarlabs.org/go/Features/Write_to_journal_anytime


 If a feature you are working on is not listed at the 0.90 Feature page
 and you want to propose it for inclusion please do so *now* following
 the Feature Policy [3]. Please have in mind that you have to land your
 code by Feature Freeze and that it has to go through the review process [4].

 If your Feature is not ready for this release, you should not worry too
 much, there will be another release in 6 months. Please make sure to
 propose it as early as possible.

 Regards,
    Simon

 [1] http://wiki.sugarlabs.org/go/0.90/Roadmap#Schedule
 [2] http://wiki.sugarlabs.org/go/0.90/Feature_List
 [3] http://wiki.sugarlabs.org/go/Features/Policy
 [4] http://wiki.sugarlabs.org/go/Development_Team/Code_Review
 ___
 Sugar-devel mailing list
 Sugar-devel@lists.sugarlabs.org
 http://lists.sugarlabs.org/listinfo/sugar-devel




-- 
Walter Bender
Sugar Labs
http://www.sugarlabs.org
___
Sugar-devel mailing list
Sugar-devel@lists.sugarlabs.org
http://lists.sugarlabs.org/listinfo/sugar-devel


Re: [Sugar-devel] [ANNOUNCE] Feature and API/ABI Freeze approaching

2010-08-10 Thread Simon Schampijer
On 08/10/2010 08:31 PM, Walter Bender wrote:
 On Tue, Aug 10, 2010 at 2:11 PM, Simon Schampijersi...@schampijer.de  wrote:
 Dear Sugar community,

 the Feature Freeze for Sucrose 0.90 is approaching. It will be due next
 Monday, the 16th of August [1].

 I am still hoping to figure out how to get write to Journal at any
 time feature [1] done in time for the freeze... it will be touch and
 go as I still have a major blocker in getting the shell to know about
 the object_id... Stay tuned.

 -walter

 [1] http://wiki.sugarlabs.org/go/Features/Write_to_journal_anytime


Great. Walter did you consider that design [1]? I liked it quite a lot 
(should have some initial code sitting somewhere too).

Regards,
Simon

[1] http://wiki.sugarlabs.org/go/File:Description.png
___
Sugar-devel mailing list
Sugar-devel@lists.sugarlabs.org
http://lists.sugarlabs.org/listinfo/sugar-devel


Re: [Sugar-devel] [ANNOUNCE] Feature and API/ABI Freeze approaching

2010-08-10 Thread Walter Bender
On Tue, Aug 10, 2010 at 2:51 PM, Simon Schampijer si...@schampijer.de wrote:
 On 08/10/2010 08:31 PM, Walter Bender wrote:

 On Tue, Aug 10, 2010 at 2:11 PM, Simon Schampijersi...@schampijer.de
  wrote:

 Dear Sugar community,

 the Feature Freeze for Sucrose 0.90 is approaching. It will be due next
 Monday, the 16th of August [1].

 I am still hoping to figure out how to get write to Journal at any
 time feature [1] done in time for the freeze... it will be touch and
 go as I still have a major blocker in getting the shell to know about
 the object_id... Stay tuned.

 -walter

 [1] http://wiki.sugarlabs.org/go/Features/Write_to_journal_anytime


 Great. Walter did you consider that design [1]? I liked it quite a lot
 (should have some initial code sitting somewhere too).

 Regards,
   Simon

 [1] http://wiki.sugarlabs.org/go/File:Description.png


I liked that design too, but it requires adding a button to the
toolbar, which I would like to avoid. I'm going down a different path,
which is to add a menu item to the Frame (same as with View Source).

-walter

-- 
Walter Bender
Sugar Labs
http://www.sugarlabs.org
___
Sugar-devel mailing list
Sugar-devel@lists.sugarlabs.org
http://lists.sugarlabs.org/listinfo/sugar-devel


[Sugar-devel] Browse-115 stops when pop-up tab closes

2010-08-10 Thread Christoph Derndorfer
Hi all,

my university's webmail system (Horde) uses a popup for composing e-mail
which Browse-115 correctly displays in a tab. However upon sending the
e-mail not just the composition tab is closed but the whole Browse activity
quits.

I have been consistently able to reproduce this on my XO-1 running build
353pyg and Browse-115. Seeing that I haven't found a entry on the OLPC and
SugarLabs bug trackers nor any discussions here on the list I was wondering
whether that webmail system is to blame or if this is indeed a bug.

Thanks,
Christoph

-- 
Christoph Derndorfer
co-editor, olpcnews
url: www.olpcnews.com
e-mail: christ...@olpcnews.com
___
Sugar-devel mailing list
Sugar-devel@lists.sugarlabs.org
http://lists.sugarlabs.org/listinfo/sugar-devel


Re: [Sugar-devel] Browse-115 stops when pop-up tab closes

2010-08-10 Thread Chris Ball
Hi,

I have been consistently able to reproduce this on my XO-1
running build 353pyg and Browse-115. Seeing that I haven't found
a entry on the OLPC and SugarLabs bug trackers nor any
discussions here on the list I was wondering whether that webmail
system is to blame or if this is indeed a bug.

Quitting the entire activity in response to (presumably) a javascript
statement can only be a bug, in my opinion.

Thanks,

- Chris.
-- 
Chris Ball   c...@laptop.org
One Laptop Per Child
___
Sugar-devel mailing list
Sugar-devel@lists.sugarlabs.org
http://lists.sugarlabs.org/listinfo/sugar-devel


Re: [Sugar-devel] Browse-115 stops when pop-up tab closes

2010-08-10 Thread Lucian Branescu
Yes, it is a bug.

It has been observed that under certain versions of cairo, Browse with tabs
crashes. V115 checks for this and disables tabs if such a version is
detected. It's possible that other versions of cairo are problematic, too.

Please attach Browse's log and report your cairo version, I'll check it out
tomorrow.

On 10 Aug 2010 21:33, Chris Ball c...@laptop.org wrote:

Hi,


 I have been consistently able to reproduce this on my XO-1
 running build 353pyg and Brows...
Quitting the entire activity in response to (presumably) a javascript
statement can only be a bug, in my opinion.

Thanks,

- Chris.
--
Chris Ball   c...@laptop.org
One Laptop Per Child
___
Sugar-devel mailing list
Sugar-devel@lists.sugarlabs.org
http://lists.sugarlabs.org/listinfo/sugar-devel
___
Sugar-devel mailing list
Sugar-devel@lists.sugarlabs.org
http://lists.sugarlabs.org/listinfo/sugar-devel


Re: [Sugar-devel] Killing activities when memory gets short

2010-08-10 Thread NoiseEHC

 We used to do that, the problem is that we don't control our platform
 as Google controls Android and you need to make sure that resources
 that need to be specific of each child process aren't shared (dbus and
 X connections, etc).

 I'm personally more interested in reducing the amount of resources we
 need to start activities (which is quite insane right now), but
 sharing more of those resources sounds like a good idea to me.
   

Since I spent quite a bit of time analyzing the Python runtime here is 
my conclusion, maybe it will make wasting all that time less painful.

First, most of the memory consumed by an activity is the process heap. 
While the Python runtime and native libraries are shared among 
processes, the heap is not. Even if you fork processes it will not work 
because reference counting will dirty the shared pages and my instinct 
tells me that just loading a Python source file will reference almost 
all the shared pages because they are mostly used to store already 
loaded modules. What I finally did not do is to actually check the 
hypothesis that most of the heap is filled by strings which are the 
identifiers in the loaded Python modules. My goal was to somehow make 
identifiers constants and just readonly-mmap them into the process 
(replace the pathetic .pyc loading mechanism). Note that my plan was 
just a little subset of the .jar - .dex converter.

Second, Python has a special memory manager which works with buckets so 
there are separate heaps for different object sizes. Somehow this 
special memory manager is turned off in release mode and it uses the 
standard C heap for some reason. Either it is a bug or just it turned 
out to be faster (more work was put into glibc) I do not know, but 
handling the linked free list can dirty shared pages as well or I am 
just mistaken...

Third, the fact that Python is a dynamic language does not help any 
prefetching or memory sharing. I am not too convicted either that this 
dynamic nature is used at all in the Sugar codebase but you know I 
cannot program in Python and frankly I do not feel the need to learn 
another language. Just now, at my age of 34, I finally gave up and 
learned LISP (more specifically clojure) and I hope that it will be the 
last programming language I will have to learn (other than assembly 
languages of course)... :) Now this point is interesting because if you 
thought that the Dalvik VM could run the Sugar codebase via Jython then 
it just will not work. The Dalvik VM just cannot load .jar files and 
Jython just generates them on the fly because of the dynamic nature of 
Python.

Fourth, moving Python (theoretically) to a GC environment (instead of 
reference counting) also would not work if the GC is compacting because 
it would also dirty the shared pages. So a mark and sweep nonmoving GC 
with separately stored visited bits is the only feasible solution. Now 
guess what the Dalvik VM does?
For more info (45 min + questions):
http://www.youtube.com/watch?v=ptjedOZEXPM

So *my* conclusion is that solving this sharing problem is *very* hard. 
I am not sure that simply translating all activities from Python to Java 
would take more time.

Another interesting thing is that meantime the unladen-swallow project 
progresses (just more slowly than planned). Their plan is to make it the 
default Python runtime so if it will happen (I cannot comment on that) 
then the Python VM will use even more memory (though it will be faster) 
so Sugar will be even less interesting on the myriad of low spec cheap 
ARM tablets which will flood the market soon.

I think that is all I can say about this subject so I just finish it here.



___
Sugar-devel mailing list
Sugar-devel@lists.sugarlabs.org
http://lists.sugarlabs.org/listinfo/sugar-devel


[Sugar-devel] [PATCH] Remove buddy-icon.jpg handling

2010-08-10 Thread Bernie Innocenti
All this code from 2006 was supposed to create a bitmap version of the
buddy icon for use by the presence service. However, JPEG avatars were
disabled very early in Sugar's history due to performance
considerations, rendering all this code useless a long time ago.

I noticed this cleanup opportunity just because a laptop was no longer
booting due to a corrupted buddy-icon.jpg. (How did it get corrupt since
it's read-only after the first boot? This is still a mystery of JFFS2
and flash ECC).

This patch depends on a corresponding cleanup in sugar-presence-service.

Signed-off-by: Bernie Innocenti ber...@codewiz.org
---
 src/jarabe/intro/Makefile.am |4 
 src/jarabe/intro/default-picture.png |  Bin 10442 - 0 bytes
 src/jarabe/intro/window.py   |9 +
 src/jarabe/model/owner.py|   19 +--
 4 files changed, 2 insertions(+), 30 deletions(-)
 delete mode 100644 src/jarabe/intro/default-picture.png

diff --git a/src/jarabe/intro/Makefile.am b/src/jarabe/intro/Makefile.am
index a9fb96b..2ea7cea 100644
--- a/src/jarabe/intro/Makefile.am
+++ b/src/jarabe/intro/Makefile.am
@@ -1,7 +1,3 @@
-imagedir = $(pythondir)/jarabe/intro
-image_DATA = default-picture.png
-
-EXTRA_DIST = $(conf_DATA) $(image_DATA)
 sugardir = $(pythondir)/jarabe/intro
 sugar_PYTHON = \
__init__.py \
diff --git a/src/jarabe/intro/default-picture.png 
b/src/jarabe/intro/default-picture.png
deleted file mode 100644
index 
e26b9b0114e992c22509da03a4e9d0e0847928e4..
GIT binary patch
literal 0
HcmV?d1

literal 10442
zcmbt)cRbbM`+nmnqo_m~QDo)vt...@hj%ap_tjg*6tyubj!i_i4|TuR?tzNOlpj
z...@kzmuct|9oFRub0GmkNbI^`?dxy6z...@#ueix(HYW5_swmtc...@~|_(qbR
zfWJHxWT`GG`S7H~4r_j5~xo...@wb_drscLlcdMaG6e8H$~$)KMOXx%*xt
zzsdanqeyg...@12mc;ymY6UYiWQsT3ojw+uVSVS0LPMrL$2vn{rVe}j4v`uM8ZP
zKQxphRrUlTuVpp^V5N_d__3~Vr}o)O4Ftx5AVR_3JBhCjJB6Y%SxfKVJWIea8}~
z#zsT{F7z$BvQG9y^91`R|VrpJlD5r16O|L+gthw$5fulb)l{tuV_-|zU}AD-6O
z#d45yu}o...@l6@cfH%3mYiI}c=cnGS|8m944Y=BkyH8nLI931Z5yQi+MPC*gQ
zbjwFyU*COs%s^3*B#E*$S0($dJxTfs+-75Alb4qV|B5+|u!D)*}P{Qc|qZ{)~
zq...@ee1oan~aoji5asq`nm|~O(9e=zMBQB(O+guUxrOTUc...@`$wpv3!l!wfbl
z8ZVdMBlytJP)(O|_g}*TSFe5=8rllytNWC53PC|1cOygR4Hi2xplxn$UhX6{taiv
zY6#e...@5~dq0kq3eps@WtUdD4ZLYOd#mdUcK2WygNzweg^;6kDyBl_iQq?%zdXaH;
zL_|ah#+t*aBO^h7gmJ(+BLa~d^2-%_sLIBi|cmDeG!Lb98rzm$;rv9ULqkaEE28
zsi`SN(NpVPW`(0=?sN5%gvjkCN4AvOJnRQMni4QKUT_Pk1io^Jr7y-wz4{K|#
z5=LT9PAkL1`n(C@a`lrn*y{nx~{g+8xb6l...@_eakdmyhjs5qcg7jc#5bh9gpmi
z8...@s%f$f!agmh{)POcemfhbuP^RC-=kFL)I8(b+1cs)cfL16K4f=A%Ff#QzMh^Q
ziuffRc(}hjUM=P{VZX0;d|iGL3o`Cic(juO1i)6=ukah%1_NLQCII5;lQRno%
zF74JW;~R0bGb~lmx_w`qvs...@u1nncfpqyjg=$kOfX?km3Mw`l=Jb6-2ZwO}Q
zy32ABOy*L8=j`7qVmCYhPe({C{_CrXxktqj6cjL^hQ1rlXn!HL#KUTepii%QG
zQzPr^ZaX?ILww=k;fcKBe%pWg-)t=po...@dtdc+!z3`v1bns5(@K#fIduw)#g^ge
zMMOkaS69i%$TX-LYkjx0(xk8Koo_giUE;U1rkNxvfPUUR*Nqj)=i)W;fUMy$tf=wX
z2snp7_i2+?jgv...@tkk!`r;^EcObYgt!U*PZG-O`HMFQbIyPWc)^4Z0zkU}^8Q
z=Z7pOo?exbV)UhMI6)%zczF!cy1$r^sTilak+QEP8W^7agKCe4EDm(M6K_sQTVA
z)j...@zx`g0e2w)*pz(CJig#jDQzsS)`3v!+biB%Pc57IWZ(*NEVjNsw(WPCKxr
zA3xr*G!$cH9dl-?#!yynp|`jSbf(7hINCUhWRlAbgsEo}Sm}LrG#c)BI@w;~%
zoejkgYQrKUn;l_i1g=q...@^!8|uXHy3I2LFe8*+Tyfe?QJ{s7UzqP#_;YEV=Ay
zO2%{v*X=)3Fmdsn=i8X_xAdezl~RUEJ1|BI8s_p?5kI=zJAq^Wc8Lxt*op(qetlL
za~=*6F$v+)AP*DOARL!UqAAtzV?|_1zP77-{u%Fg7-}iPF4Zs~$ZdXuI7v9qnS
z644oE#1u6vMEwxzJ2vR#i=PRlnzcSy|c...@w4qw@_YbcK;|{!De-bc^h^qYJz
z;h...@iucj+u9ed@PPMfKoeMrgciYW8AVAtv06v}W%~Fnwi*r{(8yK{;Nitl%e3^lP
z...@8*a;AipAm1RRd?zdZp43YGh66aSIW)dW*8DBw)pf-_xbdUjB7Ia4wja|rpGba
z?$!...@joq$h!hh@*0wp(zX_tl?h5VNe7js}m...@}ywsB1rL{MB#_g1UBi8=
z?JlvVZ506IsPyc=(3x;7{5rild~p1D1BO=C(6E~AaHPMc0-=Ps;X+Z171wZ!4Z4
z8M(V8k86EmDn}u^J}v6)%kg5?ibPUUa7y=?k$...@r8ytkpuubvn6ho*ele5?k;{
z9;s7h8W$hmu8VUVuL}AXFOrAHChBWvXWVO#qP)Dej*cv$GDzV6j1ZQ9nwnaYb!INC
zsnY3tj(4Trt^@%K84l$SmmEBdhw0SW0=hFqYNAW5-*zBt36bhMuiWoYQTJSLG?
z|kLr6GU-oK0;Vfu;B9tg`%3V+$7-mvHgnggYdXP3rTR$;qo6dW;AJh5q_Xf=Pwr
zIJT=*IhrXCh$RUKHAt=^XP%NpEUEoBx#ynW!JixH%gcF-2*mn_fsWerD(0~=
zj*i10VS{0?!D_{+yRt$cABc)oDE=r`oaZkN+vPKftghO(cedytS(X2p^{ZE9
zI9!tV+5GqK2a8RPmd9^mrwMeN)2jm^yte_g...@`vbjue4wd=u3xvps_3qsydv!
zPTWZ39pmFEhu%{Gc$IB1vVA^WdVmfR=aZ#1j6_rEd{s4LZ}%TH3I$a+=)@Sp6N|^
z{$=}j@d|Ac9vFFVzvXEzjQ3JSk{Fc(-R2!nf...@ph9csvg!u@3kck~cCkauRlz
zOh9t)-G`;ay}jpu+f~5ntHe~WFj=OQHaK4g{x-R_JQ|c3k^G=+=X|d...@*ufllct
zMI5|?dzxifk0z!=_2uke`hwyvuehcu0...@2jlf-ebr|raz~-ra...@jr2_V#v(
zEBn*?H*UGjegzCltW(a(W=k;8ZCX)(k*?Mr5p{lYHfX;f`S5I%FfQt!^7j|7Im@
zGuTMcQ1bffEv2sNfBFh*Pst?ZwK$O1*w}a~c-2eF(9rPGrAvH#eE074YoGPq{hJpV
zsi~?;)=%i^swn}qnB`f`~Lln)o$07iCU=PNn%bHkkuYbgHZbd7frs``aWL!*#;5*
z{rh*WJ5B75IN-N@@Rw...@vPS%)GmUTFeC-4gv?wK^pb13vzNq{dfPSrARcD)sgC
zK~dE;G*mB9DSTR5_tIh*)#c*n)^Bjdf0xzBUjf}(I6OQ46CyA?o0#m!6B5P3Yn*=
znD~7({QVEu)Zu`WzT2hR$y~R0}PcbYAKs*#i(~qjK$ypc9(E%|!*DsI-HGU~D
z12`%yEZqCM(4VDD9dr9mU1V+XY3nt?gsLfzP95H#1Ai__(-...@uwt9hyam*~skp4$
zJ-)?06V-r}uVtfb2|tk}r9Z_;_UkN)A#|vI=V4YIM%KcbBeQx#jZXbKpT-u)`m

[Sugar-devel] [PATCH] Remove bitmap icon handling from s-p-s

2010-08-10 Thread Bernie Innocenti
This patch gets rid of some almost-dead code in sugar-presence-service
for handling bitmap avatars.

Signed-off-by: Bernie Innocenti ber...@codewiz.org
---
 src/buddy.py |   63 +
 1 files changed, 2 insertions(+), 61 deletions(-)

diff --git a/src/buddy.py b/src/buddy.py
index d81952e..4335f2d 100644
--- a/src/buddy.py
+++ b/src/buddy.py
@@ -69,37 +69,6 @@ def _buddy_icon_save_cb(buf, data):
 data[0] += buf
 return True
 
-def _get_buddy_icon_at_size(icon, maxw, maxh, maxsize):
-# FIXME Do not import gtk in the presence service,
-# it uses a lot of memory and slow down startup.
-#loader = gtk.gdk.PixbufLoader()
-#loader.write(icon)
-#loader.close()
-#unscaled_pixbuf = loader.get_pixbuf()
-#del loader
-#
-#pixbuf = unscaled_pixbuf.scale_simple(maxw, maxh, gtk.gdk.INTERP_BILINEAR)
-#del unscaled_pixbuf
-#
-#data = []
-#quality = 90
-#img_size = maxsize + 1
-#while img_size  maxsize:
-#data = []
-#pixbuf.save_to_callback(_buddy_icon_save_cb, jpeg,
-#{quality:%d % quality}, data)
-#quality -= 10
-#img_size = len(data[0])
-#del pixbuf
-#
-#if img_size  maxsize:
-#data = []
-#raise RuntimeError(could not size image less than %d bytes % 
maxsize)
-#
-#return str(data[0])
-
-return 
-
 class Buddy(ExportedGObject):
 Person on the network (tracks properties and shared activites)
 
@@ -212,20 +181,9 @@ class Buddy(ExportedGObject):
 _logger.debug(Invalid init property '%s'; ignoring... % key)
 del kwargs[key]
 
-# Set icon after superclass init, because it sends DBus and GObject
-# signals when set
-icon_data = None
-if kwargs.has_key(_PROP_ICON):
-icon_data = kwargs[_PROP_ICON]
-del kwargs[_PROP_ICON]
-
 ExportedGObject.__init__(self, bus, self._object_path,
  gobject_properties=kwargs)
 
-if icon_data is not None:
-self._icon = str(icon_data)
-self.IconChanged(self._icon)
-
 def __repr__(self):
 return 'ps.buddy.Buddy %s' % (self._nick or u'').encode('utf-8')
 
@@ -893,17 +851,6 @@ class GenericOwner(Buddy):
 if maxsize  0 and size  maxsize:
 size = maxsize
 
-if 1:
-# FIXME: Avatars have been disabled for Trial-2 due to performance
-# issues in the avatar cache. Revisit this afterwards
-pass
-else:
-img_data = _get_buddy_icon_at_size(icon_data, width, height, size)
-conn[CONN_INTERFACE_AVATARS].SetAvatar(img_data, image/jpeg,
-reply_handler=set_self_avatar_cb,
-error_handler=lambda e:
-_logger.warning('Error setting avatar: %s', e))
-
 def _property_changed(self, changed_props):
 for tp in self._handles.iterkeys():
 
@@ -963,8 +910,7 @@ class ShellOwner(GenericOwner):
 bus -- a connection to the D-Bus session bus
 
 Retrieves initial property values from the profile
-module.  Loads the buddy icon from file as well.
-XXX note: no error handling on that
+module.
 
 calls GenericOwner.__init__
 
@@ -981,14 +927,9 @@ class ShellOwner(GenericOwner):
 if not isinstance(nick, unicode):
 nick = unicode(nick, 'utf-8')
 
-icon_file = os.path.join(env.get_profile_path(), buddy-icon.jpg)
-f = open(icon_file, r)
-icon = f.read()
-f.close()
-
 GenericOwner.__init__(self, ps, bus,
 'keyid/' + psutils.pubkey_to_keyid(key),
-key=key, nick=nick, color=color, icon=icon, key_hash=key_hash,
+key=key, nick=nick, color=color, key_hash=key_hash,
 tags=tags)
 
 # Ask to get notifications on Owner object property changes in the
-- 
1.7.2.1

___
Sugar-devel mailing list
Sugar-devel@lists.sugarlabs.org
http://lists.sugarlabs.org/listinfo/sugar-devel


Re: [Sugar-devel] Browse-115 stops when pop-up tab closes

2010-08-10 Thread Christoph Derndorfer
On Tue, Aug 10, 2010 at 8:37 PM, Lucian Branescu
lucian.brane...@gmail.comwrote:

 Yes, it is a bug.

 It has been observed that under certain versions of cairo, Browse with tabs
 crashes. V115 checks for this and disables tabs if such a version is
 detected. It's possible that other versions of cairo are problematic, too.

 Please attach Browse's log and report your cairo version, I'll check it out
 tomorrow.

See below.

Thanks,
Christoph

---

Cairo version:

cairo-1.8.8-1.fc11.i586

Browse log:

/home/olpc/Activities/Browse.activity/webactivity.py:26: DeprecationWarning:
the sha module is deprecated; use the hashlib module instead
  import sha
returning
/home/olpc/.sugar/default/org.laptop.WebActivity/data/gecko/prefs.js for key
NS_APP_PREFS_50_FILE
1281485529.468977 WARNING root: .has_key() is deprecated, use 'in'
1281485530.215058 WARNING root: No gtk.AccelGroup in the top level window.
1281485530.254288 WARNING root: No gtk.AccelGroup in the top level window.
1281485530.462426 WARNING root: No gtk.AccelGroup in the top level window.
1281485530.506957 WARNING root: No gtk.AccelGroup in the top level window.
1281485530.566313 WARNING root: No gtk.AccelGroup in the top level window.
1281485530.592393 WARNING root: No gtk.AccelGroup in the top level window.
/usr/lib/xulrunner-1.9.1/python/xpcom/__init__.py:54: DeprecationWarning:
BaseException.message has been deprecated as of Python 2.6
  self.message = message
** (sugar-activity:3013): DEBUG: Got client ID
1097f2008c4ca8dc512814855338048470018290001
** (sugar-activity:3013): DEBUG: Setting initial properties
** (sugar-activity:3013): DEBUG: Received SaveYourself(SmSaveLocal,
!Shutdown, SmInteractStyleNone, !Fast) in state idle
** (sugar-activity:3013): DEBUG: Sending SaveYourselfDone(True) for initial
SaveYourself
** (sugar-activity:3013): DEBUG: Received SaveComplete message in state
save-yourself-done
/home/olpc/Activities/Browse.activity/webtoolbar.py:69: GtkWarning:
gtk_entry_set_text: assertion `text != NULL' failed
  self.props.text = text
1281485792.947926 WARNING root: No gtk.AccelGroup in the top level window.
1281485793.015581 WARNING root: No gtk.AccelGroup in the top level window.
1281485793.018288 WARNING root: No gtk.AccelGroup in the top level window.
1281485793.172707 WARNING root: No gtk.AccelGroup in the top level window.
1281485793.175616 WARNING root: No gtk.AccelGroup in the top level window.
1281485793.178127 WARNING root: No gtk.AccelGroup in the top level window.
/usr/lib/python2.6/site-packages/hulahop/webview.py:56: Warning: invalid
uninstantiatable type `(null)' in cast to `GtkWidget'
  self.web_view.get_toplevel().destroy()
/usr/lib/python2.6/site-packages/hulahop/webview.py:56: GtkWarning:
gtk_widget_hide: assertion `GTK_IS_WIDGET (widget)' failed
  self.web_view.get_toplevel().destroy()
/usr/lib/python2.6/site-packages/hulahop/webview.py:56: GtkWarning:
gtk_widget_destroy: assertion `GTK_IS_WIDGET (widget)' failed
  self.web_view.get_toplevel().destroy()
/usr/lib/python2.6/site-packages/hulahop/webview.py:56: GtkWarning:
gdk_x11_visual_get_xvisual: assertion `visual != NULL' failed
  self.web_view.get_toplevel().destroy()
Traceback (most recent call last):
  File /home/olpc/Activities/Browse.activity/webtoolbar.py, line 438, in
_reload_session_history
for menu_item in palette.menu.get_children():
AttributeError: 'NoneType' object has no attribute 'menu'
Traceback (most recent call last):
  File /usr/lib/python2.6/site-packages/gtk-2.0/gobject/__init__.py, line
108, in obj_set_property
prop.setter(self, value)
  File /usr/lib/python2.6/site-packages/sugar/activity/activity.py, line
365, in set_active
self.save()
  File /usr/lib/python2.6/site-packages/sugar/activity/activity.py, line
600, in save
preview = self.get_preview()
  File /usr/lib/python2.6/site-packages/sugar/activity/activity.py, line
548, in get_preview
width, height = pixmap.get_size()
AttributeError: 'NoneType' object has no attribute 'get_size'



-- 
Christoph Derndorfer
co-editor, olpcnews
url: www.olpcnews.com
e-mail: christ...@olpcnews.com
___
Sugar-devel mailing list
Sugar-devel@lists.sugarlabs.org
http://lists.sugarlabs.org/listinfo/sugar-devel


Re: [Sugar-devel] Killing activities when memory gets short

2010-08-10 Thread James Cameron
On Tue, Aug 10, 2010 at 05:48:00PM -0700, John Gilmore wrote:
 ... and was also unsuccessful in convincing OLPC to prelink the shared
 libraries before shipping a release, thus allowing read-only pages to
 not get dirtied with shared library linkage relocations.

10.1.2 release candidate os851 has prelink before shipping, it's done in
the builder.

-- 
James Cameron
http://quozl.linux.org.au/
___
Sugar-devel mailing list
Sugar-devel@lists.sugarlabs.org
http://lists.sugarlabs.org/listinfo/sugar-devel


Re: [Sugar-devel] Killing activities when memory gets short

2010-08-10 Thread Gary Martin
On 11 Aug 2010, at 01:56, Lucian Branescu lucian.brane...@gmail.com wrote:

 2010/8/10 NoiseEHC noise...@freemail.hu:
 
 We used to do that, the problem is that we don't control our platform
 as Google controls Android and you need to make sure that resources
 that need to be specific of each child process aren't shared (dbus and
 X connections, etc).
 
 I'm personally more interested in reducing the amount of resources we
 need to start activities (which is quite insane right now), but
 sharing more of those resources sounds like a good idea to me.
 
 
 Since I spent quite a bit of time analyzing the Python runtime here is my
 conclusion, maybe it will make wasting all that time less painful.
 
 First, most of the memory consumed by an activity is the process heap. While
 the Python runtime and native libraries are shared among processes, the heap
 is not. Even if you fork processes it will not work because reference
 counting will dirty the shared pages and my instinct tells me that just
 loading a Python source file will reference almost all the shared pages
 because they are mostly used to store already loaded modules. What I finally
 did not do is to actually check the hypothesis that most of the heap is
 filled by strings which are the identifiers in the loaded Python modules. My
 goal was to somehow make identifiers constants and just readonly-mmap them
 into the process (replace the pathetic .pyc loading mechanism). Note that my
 plan was just a little subset of the .jar - .dex converter.
 
 Second, Python has a special memory manager which works with buckets so
 there are separate heaps for different object sizes. Somehow this special
 memory manager is turned off in release mode and it uses the standard C heap
 for some reason. Either it is a bug or just it turned out to be faster (more
 work was put into glibc) I do not know, but handling the linked free list
 can dirty shared pages as well or I am just mistaken...
 
 Third, the fact that Python is a dynamic language does not help any
 prefetching or memory sharing. I am not too convicted either that this
 dynamic nature is used at all in the Sugar codebase but you know I cannot
 program in Python and frankly I do not feel the need to learn another
 language. Just now, at my age of 34, I finally gave up and learned LISP
 (more specifically clojure) and I hope that it will be the last programming
 language I will have to learn (other than assembly languages of course)...
 :) Now this point is interesting because if you thought that the Dalvik VM
 could run the Sugar codebase via Jython then it just will not work. The
 Dalvik VM just cannot load .jar files and Jython just generates them on the
 fly because of the dynamic nature of Python.
 
 Fourth, moving Python (theoretically) to a GC environment (instead of
 reference counting) also would not work if the GC is compacting because it
 would also dirty the shared pages. So a mark and sweep nonmoving GC with
 separately stored visited bits is the only feasible solution. Now guess
 what the Dalvik VM does?
 For more info (45 min + questions):
 http://www.youtube.com/watch?v=ptjedOZEXPM
 
 So *my* conclusion is that solving this sharing problem is *very* hard. I am
 not sure that simply translating all activities from Python to Java would
 take more time.
 
 Another interesting thing is that meantime the unladen-swallow project
 progresses (just more slowly than planned). Their plan is to make it the
 default Python runtime so if it will happen (I cannot comment on that) then
 the Python VM will use even more memory (though it will be faster) so Sugar
 will be even less interesting on the myriad of low spec cheap ARM tablets
 which will flood the market soon.
 
 I think that is all I can say about this subject so I just finish it here.
 
 The PyPy project has a fully-featured python 2.5 interpreter that has
 much lower memory usage and a proper GC (so less dirty pages). They
 also have an x86 JIT which makes it much faster than CPython, at the
 cost of a bit of memory (still less than CPython). The only issue
 right now is extension support: ctypes is fully supported, but
 C/Python extension support is not complete by far.

FWIW I experimented with PyPy a month or so back to see how fast my self 
organising map code would run. Needed to make a some code/module changes to get 
it to work, but it ran about twice as fast. I didn't check if memory usage had 
improved.

--Gary   

 As for Jython on Android, Jython has a Java bytecode JIT. It should be
 entirely possible to write a dalvik backend to this JIT.
 
 So not only would rewriting everything to Java be a huge step
 backwards, but it would also be more work.
 ___
 Sugar-devel mailing list
 Sugar-devel@lists.sugarlabs.org
 http://lists.sugarlabs.org/listinfo/sugar-devel
___
Sugar-devel mailing list
Sugar-devel@lists.sugarlabs.org