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. 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. 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. 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> ./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. 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. But the Wikipedia<br>gives me some other ideas:<br><br>
<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). 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. 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. 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> <<a href="mailto:ianb@colorstudy.com" target="_blank" onclick="return top.js.OpenExtLink(window,event,this)">
ianb@colorstudy.com</a>> 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). I've put this off a bit, but I wanted to write up our thoughts
<br>(unfortunately we didn'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). I expect a variety of computers, and I don't<br>want to depend on them having anything specific setup.<br><br>When I'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> I'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. There's
<br>a lot of things to learn at once, so I'd rather people just be able to<br>use an editor they are familiar with, and other tools they know<br>something about. 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't see people reasonably
<br>running it ahead of time, and it certainly takes too long to do at the<br>sprint. 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. I<br>don'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. 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. That still<br>won't give people the environment they are used to, unless they happen
<br>to be used to what we produce. (I think Michael is using Ubuntu?)<br><br>I'm more positive about emulation, as it's fairly reliable; i.e., qemu<br>or the VMWare player. You could a hosted/sugar-jhbuild environment, or
<br>the actual build image. 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. They'll inherit any network<br>settings and hardware support. 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'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. The builds and the OLPC
<br>environment really isn't suited yet to doing development. I don't think
<br>that should be a blocker for people either (I'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. All testing would<br>occur on the emulated image. Either the host or the image could have<br>the server, with different tradeoffs.<br><br>sshfs was suggested. 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't work well. Another issue is that the host<br>computer has to see the image on the network. I haven't tried VMWare; I
<br>get the impression it's fairly easy to set this up there. Setting this<br>up under qemu is much harder, and it's not clear to me if it's<br>reasonable at all under Windows. I'd really like this to be workable
<br>for Windows users. Of course, if the host can see the image there'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. 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. It would be nice if people<br>weren't constrained to 512Mb, so they could play around with larger<br>things, even if those things can't be deployed in that form. It may not
<br>be an issue if all the development tools stay on the host system; but I<br>don't think gcc will work well on the host system, as it's not the<br>image's native gcc. Installing development libraries take a lot of
<br>space. OTOH, I'm much more interested in getting people writing Python<br>code. 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'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