GNU Hackers Meeting 2008 Notes
These are rough notes from a public event, and any errors or stupidity should be attributed to me and my poor note taking; I didn’t get much sleep last night since my talk at the event was at 09:30 this morning, and I was just traveling in France to research my thesis and had to catch up on email and stuff, so the notes are less thorough than I’d’ve liked. But videos of the talks are available at http://www.river-valley.tv and some photos at http://www.espontaneas.com/album/h/buscar/gnuhm2008 so not to worry too much about that, you can watch them yourselves :-)
It was a great meeting with a lot of smart and interesting free software hackers, and I’m sad I missed the first day because I was in France.
Distributed Version Control
Distributed VC makes it easy to deal with things when people disagree with you. We are all sometimes wrong and it helps when the discussion about who is right and wrong isn’t interfered with.
Git is very popular; rcs, svr, &c, tla, are all basically dead in 5 years. CVS/SVN are still going, and the DVCS that aren’t git are not all that popular.
Git: Very different to the others; most people here have used it, it is very popular.
Bzr: Bazaar is a marketing term, a totally different system to bzr. Baz was a fork of TLA (formerly Arch) and Bzr is a totally new VCS with all new code. Its similar to Mercurial Darcs and Monotone.
rsync is a strange kind of version control - and you will need to 2nd
Q: Git is fine; moved from CVS to Git
A: A lot of people who tried that got stuck, git was linus’ ideas and it doesn’t resemble CVS. Eg, you are using git and want to commit, “git commit -a” and “git diff” before you do that check-in, but that might not show everything. If you edit a file and you want to throw them away and replace with the repo version, you use “git checkout”. That’s okay if you want to learn the quirks, but if you want to sell someone a version control system, they don’t want to learn.
Fortunately, all the rest do have a user interface that is roughly the same. But all 4 have some killer disadvantage.
bzr is very slow on huge projects; its great for a tiny little project of your own and your friends. bzr won’t blow up if you type strange commands at it.
hg is slowish, and the way it handles tags strangely.
not used the others enough.
Q: darcs v1 documentation had ‘exponential corner cases’ but v2 was fixed them. great UI though.
Q: Monotone also quite slow
So they are all playing some kind of catchup game.
So these Big 5 are all in a good usable state, more or less (big projects need git…)
We like getting our patches upstream, and upstream have an important gatekeeper role, but DVCS can mitigate the bottleneck problems there…
You have more downstream effort in most projects, Linux kernel has most effort up, and its strange requirements have an effect on Git.
Bzr has a bunch of propaganda about merging instead of emailing patches like git; that works well with DVCS. You can maintain two main trees and constantly merge from one to the other.
You can use bzr for a small project, and in 5 years time, there will be a wrapper for Git so you can easily switch up if you become big enough. If you are a big project, you should pick git.
A chief selling point of Git is that if you disagree with someone using another VCS tool, you can mirror their repo into your git.
Distributed means branches are cheap; non-distributed VCS don’t track what has been merged, and its very tedious to make a new branch. When branching is really easy, you make them all the time - make a branch, mess some stuff up, an urgent bug fix comes in, switch to the main branch and fix it, switch back to the messy branch, carry on. With CVS you can get very big merges and its a real pain. You do it once a month, because its such a big job. But with DVCS you do it daily.
No need for in-tree change logs with DVCS, an in-tree list would be a feature list.
Ian wants to write a wrapper called VCS that means they all have the same interface.
All the Big 5 are stable enough for real work, although they are in active development.
All use commits that are hash based, and hash collision with tags is unlikely.
gitk is a GTK git repo viewer.
Game programming system under the GPL
FreeDink is a game, the old isometric style of Zelda. You start off as a pig farmer, and you learn how to fight, and increase your skill points.
DFArc2 is a game manager, and there are many games made by users. There is a map editor.
History: There was the Dink project in 03/04, was portable but buggy, and then Dink v1.08 2006-now that’s windows (woe) only and has backwards compatibility problems. GNU FreeDink forked from original Dink, was X11 like but now GPL. The first port was not well documented, the new project has a good task list and docs: Compiler, 2D graphics (stretching, full screen), Fonts, Sound (sample rate conversion for slowing/speeding up sounds)
Progressive migration; continuous testing so nothing was broken for too long. MinGW allowed a switch from MS VC++6 to GCC. SDL is a simple DirectMedia Layer, portable but not equivalent to DirectX, so needed to reproduce
Fonts, was hard to get things pixel-same, using FreeType to draw direct on screen and using the Liberation fonts for their metrics compatibility.
For portability, MinGW can be used as a cross compiler to create .exe from GNU/Linux. This meant there was no need for cross platform tool chains, and autotools, git and wxGlade were fine with cross compiling but they are available but trickier on Woe normally.
xdg-utils was used to make the DMOD files, which are really .tar.bz2 files, recognised as DMODs instead of by file-roller.
Q: I just compiled freedink, but it came with no DMODs?
A: In the docs directory, you can find data.txt, that explains.
Luca Saiu email@example.com
Learned ML, Lisp, Haskell; in 2001 did a toy implementation, in 2002/3 it became more ambitious and I reimplemented it all, making me a better functional programmer; and submitted it to GNU and it was accepted. In 2007 I moved to France, did the 4th implementation and 3rd garbage collection.
I spoke to many people here and everyone seems to know Lisp ;)
Why don’t more people do functional programming? It looks and is different; its reputedly inefficient although not always true.
The language should be layered; a core language that is layered, untyped (so unsafe), and without continuations, lambdas, side-effects, the only conditional being case, and user definable primitives.
The middle language is translated into the core language; its a middle layer of abstraction still not user-facing. Its more lisp like with first class procedures and continuations, side effects, and programs are written as s-expressions.
Top language default will reflect my own tastes but the developer can override all my preferences or do something totally new.
Q: Alan Kay’s “Reinvention of Programming” has a layered language similar to this; he wants a complete graphic OS in 10,000 lines of code. Is epsilon useful for system programming?
A: Lisp and OCAML are useful for system programming. … I want to get the design just right before I recommend it for that kind of use though.
Juan Pedro Bolivar Puente
A winning project in a Spanish students’ free software projects competition.
Its an audio synthesiser. Its an electronic device to make sounds, specifically sounds for music. The concept is modular, interactive, collaborative.
Modular: Breaking sounds into modules that are used to build a soundscape.
Interactive: It has dynamic patching, where modules are connected automatically depending on their relative position and kind of signal. Multi-tactile interfaces give more control over more kinds of input at once.
Collaborative: But there are still too many parameters to be controlled by one person. This can be a single physical interface for several people, or a network to connect several small interfaces.
The reaction to multi-tactile interfaces is “reactable is so cool, I want one” but the free software approach is to Do It Yourself. But the table, camera and projector are expensive; the prototypes are written in Pure Data which is fine for that but not extensible or scalable.
Implementation: We have generators, they generate source sounds, like basic waves (sinus, square, triangle, sawtooth, etc) and noise (white, pink) and samples (where you can change the pitch, run backwards, time stretch, etc)
30,000 lines of C++, 7,000 change a month, GPLv3 throughout, the Reactable staff are interested in the project and rewriting in C++ also.
We have got mac/windows music making guys think about free software. There are really good free software audio programs but they have the UNIX philosophy where configurations are used to pipe things together - but this has a more integrated approach, so now people who wanted to buy the Reactable now install psychosynth.
Future: A lot of feedback in a short time.
A lot of people want a port to proprietary platforms, but this is not a priority for me. But its free software! :)
Q: Can you save the scene graph state or even record the whole thing like a Quake demo?
A: Its a planned feature to add soon
Q: How does the network stuff work?
A: We only transmit the events with Open Sound Control low latency protocol, the samples have to be on the clients beforehand.
Q: Have you tried with people not in the same room?
A: The current implementation wont work well over the net, but on a LAN it works great
The GNU Hackers Meeting 2008 Notes by David Crossland, except the quotations and unless otherwise expressly stated, is licensed under a Creative Commons Attribution-Share Alike 3.0 Unported License.