Search Results: "beh"

6 April 2010

Michael Prokop: Remote Console feature through Java applet failing?

I m working for a customer who s using IBM blades. Remote access isn t limited to e.g. SoL but also possible through a Remote Console feature using a Java applet. After migrating one of my 32bit systems to a fresh 64bit system I suddenly couldn t use this Remote Console feature any longer. The error message was (leaving it for search engines and help other affected users):
load: class vnc.VncViewer.class not found.
java.lang.ClassNotFoundException: vnc.VncViewer.class
	at sun.plugin2.applet.Applet2ClassLoader.findClass(Applet2ClassLoader.java:152)
	at java.lang.ClassLoader.loadClass(ClassLoader.java:303)
	at java.lang.ClassLoader.loadClass(ClassLoader.java:248)
	at sun.plugin2.applet.Plugin2ClassLoader.loadCode(Plugin2ClassLoader.java:447)
	at sun.plugin2.applet.Plugin2Manager.createApplet(Plugin2Manager.java:2880)
	at sun.plugin2.applet.Plugin2Manager$AppletExecutionRunnable.run(Plugin2Manager.java:1397)
	at java.lang.Thread.run(Thread.java:619)
Caused by: java.net.ConnectException: Network is unreachable
	at java.net.PlainSocketImpl.socketConnect(Native Method)
	at java.net.PlainSocketImpl.doConnect(PlainSocketImpl.java:333)
	at java.net.PlainSocketImpl.connectToAddress(PlainSocketImpl.java:195)
	at java.net.PlainSocketImpl.connect(PlainSocketImpl.java:182)
	at java.net.SocksSocketImpl.connect(SocksSocketImpl.java:366)
	at java.net.Socket.connect(Socket.java:525)
	at sun.net.NetworkClient.doConnect(NetworkClient.java:161)
	at sun.net.www.http.HttpClient.openServer(HttpClient.java:394)
	at sun.net.www.http.HttpClient.openServer(HttpClient.java:529)
	at sun.net.www.http.HttpClient.<init>(HttpClient.java:233)
	at sun.net.www.http.HttpClient.New(HttpClient.java:306)
	at sun.net.www.http.HttpClient.New(HttpClient.java:323)
	at sun.net.www.protocol.http.HttpURLConnection.getNewHttpClient(HttpURLConnection.java:860)
	at sun.net.www.protocol.http.HttpURLConnection.plainConnect(HttpURLConnection.java:801)
	at sun.net.www.protocol.http.HttpURLConnection.connect(HttpURLConnection.java:726)
	at sun.net.www.protocol.http.HttpURLConnection.getInputStream(HttpURLConnection.java:1049)
	at java.net.HttpURLConnection.getResponseCode(HttpURLConnection.java:373)
	at sun.plugin2.applet.Applet2ClassLoader.getBytes(Applet2ClassLoader.java:458)
	at sun.plugin2.applet.Applet2ClassLoader.access$000(Applet2ClassLoader.java:46)
	at sun.plugin2.applet.Applet2ClassLoader$1.run(Applet2ClassLoader.java:126)
	at java.security.AccessController.doPrivileged(Native Method)
	at sun.plugin2.applet.Applet2ClassLoader.findClass(Applet2ClassLoader.java:123)
	... 6 more
Exception: java.lang.ClassNotFoundException: vnc.VncViewer.class
The error message might not be obvious at a glance and that s why I m writing about it actually. It s NOT the:
load: class vnc.VncViewer.class not found.
why it s failing but instead the real reason for the failure is the:
java.net.ConnectException: Network is unreachable
As you can read in Debian s Bug Tracking System in bug #560044:
Netbase has recently introduced the sysctl-setting
net.ipv6.bindv6only=1 in /etc/sysctl.d/bindv6only.conf and this setting will probably be the default in squeeze. This setting breaks networking in java, and any traffic will always
result in a java.net.SocketException: Network is unreachable .
To quote /etc/sysctl.d/bindv6only.conf:
When disabled, IPv6 sockets will also be able to send and receive IPv4 traffic with addresses in the form ::ffff:192.0.2.1 and daemons listening on IPv6 sockets will also accept IPv4 connections. When IPV6_V6ONLY is enabled, daemons interested in both IPv4 and IPv6 connections must open two listening sockets.
To work around this issue you can either execute the Java process through "java -Djava.net.preferIPv4Stack=true" or to change the IPv6 behaviour system wide execute "sysctl -w net.ipv6.bindv6only=0". To make this setting permanent across reboots adjust the setting inside /etc/sysctl.d/bindv6only.conf. After applying this workaround the Remote Console should work again.

2 April 2010

Debian News: Brief Updates: DPL, ftp-master down, release update and April Fools

1 April 2010

Andrew Pollock: [life] It's done!

(It's actually been done since last Friday, I just haven't had time to sort out photos and write about it) It's so nice to have our home back to normal. The kitchen is all done, with the exception of being down one handle, and two design bugs that need to be sorted out. Bug number one is that the trim on the warming drawer underneath the oven sticks out a little bit more than the rest of the whole range, meaning if it's pushed all the way in, the cabinet door to the left rubs against it when opened. Solution: accelerate replacement of the range. Bug number two is the drawer to the right of the range can't be opened when the oven door is closed (it runs into the handle). What I think happened is the kitchen designer didn't take into account the thickness of the new back splash behind the range causing it to come out further from the wall. This is disappointing, and replacing the range won't help. They all seem to have oven door handles that protrude that far out. The solution is to modify the width of the drawer on the left-hand side. Other than those two issues, the kitchen is fantastic. We've very happy with it. The amount of counter space we've got is wonderful. Here's some before and after photos, the whole lot are here Before After We just need to sort out some window treatments of some sort now.

30 March 2010

David Welton: Where Tcl and Tk Went Wrong

I've been pondering this subject for a while, and I think I'm finally ready to write about it.
Tcl was, for many years, my go-to language of choice. It's still near and dear to me in many ways, and I even worked on a portion of a book about it ( http://journal.dedasys.com/2009/09/15/tcl-and-the-tk-toolkit-2nd-edition ). However, examining what "went wrong" is quite interesting, if one attempts, as much as possible, a dispassionate, analytical approach that aims to gain knowledge, rather than assign blame or paper over real defects with a rose-colored vision of things. It has made me consider, and learn, about a variety of aspects of the software industry, such as economics and marketing, that I had not previously been interested in. Indeed, my thesis is that Tcl and Tk's problems primarily stem from economic and marketing (human) factors, rather than any serious defects with the technology itself. Before we go further, I want to say that Tcl is not "dying". It is still a very widely used language, with a lot of code in production, and, importantly, a healthy, diverse, and highly talented core team that is dedicated to maintaining and improving the code. That said, since its "heyday" in the late 90ies, it has not ... "thrived", I guess we can say. I would also like to state that "hindsight is 20-20" - it's easy to criticize after the fact, and not nearly so easy to do the right thing in the right moment. This was one reason why I was reticent to write this article. Let me repeat that I am writing it not out of malice or frustration (I went through a "frustrated" phase, but that's in the past), but because at this point I think it's a genuinely interesting "case history" of a the rise and gentle decline of a widely used software system, and that there is a lot to be learned. At the height of its popularity, Tcl was up there with Perl, which was the scripting language in those days. Perl, Tcl, and Python were often mentioned together. Ruby existed, but was virtually unknown outside of Japan. PHP was on the rise, but still hadn't really come into its own. Lua hadn't really carved out a niche for itself yet, either. Tcl is no longer one of the popular languages, these days, so to say it hasn't had problems is to bury one's head in the sand: it has fallen in terms of popularity. To examine what went wrong, we should probably start off with what went right: These features led to Tcl being widely used, from Cisco routers to advanced television graphics generation programs to the AOLserver web server, which was busy serving out large quantities of dynamic web pages when many of us were still fiddling around with comparatively slow and clunky CGI programs in Perl. Note also that there have been a lot of cool things to have gone into Tcl in the mean time. It has a lot of impressive features; many more than most people realize, and has had a lot of them for a while. Check out http://www.tcl.tk to learn more about the "good stuff". But that's not the point of this article... There was a healthy, active community of developers producing lots of interesting add-ons for the language, and working on the language itself. This culminated in its adoption by Sun Microsystems, which hired the language's creator, Dr. John Ousterhout, and a team of people, who added a lot of great features to the language. Quoting from Ousterhout's history of Tcl page:

The additional resources provided by Sun allowed us to make major improvements to Tcl and Tk. Scott Stanton and Ray Johnson ported Tcl and Tk to Windows and the Macintosh, so that Tcl became an outstanding cross-platform development environment; Windows quickly came to be the most common platform. Jacob Levy and Scott Stanton overhauled the I/O system and added socket support, so that Tcl could easily be used for a variety of network applications. Brian Lewis built a bytecode compiler for Tcl scripts, which provided speedups of as much as a factor of 10x. Jacob Levy implemented Safe-Tcl, a powerful security model that allows untrusted scripts to be evaluated safely. Jacob Levy and Laurent Demailly built a Tcl plugin, so that Tcl scripts can be evaluated in a Web browser, and we created Jacl and TclBlend, which allow Tcl and Java to work closely together. We added many other smaller improvements, such as dynamic loading, namespaces, time and date support, binary I/O, additional file manipulation commands, and an improved font mechanism. Unfortunately, after several years, Sun decided that they wanted to promote one and only one language. And that language was Java. So Ousterhout and many people from his team decamped to a startup that Ousterhout founded, called Scriptics, where the Tcl and Tk innovations continued:

In 1998, Scriptics made several patch releases for Tcl 8.0 to fix bugs and add small new features, such as a better support for the [incr Tcl] extension. In April 1999, Scriptics made its first major open source release, Tcl/Tk 8.1. This release added Unicode support (for internationalization), thread safety (for multi-threaded server applications), and an all-new regular expression package by Henry Spencer that included many new features as well as Unicode support.
However, as many a company based around open source was to find later, it's a tough space to be in. Scriptics changed its name to Ajuba, and was eventually sold (at a healthy profit, apparently, making it a relative dot com success story, all in all) to Interwoven, for the "B2B" technology that Ajuba had developed. Interwoven was not interested in Tcl, particularly, so, to create a system for the ongoing development and governance of the language, the "Tcl Core Team" was created. This was something of a blow to Tcl, but certainly not fatal: Perl, Python, Ruby, PHP, Lua have all had some paid corporate support, but it has by no means been constant, or included large teams. At the same time in the late 90ies, open source was really starting to take off in general. Programmers were making all kinds of progress, and had begun to make Linux into what is today the world's most widely used server platform, and laying the groundwork for the KDE and Gnome desktops. While these may still not be widely used, they are for the most part very polished systems, and leaps and bounds better than what passed for the 'Unix desktop' experience in the 90ies. One of the key bits of work that was added to Tk was to make it look pretty good on Microsoft Windows systems. This was in an time when the "enterprisey" folks were turning away from Unix in the form of AIX, Solaris, HPUX, et al. and taking up NT as the platform of choice, so it was in some ways sensible to make Tk work well there, and in any case as a cross platform GUI toolkit, it ought to work well there in any case. And, on the Unix side, Tk emulated the expensive, professional Motif look and feel that serious Unix programmers used. What could go wrong? As Gnome and KDE continued to mature, though, what would become one of Tk's major (in my opinion) marketing blunders took root. I have it on good authority, from someone who was there in the office, that the Scriptics guys working on Tcl and Tk viewed Gnome and KDE (and the Gtk and Qt toolkits) as not really worth their while. To be fair, since Tk has always been under a liberal BSD style license, the Qt toolkit has always been "off limits". Still, though, the attitude was that Tk was a standalone system, and since it ran on pretty much any Unix system, it didn't need to bother with Gnome or KDE. Gradually, though, as more and more people used Gnome and KDE exclusively on Linux, the Tk look and feel began to look more and more antiquated, a relic from the 1990ies when Motif (which has since pretty much disappeared) was king. Tk applications started to really stand out by not looking at all like the rest of the operating system. And, while Linux may not be responsible for a vast portion of the world's desktops, it is widely used by developers, who were turned off by the increasingly creaky look of the Tk applications they saw. Tk is and was actually a fairly flexible system, and it would have been possible to tweak the look and feel to make it look a bit better on Linux, without even doing any major work. Maybe not perfect, but certainly better looking. Nothing happened, though. Another problem was that Tk and Tcl made it so easy to create GUIs that anyone could, and did, despite, in many cases, a complete lack of design skills. You can't particularly blame the tools for how they're used, but there was certainly a cultural problem: if you read most of the early Tcl and Tk books, and even many of the modern ones, there are hundreds of pages dedicated to exactly how to use Tk, but few to none explaining even basic user interface concepts, or even admonitions to the user to seek out that knowledge prior to attempting a serious GUI program. The end result is that a lot of Tk programs, besides just looking "old fashioned" had fairly poor user interfaces because they were made by programmers who did not have a UI/design culture. Contrast that with Gnome and KDE, which have made a point of focusing on how to make a good GUI for their systems, complete with guidelines about how applications should behave. It may have taken them some time to get things right, but they have done a lot to try and instill a culture of creating high quality, well-integrated GUI's that are consistent with the system where they run. Lately, there has been a lot of work to update the Tk look and feel, and it has finally started to bear fruit. However, in terms of marketing, the damage has already been done: the image of "old, crufty Tk" has been firmly planted in countless developers' minds, and no amount of facts are going to displace it in the near future. Another problem Tcl faced, as it grew, was the tug-of-war between those wishing to see it small, light, and easy to distribute embedded within some other program, and those wishing it to become a "full-fledged" programming language, with lots of tools for solving every day programs. Unfortunately, that tug of war seems to have left it somewhere in the middle. Lua is probably more popular these days as an embedded language, because it is very small, and very fast, and doesn't have as much "baggage" as Tcl. Meaning, of course, that it doesn't do as much as Tcl either, but for a system where one merely wishes to embed a scripting language, without much 'extra stuff', Tcl's extra functionality is perhaps a burden rather than a bonus. On the other hand, while Perl was happily chugging along with their CPAN system for distributing code, giving users easy access to a huge array of add-on functionality, and Python was building up a "batteries included" distribution, that included a lot of very useful software straight out of the box. Tcl, on the other hand, chose to keep the core distribution smallish, and only lately has got some semblance of a packaging and distribution system, that is, however, run by ActiveState, and is (at least according to a cursory glance at the Tcl'ers wiki), not even fully open source. The lack of a good distribution mechanism, and, in the meantime, eschewing a larger, batteries-included main distribution left Tcl users with a language that, out of the box, did significantly less than the competition. Technically, a Python style "big" distribution would not have been all that difficult, so once again, I think this is a marketing problem: a failure of the Tcl Core Team to observe the "market", assess what users needed, and act on it in a timely manner. Somewhat related to the large Tcl vs small Tcl issue was one particular extension, or extensions to the language that was noticeably absent: a system for writing "object oriented" code. Tcl, at heart, will never be an OO language through and through, like Ruby or Smalltalk, but that doesn't mean that an OO system for it is not a useful way of organizing larger Tcl systems. Indeed, Tcl's syntax is flexible enough that it's possible to write an OO system in Tcl itself, or, optimizing for speed, utilizing the extensive C API in order to create new commands. Over the years, a number of such systems have arisen, the most well-known being "Incr Tcl" (a play on the incr command, which is akin to += 1 in languages like C). However, none of these extensions was ever included with the standard Tcl distribution or somehow "blessed" as the official OO system for Tcl. This meant that a newcomer to Tcl wishing to organize their code according to OO principles had to pick a system to use from several competing options. And of course, newcomers are the least able to judge a complex feature like that in a language, making it a doubly stressful choice. Furthermore, even experienced Tcl programmers who wanted to share their code could not utilize an OO system if they wanted their code to work with just standard Tcl. Also, if their code had a dependancy on some OO system, it would require the user to download not only the extension in question, but the OO system it was built on, which, naturally, might conflict with whatever OO system the user had already selected! As of Tcl 8.6, thanks to the work of Donal Fellows, Tcl is finally integrating the building blocks of an OO system in the core itself, but this effort is probably something like 10 years too late. Some other more or less minor things that have taken too long to get integrated in the Tcl or Tk distributions include the PNG format (still not there in a production release of Tcl), a readline-based command line (Tkcon is nice, but not a replacement for simply being able to type "tclsh" and get a nice, functional shell like Python, Ruby and most other languages have. This could easily lead to a bad first experience for someone trying out Tcl). Tcl also took too long to integrate a first-class hash type (accessed with the 'dict' command), which only appeared in 8.5. Its "arrays" aren't bad, but don't quite have the full power of a hash table as dict implements them. Once again, the code to do these things was/is out there, it has just been a matter of integrating it into Tcl and Tk, which has been a slow process. One actual technical problem that Tcl faces is the concept that all values must be representable as a string. This is more or less ok for things like lists, hash tables or numbers, but is problematic when the user wishes to represent a value that simply isn't a string. A basic example is a file handle, which at the C API level is a FILE*. How does Tcl get around this? It keeps an internal hash table with a Tcl-script accessible string, such as "file5" that points to a FILE * value that is used internally by file commands. This works pretty well, but there is a big "but": since you can compose a string like "file5" at any time, that must be able to access the actual file pointer, you can't do any sort of "garbage collection" to determine when to clean things up automatically. Other languages have explicit references to resources, so the program "knows" when a resource is no longer referenced by the rest of the program, and can clean it up. Therefore, the programmer must explicity free any resources referenced this way. This explanation is simplifying things somewhat, but it is something I view as a technical problem with Tcl. If you've been following along, you've noticed a lot of "these days" and "recently". That's because Tcl is still very actively developed, with a lot of new ideas going into it. However, if you look at the release dates, it seems that after Ajuba was sold off, and Ousterhout pretty much abandoned an active role in the language for good, placing it in the hands of the Tcl Core Team, there was a lull in the momentum, with Tcl 8.5 taking 5 years to be released. This is actually, in my opinion, an interesting phenomenon in languages: you risk hitting some kind of local maximum when your language is popular enough to have a lot of users who will be angry if things are changed or accidentally broken in the course of big upheavals. So you have to slow down, go carefully, and not rock the boat too much. On the other hand, there is an opportunity cost in that newer languages with less to lose can race ahead of you, adding all kinds of cool and handy new things, or simply fix and remove "broken" features. Erlang is another system that has, in my opinion, suffered from this problem to some degree, but this article is long enough already! Once again, though, not really a technical issue, but a problem with how the code was managed (and not an easy one to solve, at that). A Tcl failure that I was personally involved with was the web infrastructure. What went on to become Apache Rivet was one of the first open source Apache/Tcl projects, and was actually quite a nice system: it was significantly faster than PHP, and of course made use of Tcl, which at the time had a large library of existing code, and could be easily repurposed for projects outside the web (or the other way around: non-web code could be brought in to a web-based project). One thing I ought to have done differently with the Apache Rivet project was listen to the wise advice of Damon Courtney, my "partner in crime" on the project, who wanted to see Apache Rivet have a fairly "fat" distribution with lots of useful goodies. Rails and Django, these days, have shown that that's a sensible approach, rather than relying on lots of little extensions that the user has to go around and collect. The code was out there, I should have helped make Rivet do more "out of the box". A problem that is and it isn't: the syntax. Tcl's syntax is amazingly flexible. Since everything is a command, you can write new commands in Tcl itself - and that goes for control structures, too! For instance, Tcl has a "while" command, but no "do ... while". It's very easy to implement that in Tcl itself. You simply can't do that in most "everyday" languages. However, this comes at something of a "cost". The syntax, for your average programmer who doesn't want to go too far out of their comfort zone, is perhaps a little bit further afield from the C family of languages than they would prefer. Still though, a "human" problem, rather than a technical one. Perhaps, sadly, the message is that you'd better not "scare" people when introducing a new language, by showing people something that doesn't look at least a little bit familiar. Conclusions? First and foremost, that, gradually, Tcl and Tk continue to be improved. However, if one visits developer forums, there are also a lot of negatives associated with the Tcl and Tk "brands", and I am not sure if it will be possible to rectify that. So what can we learn from the rise and subsequent "stagnation" of Tcl?

28 March 2010

Clint Adams: DPL Campaign Questions 008

Steve Langasek:
As a developer, how do you embody the spirit and culture that has made Debian a great operating system? If elected DPL, how will you inspire the same in others?
I do not believe that there is any one single spirit or culture that has made Debian great, never any truly united community. With contributors from various places around the globe, we have a melting pot of different cultural viewpoints. Furthermore we have people doing things for a variety of reasons, some more selfish than others. The interplay between these differences has led to tension, and it has also led to greatness. I am certain that some of the great things in Debian have come to pass borne out of anger and hatred. We have had shifts in cultural norms over the years. When I joined the project, it was considered highly controversial to use the word fuck . Many community members would scream at anyone who did that, rudely sending private emails to admonish them. Eventually, enough anti-censorship people joined that the political tide turned, and many of the people offended by the use of the word fuck quietly faded away. We effectively disenfranchised them. Now the pendulum may be swinging in the other direction, and if it does, we can expect the same sorts of tensions and the same sorts of attrition. Perhaps this is part of the natural cycle of things, perhaps not. So if I list what I do or what I try to do, I do not believe it adequately answers the question. I think that Debian is superior for technical excellence and cohesive policy, so I try to do my part to meet those standards. I think that Debian is great for being a good Free Software Citizen, so I try to forward relevant bugs and patches upstream. I think that Debian is great for not being fully beholden to corporations, other financial interests, or dictatorial personalities, so I try not to encourage that sort of thing. I think that Debian is greater because of a few team efforts, so when someone tries to set up a worthwhile endeavor, I feel some compulsion to join in or at least be supportive. I think that Debian is greater because of some commitment to transparency, so I try not to do anything important behind closed doors, and even when I assume that something is transparent enough because it has been discussed only in public channels, and someone yells at me for hypocrisy, I try to increase the distribution of that information to a level that people feel is appropriate. As DPL I would try to set a good example by not being a hypocrite about any of the things I think are important to Debian, and would try to inspire an atmosphere of more teamwork, cooperation, and empowerment. I think that this could be revitalizing. Alexander Reichle-Schmehl:
Suppose that you would not run for DPL: Who would you vote and why?
I am not sure of how I will be voting. Each of the candidates had said things that I like, and each of the candidates has said things that I dislike very much. I am choosing not to get into specifics here, because I do not consider it appropriate or ethical to try to affect other people's votes in that manner.

Russ Allbery: Why no comments

When I first converted my journal from Movable Type, I converted all the comments with it and planned on adding comment support, as a long-term goal. But I've increasingly found that not having comment support is nice, and recently after reading several different takes on this topic, I've decided to take this off my long-term to-do list. A point made by both people involved with sites with strong commenting communities (Making Light and John Scalzi's Whatever) and others who have turned off comments is that maintaining a good comment community in the face of significant interest is a lot of work. One of my goals right now is to do less work that isn't directly interesting so that I can reserve my energy for things that I consider more core. I've now added a link to my explanation for why there are no comments to all of my journal posts and indices. A few more thoughts in addition to the ones there: I've been reading a lot of comments recently, mostly from following the debate in the US about health care reform, and I've been struck at how rarely comments are meaningfully addressed to the original post author or show intent to participate in a discussion. On political topics, most comments appear instead to be taking advantage of the comment platform to post one's own opinion in public, sometimes with the additional gratification of forcing that opinion to show up in the space of someone who obviously disagrees. I'm not interested in participating in or enabling that. If you want to make a controversial statement or take a political stance, own your own words and take that stance in your own space. I also suspect that one of the reasons why this happens so much in comments is that comments are considerably more anonymous than journals. Even if one's journal isn't openly connected with one's real name and life, like mine is, there is some persistance and history to most journals. I'm a strong believer in anonymous speech for a variety of different reasons, but one of those reasons is not to permit drive-by content-free attacks on other people. And that's the standard behavior in both political blogs and comment pages on newspaper sites. The anonymous speech I have the most respect for is the type that creates and builds reputation for an anonymous nom de plume, presenting a consistent public image and taking responsibility for one's previous beliefs. This isn't what happens in comment threads. Finally, I consider all of my web site, including my journal, to be to some extent permanent. I mostly do not take down pages, and I wouldn't want to take down comment threads. But for the most part comments, particularly on controversial topics, don't fit into that model. There's nothing wrong with that, but it makes me want to redirect them to a more appropriate forum. If I felt like there was some lack in the world of places where people could anonymously publish controversial opinions, I might feel more obligation to provide one in my journal, but I don't. It's also not something that I'm good at; other people are doing a much better job. So I'm going to stay out of hosting that type of on-line discussion and leave it to people with more interest and time. I welcome e-mail replies to journal posts, and have had several good discussions in those e-mail exchanges. That's what works best for me.

27 March 2010

Clint Adams: DPL Campaign Questions 005

Marc Haber:
Do you see the diminishing care for our Core infrastructure as a problem? Do you have any idea how do sensibilize our new blood for the fact that "new packages" doesn't help Debian if our Core stuff is diminishing? I know that this is not exactly within the power of the DPL, but do you think that you, as DPL, can help speeding up Core development again?
Note: "core infrastructure" here refers to dpkg and apt. I am seeing numerous projects across the free software world struggle with a lack of contributors, and wonder why they cannot get anyone to help them. In most cases, I think there are hints about why people might feel disenfranchised by a particular development process, and in most cases, I think the people in charge are mostly unwilling to change the way that they have been doing things for years and years just to accommodate potential contributors. I think this is particularly true of projects where there is a dictatorship or a single gatekeeper for all VCS repository commits. Frequently these things seem to work themselves out after a long time. Old people leave, new people come in. Sometimes it is peaceful, sometimes it is violent. Rarely does it result in structural improvements. I do not know why there is lack of manpower on dpkg and apt right now. I know I tried to make a change to dpkg a few months ago and was unable to do so, partly due to the codebase and partly due to important information existing only in Guillem's mind. In the end, I had to just wait for Guillem to do it, which he helpfully did, and now we have libdpkg-dev in experimental, with one reverse build-dep. Had I been able to make the change myself, it is unclear whether I would have made any other contributions; that was the only itch I needed scratched, and I have plenty of other things to work on. So even though I found it near-impossible to contribute to dpkg in this way, I don't think that I'm excluded. So as DPL I would first try to determine why there might not be enough contributors to dpkg and apt, or why the existing contributors are not performing up to your standards. This could be an instance where I would solicit private communication from people who might have potentially-valuable information that they do not wish to communicate in public for fear of hurting someone's feelings. This does not mean that I would try to resolve these issues behind the scenes, because I consider that to be a dangerous and potentially-harmful tactic. Given a reasonable theory about why the problem exists, I would then proceed to encourage the resolution of that problem. I also think that some package maintenance teams may share some issues with some core teams and even the project at large, and addressing the more general problems could lead to relief in many areas. Specifically I would name problems related to ego and teamwork, which is a theme on which I plan to elaborate later.

Clint Adams: DPL Campaign Questions 004

Russ Allbery:
Do you have any thoughts about how to resolve release issues with less hurt and negative impact to the project all around?
I sure do. There has been a trend over many years to conflate the release management role with many other things: QA work, buildd work, ftpmaster-like work (I mean britney here), and in some cases I would even say DPL work. If we relegate release management to a strictly managerial role, I am certain that much of the stress, tension, and burnout will be mitigated. This means putting more access into the hands of many people, which is a good thing anyway. A release manager's job should be to say when a release is ready, what should and should not be in that release, and potentially some coordination with other developers, who are almost their equals. There will still be social conflict when the spirit of teamwork and cooperation is overcome by other factors, but I can conceive of a point where even that would not happen. Raphael Hertzog:
What do you think of this and would you be ready to withdraw a delegation for a delegate that behaved badly towards another DD (even outside of his delegated role), that has been warned once by you and that did it again later on? Do you think we can draft a code of conduct for Debian and do you think you can ensure that it would be respected by delegates?
I do not think that any long-term delegations should exist. I think that if they do, we have a structural problem which should be addressed in another way. Therefore I do not think it should be a big deal to withdraw a delegation for any legitimate reason, and if we are trying to force people to behave better (by a definition I agree with), then it seems reasonable to withdraw a delegation for bad behavior. Of course I would include ignoring people and having secret meetings in Vancouver as bad behavior, so that is perhaps not what you are getting at. I am not particularly in love with any formal codes of conduct, but I do think it is reasonable to hold DPL delegates or anyone who holds privileged positions of power to a much higher standard of behavior than the standard DD. With power should come responsibility, and all that. Presumably I would not delegate anyone who would place self and ego ahead of the well-being of the project, and presumably if there were a formal code of conduct or set of guidelines for delegates, those principles would align.

Tollef Fog Heen: Why I think you should publish your infrastructure

GNOME's current sysadmin team is entirely voluneer-based, but as they are having problems finding enough (trusted) volunteers they are looking at hiring a part-time sysadmin. From looking at the GNOME wiki, it looks like they have had a meeting about the shortage of sysadmins. Citing from the minutes
The biggest problem that we've always had with the maintaining an active sysadmin team is the need for trust. If somebody shows up and wants to help out with a GNOME coding project, then it's easy to build up trust over time. Suggest a project, have the person send patches, review the patches, if the patches are good, eventually give them direct commit access. However, for sysadmin work, we get a lot of people who want to help out, but it's very hard for someone to contribute without being given a "dangerous" level of access to the GNOME systems.
Without having looked very hard, I would guess at the GNOME infrastructure being about as open as most proprietary software projects. There's no way for me, as a third party to take a look at their infrastructure, take a look at their ticket backlog and submit patches for problems. Similarly, their nagios setup is behind a password prompt, so there's no way for me to look at what services often have performance problems, suggest new monitors or point out any servers or services that are not monitored. I'm not saying this to pick on GNOME, and as I'll touch on below, they do seem to mostly do the right thing, and as one of the Freedesktop.org sysadmins, I know we're not any better at least not yet. One way to make it at least somewhat easier to contribute and get involved is to use a tool like Chef or Puppet and publishing the recipes. This won't magically make everything transparent, but it'll be a big step up. Ideally, the recipes should be complete enough that you can bootstrap a working system from them and so easier reproduce the infrastructure and any problems. It seems like GNOME is using puppet, but I couldn't find the recipes. Moving a complete infrastructure from something managed by hand to something managed using automation tools is a fairly big and involved process. However, if you're serious about getting more people involved in your sysadmin team, I think it's one of the more reasonable ways to opening up. It also means that when one of your servers is stolen, catches fire or suffers other catastrophic failure you can rebuild the service much quicker. My last point is to open up your ticket tracker. Most tickets aren't security sensitive, so provide a way for people to mark those tickets that are sensitive as such and make the rest public. The GNOME wiki makes this a bit confusing as it talks a bit about RT, but it seems like they actually use bugzilla for sysadmin tickets and just hide security-sensitive ones.

Dirk Eddelbuettel: Rcpp 0.7.11

A new versions 0.7.11 of Rcpp is awaiting inclusion into CRAN and Debian. It is also available from here. This version fixes a somewhat serious bug uncovered by Doug Bates when working with vectors of strings. We also added a few new accessor functions as well as a new convenience function create that is particularly useful for creating (possibly named) list objects that are returned to R. Here is the full NEWS entry for this release:
0.7.11	2010-03-26
    o	Vector
 gains a set of templated factory methods "create" which
        takes up to 20 arguments and can create named or unnamed vectors.
        This greatly facilitates creating objects that are returned to R. 
    o	Matrix now has a diag() method to create diagonal matrices, and
        a new constructor using a single int to create square matrices
    o	Vector now has a new fill() method to propagate a single value
	
    o	Named is no more a class but a templated function. Both interfaces
        Named(.,.) and Named(.)=. are preserved, and extended to work also on 
        simple vectors (through Vector
::create) 
	
    o	Applied patch by Alistair Gee to make ColDatum more robust
    
    o	Fixed a bug in Vector that caused random behavior due to the lack of
        copy constructor in the Vector template
As always, even fuller details are in Rcpp Changelog page and the Rcpp page which also leads to the downloads, the browseable doxygen docs and zip files of doxygen output for the standard formats. A local directory has source and documentation too. Questions, comments etc should go to the rcpp-devel mailing list off the R-Forge page

26 March 2010

Clint Adams: DPL Campaign Questions 001

A while back, I promised some people that I would answer the campaign questions on -vote despite not being on the ballot. Many things came up to pre-empt me, including a short-lived surprise stint on the Release Team. I am still a bit behind on bug reports and such, but it might be inappropriate to start answering after the official campaign period has closed, so here is a start. J rg Jaspert:
Do you plan on taking on a "2IC" or a team?
I do not. I do not believe that either option is a good idea to begin with, and even if I did, I would not be in favor of undermining the Constitution by making an end run around it in this fashion. Martin Zobel-Helas:
The Debian Project receives quite a number of monetary donations as well as contributions in kind via several umbrella organization like SPI, ffis, debian.ch, etc. a) What do you think are valid goals to spend this money on? b) How would you think is a valid way to thank (hardware) contributors? b) What qualifies a contributor to become a "Debian Partner"? What qualifies a "Debian Partner"?
a) I think that it is important not to spend money on things that only benefit a single person or small group, such as ex-post facto legal defenses, core team travel expenses, or equipment for select persons. I would consider valid expenditures to be only those that directly benefit Debian as a whole. b) Ideally, contributors, whether they be hardware donors or developers or anything else, would be motivated solely out of doing good for the project and community, and not be seeking recognition, praise, power, or favors in return. However, since it is considered acceptable to have other motives, I think it fairly appropriate to display logos and give recognition on the Partners page. b) If I had my druthers, I would reserve the term Partners for those organizations who were fully aligned with us in a common goal. In the absence of such, though, the current usage seems fine. Paul Wise:
How much time do you currently devote to Debian? How will that amount of time change for the DPL term? How will you balance your DPL time and time for other Debian activities.
My time commitment varies due to a combination of external factors and Debian-related motivation. Since I have been slowly scaling back my involvement over the past several years, and unless you assume that the DPL role is inherently demotivating, I would presume to be spending about the same time or more on Debian if elected. I will be orphaning some more packages after squeeze is released, regardless of the outcome of the election. I would definitely not run if I doubted my ability to muster up the time and energy to be a good and effective DPL for the full length of the term.

25 March 2010

Neil Williams: lintian, source format 3.0 and blog comments

Regarding my previous post on source format 3.0, I think it came across that I was blaming lintian entirely which would be unfair.

(As a side-note, a bug in serendipity XMLRPC resulting in all entries having comments disabled has led to a welcome effect of spreading the discussion more widely than a series of comments on my own site could have achieved. I'm happy with this state of affairs, so it you want to comment, either contact me by private email or put your comments on your own blog. I won't be enabling comments any time soon.)

The extended information behind the lintian warning is one thing (I've explained my position on that to Russ privately) - my main objection is to how such a warning was pushed into lintian and the entire use 3.0 or be damned approach that seems to be being adopted.

IMHO, source format 3.0 is not good enough to be the standard dpkg source format for a simple reason: It offers nothing to well maintained packages. Not all packages need NMU's - ever. Not all packages have patches - ever. Native packages and packages with the Debian maintainer upstream gain nothing from 3.0, as far as I can see.

I have 67 source packages - after much very careful consideration, I have found that a handful of those (less than 10) actually benefit from 3.0 and the rest are all unaffected. None of the packages that I will keep on 1.0 have ever had an NMU since I've been maintainer, most are either native or entirely under my sole upstream control. I will decide whether Debian gets a .tar.gz or a .tar.bz2 and although I generally offer both for download where I can, I see no reason to adopt .tar.bz2 as my default for Debian packaging.

Adding a redundant directory and file is obnoxious. I fail to see why debian/source-format would not have been perfectly suitable. Nevertheless, I will do what is necessary to avoid 3.0 until there is a compelling technical reason to adopt it.

The imperative for those in favour of 3.0 is to convince me that there is a reason TO change, not to make it difficult for me NOT to change. I do not need any reason to avoid 3.0 other than I do not have a good enough reason to move from 1.0. Making developers feel like luddites or incompetent merely because the proponents of 3.0 have failed to convince others to move to 3.0 is just insulting. You want me to use 3.0? Explain why I should bother - the current "reasons" on the Wiki page are simply not good enough and any rehash of those will be ignored. Come up with something new or respect my decision and let me get on with more important stuff.

John Goerzen: Trip part 2: Flight to Hamburg

Note: This post written March 13, and posted after our return. Yesterday was a day of travel. We said goodbye to Jacob and Oliver in the morning. We had thought a lot about how to tell Jacob what was happening and when to tell him. Ultimately, he doesn t really understand time or distance very well yet, and we know that he worries about the unknown. So although he knew about the visit to Indiana for awhile, he didn t know that Terah and I would be going somewhere until th emorning. He wasn t pleased, but seemed to take it well. We told him that we re going to a hotel in Germany and reminded him of other times we ve gone to a hotel. I also reminded him that sometimes a babysitter comes to our house while Terah and I go somewhere else, but we always come back later. That seemed to help. We got to the Indianapolis International Airport in plenty of time for our flight. They have built a completely new terminal building; the old one we were familiar with is now abandoned. The new building is beautiful, sunny, open, and even inspiring. I was impressed. Newark Liberty International, on the other hand, had all the ambiance of a Greyhound station across from the county jail. It reminded me a lot of Chicago Midway, which I used to go through regularly: dark, a bit run down (water stains on the ceilings), and nowhere near enough seating in the gate areas. We wound up standing for an hour before our flight left (late). The food court in Concourse C was something special. As we were witting there, Terah remarked on the constant stream of passengers that walked up to the food court, glanced around, and made a look of THESE are my choices? Which was our exact reaction a few minutes before. Yep, it s the first food court I ve been in where McDonald s was the upscale choice. The sit-down Mexican Cafe had hamburgers with mexi-fries as its main attractions. Terah tried out the dodgy pizza place while I tried out the even more dodgy Chinese/sushi place (I was not silly enough to try sushi there). Ultimately we decided that perhaps the point of the food court was to make us eager for airplane food. The choices in Indianapolis sure put that to shame: TGI Fridays was a real gourmet option compared to the choices in Newark. I was really a bit embarrassed; Newark is a major international airport, and many visitors to the United States will be greeted by a foul-smelling food court and a dingy airport. Yay for being welcoming? Well, really we had a good day of travel and I shouldn t be ragging on the Newark airport so much, so I ll say something positive: there s a pharmacy right behind the food court, which is probably a very convenient location to meet the needs of many diners. Anyhow, our flight left Newark about an hour late, at about 7PM Eastern. As I write this, it s about 7:30 CET (1AM Eastern) and our plane will be on the ground in about an hour. I m excited for the coming week! I got some sleep on the plane, but not a lot. I m hoping that I will have the energy for a good weekend.

24 March 2010

John Goerzen: Review: Travel as a Political Act by Rick Steves

Rick Steves is known for writing books, and producing public TV shows, about travel to Europe. He encourages people to get out of their comfort zone, advocates staying in homes instead of hotels, and giving yourself permission to struggle to communicate in a land of unfamiliar language. That way, you get to experience not just the landmarks, but the culture and history. That was the approach we favored in our recent trip to Europe, and after being there (and seeing tour groups), I think Rick Steves is right on. On the plane to Europe, I read his Travel as a Political Act. This is not a guidebook, but more a book about the philosophy of travel. As usual with my book reviews, unless indicated otherwise, all quotes here come from the book. He starts out with this statement:
I ve taught people how to travel. I focus mostly on the logistics: finding the right hotel, avoiding long lines But that s not why we travel. We travel to have enlightening experiences, to meet inspirational people, to be stimulated, to learn, and to grow. Travel has taught me the fun in having my cultural furniture rearranged and my ethnocentric self-assuredness walloped.
I read this book mostly on the plane to Hamburg, or the week prior to leaving. I can credit Rick Steves directly for encouraging me to strike up a conversation with a random German on the bus from Hamburg to L beck, which I ll discuss here in a couple of days. Probably the biggest lament from Rick Steves is that the people that really ought to travel the ones that are so sure that their ways are correct and best are least likely to do so.
Make a decision that on any trip you take, you ll make a point to be open to new experiences, seek options that get you out of your comfort zone, and be a cultural chameleon trying on new ways of looking at things and striving to become a temporary local. My best vacations have been both fun and intensely educational Travel challenges truths that we were raised thinking were self-evident and God-given. Leaving home, we learn that other people find different truths to be self-evident. We realize that it just makes sense to give everyone a little wiggle room.
The book is set with an introductory encouragement to travel, followed by seven vignettes of different countries he s visited, and descriptions of how it s impacted him. He gave a lesson of the opening of the German Reichstag (parliament building), which he was present for in 1999. He was surrounded by teary-eyed Germans and a few tourists so preoccupied with trivialities forgotten camera batteries, needing a Coke, the lack of air-conditioning that they were missing out on this once-in-a-lifetime opportunity to celebrate a great moment with the German people. He comments that we can learn from other countries that no one country has a monopoly on good ideas, and it is plenty patriotic to insist what we adopt good ideas (such as drug policy) from other countries and adopt them for our own. Particularly touching to me was the description and photo of a memorial in El Salvador, very much looking like the American Vietnam memorial except that one remembering loved ones lost fighting the United States. How many Americans even know that we were involved in a damaging war in El Salvador? A large part of his book was, for me, preaching to the choir, as this comment illustrated:
In the European view, America is trapped in an inescapable cycle to feed its military-industrial complex: As we bulk up our military, we look for opportunities to make use of it. (When your only tool is a hammer, you treat every problem like a nail.) And then, when we employ our military unwisely, we create more enemies which makes us feel the need to grow our military even more. If an American diplomat complained to his European counterpart, America is doing all the heavly lifting when it comes to military, the European might respond, Well, you seem to be enjoying it. We re building roads and bridges instead.
That s a sentiment I ve agreed with for quite some time already, and as such, some parts of the book moved slowly for me though I imagine his target audience included people that had never seriously considered these arguments before. Then there were surprising facts:
by the end of World War I, an estimated half of all the men in France between the ages of 15 and 30 were casualties. When some Americans, frustrated at France s reluctance to follow us into a war, call the French surrender monkeys, I believe it shows their ignorance of history.
And again, I d agree with him on that point. The vignette on Iran was particularly interesting, as he described his experiences in person, they sounded far different than the picture we often get in the media. I have realized, incidentally, that I am terrible at writing book reviews. So rather than inflict more paragraphs upon you with this one, I ll summarize by saying that this is a touching, informative, and motivational book, which I highly recommend. I ll leave you with this quote:
Mark Twain wrote, Travel is fatal to prejudice, bigotry, and narrow-mindedness. These wise words can be a reallying cry for all travelers once comfortably back home. When courageous leaders in our community combat small-mindedness and ignorance travelers can stand with them in solidarity.
I didn t travel to make some sort of statement or as a political act. But I was enriched in many ways by travel of course the obvious ones of contemplating the history of a 900-year-old beautiful church, but also in seeing the different character of different cities, being with two families for a couple of days, and seeing different approaches to common problems. I am very glad I wasn t shut off from this behind a tinted window in a tour bus.

Theppitak Karoonboonyanan: The Mini-DebCamp in Khon Kaen

So, Thailand Mini-DebCamp 2010 in Khon Kaen has already ended. It's another memorable event I've joined, and especially for this one, been in the organizing team. We owed many people for its success. I'd like to thank our guest DDs for their talks, many of which are improvised. Special thanks to Paul Wise and Yakiharu Yabuki for preparing the talks on Debian Social Contract and Debian packaging in one night, so our audiences can prepare themselves for the Bug Squashing Party in the next 3 consecutive days. Thanks Paul Wise, Andrew Lee, Yakiharu Yabuki, Daiki Ueno, Christian Perrier and our local participants for their efforts in tackling more than 50 bugs during the BSP, 30 of which have been closed and 14 with proposed patches. Thanks Christian Perrier for several talks in the last two days. We also had Andrew Lee's talk on Debian EzGo project, along with talks from our local distro developers (Linux SIS, Linux TLE) on what are being worked on and what can be pushed into Debian. And Neutron Soutmun had presented some future plan on the RahuNAS, a captive portal software based on Debian. A special agenda had been arranged to improve Debian mirroring in Thailand. Chatchai Jantaraprim, the ftp.th.debian.org maintainer, had shared us the backgrounds and motivations behind the official mirror setup for Thailand. Andrew Lee, the ftp.tw.debian.org maintainer, had introduced us to the Debian mirroring infrastructure, and encouraged the local mirror Debian mirror maintainers to do it Debian way. We had exchanged experiences and problems found among the current mirror sites, which can be much useful for their improvements, as well as cooperation in the future. Christian Perrier had also introduced us to the Debian translation workflow and how to coordinate translation via mailing list. This can be useful in the future for Thai if we can form a team, rather than a single-handed translation as present. Christian's talk on Debian contribution paths, along with their fresh hands-on experience in the BSP, had indeed motivated many local people to join Debian. I've been told by some people that they wanted to actually join Debian after this event, after just having a wish to do so for a long time. And Christian's yet another talk on key signing, with live demonstration, was really helpful for Thai audiences, as few of us were familiar with the concept and practice. Yes, taking care of PGP key does require special cares! Night chats and parties were also cool. We enjoyed the drinks (especially, Debian wine!), snacks, and chats together, and exchanged many stories. For me personally, it made me feel Debian as a live community, with people living in it. For the record, we even had a real bug squashing party, as fried bugs are among well-known Esaan dishes. And we had immediately got new voluntary vegetarians because of it! Hee hee.. Hello Christian, I witnessed it. ;-) And thumbs up to Yabuki for his bravery! Yes, it's a wonderful event for me indeed. Thanks Khon Kaen University (Kitt Tientanopajai et. al.) for hosting it. Thanks NECTEC Information and Mobile Applications Program and Science Park KKU for the financial support. Thanks NECTEC people for taking care of foreign participants in traveling between Bangkok and Khon Kaen. And thanks all participants for their contributions to make this event a great one! Picture credits: Supphachoke Suntiwichaya, DebConf Gallery

22 March 2010

Ian Wienand: What exactly does -Bsymblic do? -- update

Some time ago I wrote a description of the -Bsymbolic linker flag which could do with some further explanation. The original article is a good starting place. One interesting point that I didn't go into was the potential for code optimisation -Bsymbolic brings about. I'm not sure if I missed that at the time, or the toolchain changed, both are probably equally likely! Let me recap the example...
ianw@jj:/tmp/bsymbolic$ cat Makefile 
all: test test-bsymbolic
clean:
	rm -f *.so test testsym
liboverride.so : liboverride.c
	       $(CC) -Wall -O2 -shared -fPIC -o liboverride.so $<
libtest.so : libtest.c
	   $(CC) -Wall -O2 -shared -fPIC -o libtest.so $<
libtest-bsymbolic.so : libtest.c
		     $(CC) -Wall -O2 -shared -fPIC -Wl,-Bsymbolic -o $@ $<
test : test.c libtest.so liboverride.so
     $(CC) -Wall -O2 -L. -Wl,-rpath=. -ltest -o $@ $<
test-bsymbolic : test.c libtest-bsymbolic.so liboverride.so
	$(CC) -Wall -O2 -L. -Wl,-rpath=. -ltest-bsymbolic -o $@ $<
$ cat liboverride.c 
#include <stdio.h>
int foo(void)
 
	printf("override foo called\n");
	return 0;
 
$ cat libtest.c 
#include <stdio.h>
int foo(void)  
    printf("libtest foo called\n");
    return 1;
 
int test_foo(void)  
    return foo();
 
$ cat test.c
#include <stdio.h>
int test_foo(void);
int main(void)
 
	printf("%d\n", test_foo());
	return 0;
 
In words; libtest.so provides test_foo(), which calls foo() to do the actual work. libtest-bsymbolic.so is simply built with the flag in question, -Bsymbolic. liboverride.so provides the alternative version of foo() designed to override the original via a LD_PRELOAD of the library. test is built against libtest.so, test-bsymbolic against libtest-bsymbolic.so. Running the examples, we can see that the LD_PRELOAD does not override the symbol in the library built with -Bsymbolic.
$ ./test
libtest foo called
1
$ ./test-bsymbolic 
libtest foo called
1
$ LD_PRELOAD=liboverride.so ./test
override foo called
0
$ LD_PRELOAD=liboverride.so ./test-bsymbolic 
libtest foo called
1
There are a couple of things going on here. Firstly, you can see that the SYMBOLIC flag is set in the dynamic section, leading to the dynamic linker behaviour I explained in the original article:
ianw@jj:/tmp/bsymbolic$ readelf --dynamic ./libtest-bsymbolic.so 
Dynamic section at offset 0x550 contains 22 entries:
  Tag        Type                         Name/Value
 0x00000001 (NEEDED)                     Shared library: [libc.so.6]
 0x00000010 (SYMBOLIC)                   0x0
...
However, there is also an effect on generated code. Have a look at the PLTs:
$ objdump --disassemble-all ./libtest.so
Disassembly of section .plt:
[... blah ...]
0000039c <foo>:
 39c:   ff a3 10 00 00 00       jmp    *0x10(%ebx)
 3a2:   68 08 00 00 00          push   $0x8
 3a7:   e9 d0 ff ff ff          jmp    37c <_init+0x30>
$ objdump --disassemble-all ./libtest-bsymbolic.so
Disassembly of section .plt:
00000374 <__gmon_start__@plt-0x10>:
 374:   ff b3 04 00 00 00       pushl  0x4(%ebx)
 37a:   ff a3 08 00 00 00       jmp    *0x8(%ebx)
 380:   00 00                   add    %al,(%eax)
        ...
00000384 <__gmon_start__@plt>:
 384:   ff a3 0c 00 00 00       jmp    *0xc(%ebx)
 38a:   68 00 00 00 00          push   $0x0
 38f:   e9 e0 ff ff ff          jmp    374 <_init+0x30>
00000394 <puts>:
 394:   ff a3 10 00 00 00       jmp    *0x10(%ebx)
 39a:   68 08 00 00 00          push   $0x8
 39f:   e9 d0 ff ff ff          jmp    374 <_init+0x30>
000003a4 <__cxa_finalize@plt>:
 3a4:   ff a3 14 00 00 00       jmp    *0x14(%ebx)
 3aa:   68 10 00 00 00          push   $0x10
 3af:   e9 c0 ff ff ff          jmp    374 <_init+0x30>
Notice the difference? There is no PLT entry for foo() when -Bsymbolic is used. Effectively, the toolchain has noticed that foo() can never be overridden and optimised out the PLT call for it. This is analogous to using "hidden" attributes for symbols, which I have detailed in another article on symbol visiblity attributes (which also goes into PLT's, if the above meant nothing to you). So -Bsymbolic does have some more side-effects than just setting a flag to tell the dynamic linker about binding rules -- it can actually result in optimised code. However, I'm still struggling to find good use-cases for -Bsymbolic that can't be better done with Version scripts and visibility attributes. I would certainly recommend using these methods if at all possible. Thanks to Ryan Lortie for comments on the original article.

Dirk Eddelbuettel: 2010 March Madness Half Marathon in Cary

The annual March Madness Half Marathon in Cary took place this morning. This is both one of Chicagoland's 'early races' to start the season as well as the classic Boston preparation due to the hilly course. I have now run this consecutively for six years (see 2005. 2006, 2007, 2008, and 2009). As for the race conditions, we had fantastic weather all week with temperatures up to the sixties and then all of a sudden a forecast of rain, snow and even sleet for the weekend. Luckily, and while yesterday was sucky, today was allright or better. A little chilly and damp, but neither rain nor snow --- or even wind. So the conditions were good, with the course challenging as usual. The race itself went fine. I ran more or less steadily, never had to stop but was not particularly fast at 1:39:38 or a pace of 7:36.3. I had aimed for beating 1:40, had missed that target by miles 4 to 6 and was about 10 or 15 seconds behind but managed to get a negative split on the second half of the course to reach that goal. Which is nice, but the time is still the slowest I've ever run that race, and my slowest half-marathon since 2004. Training had been sluggish all winter. Oddly enough, already in last year's post I stated pretty much the same and feared that Boston may become tough --- which it did. But this year may well be a lot worse as I had no spring in my step all winter long. No fire in the belly for training will make for a long race. We'll see how it goes. Four weeks to go.

21 March 2010

Robert Collins: LibrePlanet 2010 day 3

Free network services A discussion session led by Bradley Kuhn, Mako & Matt Lee : Libre.fm encouraged last.fm to write an API so they didn t need to screen scrape; outcome of the network services story still unknown netbooks without local productivity apps might now work, most users of network office apps are using them because of collaboration. We have a replacement for twitter status.net, distributed system, but nothing like facebook [yet?]. Bradley says like the original GNU problem, just start writing secure peer to peer network services to offer the things that are currently proprietary. There is perhaps a lack of an architectural vision for replacing these proprietary things: folk are asking how we will replace the cloud aspects of facebook etc tagging photos and other stuff around the web, while not using hosted-by-other-people-services. I stopped at this point to switch sessions the rooms were not in sync session time wise. Mentoring in free software Leslie Hawthorne: Projector not working, so Leslie carried on a discussion carried on from the previous talk about the use of sexual themes in promoting projects/talk content and the like. This is almost certainly best covered by watching the video. A few themes from it though: We then got Leslies actual talk. Sadly I missed the start of it I was outside organising security guards because we had (and boy it was ironic) a very loud, confrontational guy at the front who was replying to every statement and the tone in the room had gotten to the point that a fight was brewing. From where I got back: Chris Ball, Hanna Wallach, Erinn Clark and Denise Paolucci Recruiting/retaining women in free software projects. Not a unique problem to women things that make it better for women can also increase the recruitment and retention of men. Make a lack of diversity a bug; provide onramps small easy bugs in the bug tracker (tagged as such), have a dedicated womens sub project and permit [well behaved :) ] men in there helps build connections into the rest of the project. Make it clear that mistakes are ok. On retention recognise first patches, first commits in newsletters and the like. Call out big things or long wanted features by the person that helped. Regular discussion of patches and fixes rather than just the changelog. CMU did a study on undergrad women participation in CS : Lack of confidence preceeds lack of interest/partipation . Engagement with what they are doing is a key thing too. Women are consistently undervaluing their worth to the free software community . Its the personal touch that seems to make a huge difference . More projects should do a code of conduct kudos to Ubuntu for doing it Chris Ball. I found the mentoring and women-in-free-software talks to have extremely similar themes which is perhaps confirmation or something but it wasn t surprising to me. They were both really good talks though! And thats my coverage of LibrePlanet I m catching a plane after lunch :( . Its a good low-key conference, and well put together.

Russell Coker: Citing Wikipedia

A meme that has been going around is that you can t cite Wikipedia. You can t Cite Wikipedia Academically Now it s well known and generally agreed that you can t cite Wikipedia for a scientific paper or other serious academic work. This makes sense firstly because Wikipedia changes, both in the short term (including vandalism) and in the long term (due to changes in technology, new archaeological discoveries, current events, etc). But you can link to a particular version of a Wikipedia page, you can just click on the history tab at the top of the screen and then click on the date of the version for which you want a direct permanent link. The real reason for not linking to Wikipedia articles in academic publications is that you want to reference the original research not a report on it, which really makes sense. Of course the down-side is that you might reference some data that is in the middle of a 100 page report, in which case you might have to mention the page number as well. Also often the summary of the data you desire simply isn t available anywhere else, someone might for example take some facts from 10 different pages of a government document and summarise them neatly in a single paragraph on Wikipedia. This isn t a huge obstacle but just takes more time to create your own summary with references. When Wikipedia is Suitable The real issue however is how serious the document you are writing is and how much time you are prepared to spend on it. If I m writing a message to a mailing list or a comment on a blog post then I probably won t bother reading all the primary sources of Wikipedia pages, it would just waste too much of my time. Wikipedia is adequate for the vast majority of mailing list discussions. If I m discussing several choices for software with some colleagues we will probably start by reading the Wikipedia pages, if one option doesn t appear to have the necessary features (according to Wikipedia) then we may ask the vendor if those features are really missing and if so whether they will be added in the next version but we may decide that we don t really need the features in question and modify our deployment plans. Many business decisions are made with incomplete data, time is money and there often isn t time to do everything you want to do. Using Wikipedia as a primary source for business decisions is a way of trading off a little accuracy for a huge time saving. This is significantly better than the old fashioned approach of comparing products by reading their brochures companies LIE in their advertising! When writing blog posts the choice of whether to use Wikipedia as a reference depends on the point that you are trying to make and how serious the post is. If the post isn t really serious or contentious or if the Wikipedia reference is for some facts that are not likely to be disputed then Wikipedia will probably do. For some posts a reference to a primary source will be better. A blog post that references data that is behind a pay-wall (such as a significant portion of academic papers and news articles) is practically of less use than a post that cites Wikipedia. In most cases Wikipedia references free primary sources on the Internet (although it does sometimes refer to dead tree products and data that is behind a pay-wall). In the minority of cases where the primary references for a Wikipedia page are not available for free on the Internet there will be people searching for freely available references to replace the non-free ones. So if you refer to a Wikipedia page with non-free references a future reader might find that someone has added free references to it. The Annoying People One thing that often happens is that an Internet discussion contains no references for anything it s all just unsupported assertions. Then if anyone cites Wikipedia someone jumps in with you can t cite Wikipedia . If you want to criticise Wikipedia references then please first start by criticising people who state opinions as fact and people who provide numbers without telling anyone where they came from! The Guinness Book of Records (now known as Guinness World Records ) was devised as a reference to cite in debates in pubs [1]. It seems that most of the people who dismiss references to Wikipedia on the net would prefer that Internet debates have lower requirements for references than a pub debate. When Wikipedia is cited in an online discussion it is usually a matter of one mouse click to check the references for the data in question. If Wikipedia happens to be wrong then anyone who cares can correct it. Saying the Wikipedia page you cited had some transcription errors in copying data from primary sources and some of the other data was not attributed, I ve corrected the numbers and noted that it contains original research would be a very effective rebuttal to an argument that relies on data in Wikipedia. Saying you can t cite Wikipedia means little, particularly if you happen to be strongly advocating an opposing position while not providing any references. If one person cites an academic paper and someone else cites Wikipedia then it seems reasonable to assume that the academic paper is the better reference. But when it s a choice between Wikipedia and no reference then surely Wikipedia should win! Also references to non-free data are not much good for supporting an argument, that s really just unverified claims as far as most people can determine therefore the issue becomes how much the person citing the non-free reference can be trusted to correctly understand and summarise the non-free data. Also it has to be considered that not all primary sources are equal. Opinion pieces should be considered to have a fairly low value and while they are authoritative for representing the opinion of the person who wrote them they often prove little else unless they happen to cite good references which brings them to the same level as Wikipedia. The main benefit for linking to opinion pieces is that it saves time typing and gives a better product for the readers it s sometimes easier to find someone else expressing an opinion well than to express it yourself. So please, don t criticise me for citing Wikipedia unless others in the discussion are citing better references. If most people are not citing any references or only citing opinion pieces then a Wikipedia page may be the best reference that is being provided!

19 March 2010

Robert Collins: LibrePlanet GNU Hackers Meetup

GNU Hackers meetups are a face to face meeting to balance the online collaboration that GNU maintainers and contributors do all the time. These are a recent (since 2007) thing, and are having a positive effect within GNU and the FSF. The LibrePlanet 2010 GNU Hackers meetup runs concurrent with the first day of LibrePlanet. We started with some project updates: Felipe Sanches presented his list of things that should be on the high priority project list: lunch John Eaton on Octave. John compared the octave contributors 30 or so over the years, and never more than 2 at a time. The Proprietary product Matlab that Octave is very similar to has 2000 staff working at the company producing it. Users seem to expect the two products to be equivalent, and are disappointed that Octave is less capable, and that the community is not as able to do the sort of support that a commercial organisation might have done. Octave would like to gain some more developers and be able to educe users more effectively convert more to become developers. Rob Myers, the chief GNU webmaster gave a description of his role: The webmasters deal with adding new content, dealing with mail to webmaster@, which can be queries for the GNU project, random questions about CDs, and an endless flood of spam. The webmasters project is run as a free software project the site is in CVS (yes CVS), visible on Savannah. Templates could be made nicer and perhaps move to a CMS. Aubrey Jaffer on cross platform. There is a thing called Water which is meant to replace all the different languages used in web apps generates html, css, alters the DOM, does what you d do with javascript. So there is a Water -> backend translator that outputs Java for servers, C# for windows, and so on. (I think, this wasn t entirely clear). He went on to talk about many of the internals of a thing called Schlep which is used as a compiler to get scheme code running in C/C#/Java so as to make it available to Water backends in different environments. Matt Lee spoke about GNU FM GNU FM is a free last.fm site. The site is running at http://libre.fm/. 24ish devs, but stalle after 6 months whats next? Matt has started GNU Social to build a communication framework for GNU projects to talk to each other e.g. for each GNU FM site to communicate on the back end, with a particular focus on doing social functionality groups, friendships, personal info. The wiki page needs ideas! GNU advisory board discussion too much to capture, but focused GNU wide issues things like how projects get contributors, contributions, coordination. Teams were a big discussion point, bug trackers how to coordinate teams followed up of that, and there is s GNU Source Release Collection project to do coordinated releases of GNU software that are all known to work together.

Next.

Previous.