My friend Larry Landis and I were at PyCon, but were unable to stay<br>for the sprints.<br><br>We were thinking about starting a similar project in a couple of weeks<br>when he gets back from a gig in Italy.<br><br>Since I got back from PyCon I have been fooling around with
<br>sugar-jhbuild off and on.&nbsp; Gave it a lot more time and energy<br>this weekend.<br><br>I agree that sugar-jhbuild is not suitable for beginners to <br>install on their computers.&nbsp; In addition to taking way too<br>long to compile (on an average box) and download
<br>(if you are bandwidth deprived, like me), it is way to unstable<br>for beginners.&nbsp; Something that worked yesterday may not<br>work today, once the latest source with new bugs is<br>retrieved by subversion or git.<br>
<br>

We will probably need a different balance between stability<br>and bleeding edge for sugar itself and the develpment <br>enviornment generated by: <br><br>&nbsp;&nbsp;&nbsp; ./sugar-jhbuild build-base<br><br>I think preparing a pre-built development environment on a
<br>hefty server box that can support a reasonable number of<br>beginners is the way to go.<br><br>We could create an account for them to ssh into if they<br>are comfortable with the command line.&nbsp; We could use<br>ltsp if they need gui-based tools, with
freenx if the need<br>to access the gui over a low bandwidth link.<br><br>I have a dim recollection of a unionfs on OpenBSD,<br>but those guys are way too hostile.&nbsp; But the Wikipedia<br>gives me some other ideas:<br><br>
&nbsp;&nbsp;&nbsp;&nbsp;
<a href="http://en.wikipedia.org/wiki/UnionFS">http://en.wikipedia.org/wiki/UnionFS</a><br><br>We could do a three layer unionfs, the base layer could be a<br>read only file system with the standard development environment,
<br>each user could have their own read-write lay on top of it in their<br>home directory, so any modifications they make would be their<br>own and persistent, and a memory resident cache on top for<br>performance (if the serve has enough ram).&nbsp; Or maybe we only 
<br>have two layers and do the caching some other way.<br><br>Guido has been frustrated trying to get sugar-jhbuild running on<br>his Ubuntu Dapper box, and kicked off a discussion about what<br>OS would be best if he decides to build a new box to use
<br>for sugar development.&nbsp; We should pay attention to that thread.<br>I have not yet looked to see if he has gotten any responses.<br>I think Ubuntu Edgy, Feisty, and Fedora Core 6 will be in the<br>running.&nbsp; I have no idea if any of them support a unionfs.
<br><br><div><span class="gmail_quote">On 3/11/07, <b class="gmail_sendername">Ian Bicking</b> &lt;<a href="mailto:ianb@colorstudy.com" target="_blank" onclick="return top.js.OpenExtLink(window,event,this)">
ianb@colorstudy.com</a>&gt; wrote:</span><blockquote class="gmail_quote" style="border-left: 1px solid rgb(204, 204, 204); margin: 0pt 0pt 0pt 0.8ex; padding-left: 1ex;">At PyCon a few of us looked at the development environment and how
<br>newcomers could work on it (the people involved where: Michael Fletcher,<br>John Hall, Brian Dorsey, and Jeff Younker and Frank Wilder for a short<br>while).&nbsp;&nbsp;I&#39;ve put this off a bit, but I wanted to write up our thoughts
<br>(unfortunately we didn&#39;t have real conclusions).<br><br>Goal<br>----<br><br>My personal goal is to be able to run a coding sprint, where people can<br>show up and we give them CDs, USB sticks, etc., and they can get a
<br>running environment that they can develop on in a reasonable amount of<br>time (half hour or so).&nbsp;&nbsp;I expect a variety of computers, and I don&#39;t<br>want to depend on them having anything specific setup.<br><br>When I&#39;ve done this in the past with professional programmers using
<br>software that is reasonably simple to setup, it can still be very hard.<br>&nbsp;&nbsp;I&#39;d like it to be simpler than that, and right now it is much more<br>difficult.<br><br>I also want to setup a development environment people can use.&nbsp;&nbsp;There&#39;s
<br>a lot of things to learn at once, so I&#39;d rather people just be able to<br>use an editor they are familiar with, and other tools they know<br>something about.&nbsp;&nbsp;Minimizing the number of novel things people have to<br>



deal with will allow them to actually pay attention to the important<br>stuff (like writing code).<br><br>Ideas<br>-----<br><br>I think sugar-jhbuild is pretty much right out; even if it was made<br>perfect and totally self contained, I can&#39;t see people reasonably
<br>running it ahead of time, and it certainly takes too long to do at the<br>sprint.&nbsp;&nbsp;One idea Michael has been working on is to do a complete build<br>in a virtual environment, and then people can use that environment;
<br>
either with something like VMWare, or potentially produce a live CD.&nbsp;&nbsp;I<br>don&#39;t think the CD that is produced from the builds really makes sense<br>-- doing stuff like hardware detection is really out of the scope of
<br>what OLPC should be concerned with.&nbsp;&nbsp;But if we can setup all the<br>dependencies on something suited for a live CD, and install and<br>pre-build parts for that CD, maybe that would be workable.&nbsp;&nbsp;That still<br>won&#39;t give people the environment they are used to, unless they happen
<br>to be used to what we produce.&nbsp;&nbsp;(I think Michael is using Ubuntu?)<br><br>I&#39;m more positive about emulation, as it&#39;s fairly reliable; i.e., qemu<br>or the VMWare player.&nbsp;&nbsp;You could a hosted/sugar-jhbuild environment, or
<br>the actual build image.&nbsp;&nbsp;If you do a sugar-jhbuild environment,<br>presumably people will use that environment for all their development,<br>using whatever tools we put on there.&nbsp;&nbsp;They&#39;ll inherit any network<br>settings and hardware support.&nbsp;&nbsp;Performance is a little slow; realistic
<br>for actually running the environment, somewhat tedious (but not<br>unacceptable) when running development tools.<br><br>(Note: one issue with VMWare emulation is that currently networking<br>doesn&#39;t work because of a missing driver, as noted here:
<br><a href="http://dev.laptop.org/ticket/925" target="_blank" onclick="return top.js.OpenExtLink(window,event,this)">http://dev.laptop.org/ticket/925</a>)<br><br>Another option is using the builds themselves.&nbsp;&nbsp;The builds and the OLPC
<br>environment really isn&#39;t suited yet to doing development.&nbsp;&nbsp;I don&#39;t think
<br>that should be a blocker for people either (I&#39;m not a big fan of eating<br>your own dog food, at least not until much later in the process than we<br>currently are).<br><br>One of the more hopeful options seems to be some kind of network drive,
<br>so you can edit files from the host environment.&nbsp;&nbsp;All testing would<br>occur on the emulated image.&nbsp;&nbsp;Either the host or the image could have<br>the server, with different tradeoffs.<br><br>sshfs was suggested.&nbsp;&nbsp;This is fairly difficult to setup on host
<br>computers, and while something like Nautilus might be easy to setup,<br>many other tools won&#39;t work well.&nbsp;&nbsp;Another issue is that the host<br>computer has to see the image on the network.&nbsp;&nbsp;I haven&#39;t tried VMWare; I
<br>get the impression it&#39;s fairly easy to set this up there.&nbsp;&nbsp;Setting this<br>up under qemu is much harder, and it&#39;s not clear to me if it&#39;s<br>reasonable at all under Windows.&nbsp;&nbsp;I&#39;d really like this to be workable
<br>for Windows users.&nbsp;&nbsp;Of course, if the host can see the image there&#39;s no<br>reason we could have many server options, including Samba and NFS in<br>addition to ssh (all of which may not be part of the standard builds,
<br>but seems easy enough to add to a custom build).<br><br>Setting up a server on the host computer has its own issues, though it<br>can be potentially easier -- servers require relatively little OS<br>integration compared to a client.&nbsp;&nbsp;In that case, the host would run some
<br>server (NFS, ideally SMB could work), and the image would mount it.<br>This avoids the emulation networking issues, but then we have to<br>consider where to mount the share... can we overlay the entire filesystem?<br>



<br>Disk space on the image is a problem.&nbsp;&nbsp;It would be nice if people<br>weren&#39;t constrained to 512Mb, so they could play around with larger<br>things, even if those things can&#39;t be deployed in that form.&nbsp;&nbsp;It may not
<br>be an issue if all the development tools stay on the host system; but I<br>don&#39;t think gcc will work well on the host system, as it&#39;s not the<br>image&#39;s native gcc.&nbsp;&nbsp;Installing development libraries take a lot of
<br>space.&nbsp;&nbsp;OTOH, I&#39;m much more interested in getting people writing Python<br>code.&nbsp;&nbsp;But it would be nice if there was at least some story for how<br>people could develop bits of C code (or Pyrex) if there are particular
<br>performance benefits in their application.<br><br>Sorry if this wanders, I&#39;ve tried to include at least some of the bad<br>directions and possible good directions and caveats in this, and the<br>result is scattered.
<br><br>--<br>Ian Bicking | <a href="mailto:ianb@colorstudy.com" target="_blank" onclick="return top.js.OpenExtLink(window,event,this)">ianb@colorstudy.com</a> | <a href="http://blog.ianbicking.org" target="_blank" onclick="return top.js.OpenExtLink(window,event,this)">


http://blog.ianbicking.org</a><br>_______________________________________________<br>Sugar mailing list
<br><a href="mailto:Sugar@laptop.org" target="_blank" onclick="return top.js.OpenExtLink(window,event,this)">Sugar@laptop.org</a><br><a href="http://mailman.laptop.org/mailman/listinfo/sugar" target="_blank" onclick="return top.js.OpenExtLink(window,event,this)">


http://mailman.laptop.org/mailman/listinfo/sugar</a><br></blockquote></div><br><br clear="all"><br>-- 
<br>Drew Einhorn