2011 年巴黎 GNU 黑客会议

地点:法国巴黎,位于 IRILL (详细信息, 地图),自由软件研究与创新中心。

本次 GNU 黑客会议于 2011 年 8 月 25 日星期四至 8 月 28 日星期日举行。感谢 IRILL 主办本次活动并进行视频录制,感谢 Inria 提供会议室,感谢 FSF 为会议提供资金。

IRILL 位于意大利大道 23 号,三楼,与 Inria 在同一栋建筑内。主要演讲将在 IRILL 三楼的“algorithme”房间进行。IRILL 和 Inria 的入口位于 建筑的左侧,邮局(“La Poste”)入口的左侧。

日程安排

IRILL 的设施在 8 月 25 日星期四至 28 日星期日全天开放。

以下是演讲日程。今年的主题是可扩展性。

8 月 26 日星期五

演讲

今年的主题是可扩展性

演讲列表如下,通常包括摘要、辅助幻灯片和演讲的视频录像。所有视频和本地托管的幻灯片均在 知识共享署名 3.0 未本地化 许可下发布,除非另有说明。视频采用 Ogg 格式。

GNU 黑客会议简介(Ludovic Courtes)

视频

闪电演讲

视频

再见,世界!依赖 C 语言输出流的危险(Jim Meyering)

幻灯片视频

如果您使用 C 语言进行开发,并且希望应用程序可靠地检测和诊断输出错误,那么您希望使用标准流输出函数,例如 putcharfputsfprintf 等。如果您必须使用它们,那么您需要担心大量的极端情况。在这里,您将看到如何在保留一定程度可维护性的同时处理丑陋的现实。

许多程序将其部分或全部输出写入 stdout,即标准输出流。然而,尽管大多数经验丰富的程序员都意识到关闭(并诊断其中的任何故障)他们打开的所有文件的重要性,但很少有人将这种纪律应用于 stdout。结果是许多程序没有诊断写入错误。正如您将看到的,尽管应用程序通常不会打开 stdout,但正确关闭它通常与关闭任何其他输出流一样重要。我将说明这个问题,并展示如何以可维护且最小侵入性的方式避免它。虽然处理 stdout 有一些微妙的曲折,但您会看到,可靠地使用任何输出流都需要非常小心,在某些情况下,这几乎是不可能的。最后,您会想知道为什么任何需要可靠输出函数的开发人员仍然使用 C 流。

GNU epsilon,一种可扩展的编程语言(Luca Saiu)

幻灯片视频

应该将编程语言设计为可由用户扩展,基于非常小的语言和一组旨在将复杂程序重写为简单形式组合的语法抽象功能,这些形式易于分析、推理和实现,并根据用户提供的规范指导语法、控制、静态分析和优化。

本次演讲介绍了这种还原主义设计哲学的优势和挑战,并记录了基于特定核心语言的构建经验,从其附近开始并探索更远的地方。

将提供有关实施情况的报告。

让旧事物焕发新生(Reuben Thomas)

幻灯片视频

GNU 有许多历史悠久的项目,这些项目仍然是 GNU 在底层运行的核心,并且在许多情况下,用户仍然直接广泛使用这些项目。诸如 coreutils、grep 和 gcc 之类的程序属于此类,Emacs 也是如此。

不幸的是,在这些程序上工作并没有被广泛视为一件有趣或很酷的事情。这很可惜,原因有两个:首先,尽管过去几年重新努力,但这些程序中的许多程序只是保持在良好状态,并没有像他们本可以的那样得到进一步的开发;其次,使用 C 语言和 GNU autotools 进行编程被广泛认为(尤其是在 GNU 之外)是乏味的、低效的和过时的。另一方面,虽然 GNU 工具取得了一些显着的进步,但在不幸的程度上,这种看法仍然是正确的。

本次演讲有两个主要目的:首先,展示 GNU 工具的最新进展,特别是最近快速发展的 gnulib,它使 C 语言编程比许多年前更高效和有趣;其次,探索剩余的障碍,并提出一些使用现有成熟工具、未被广泛使用的现有工具(通常仍然需要工作)以及尚未实施的一个或两个想法来解决这些障碍的建议;第三,表明不仅在“传统 UNIX”风格编程中有很多必要和有价值的工作要做,而且还有很多乐趣,并且也许最令人惊讶的是,对于非内核程序员来说,它仍然可以是令人兴奋的创新的框架。

makeinfo 的最新开发方向(Patrice Dumas)

幻灯片视频

Texinfo 是 GNU 项目的官方文档格式。但是,最后一个版本可以追溯到 2008 年。这段漫长的时间是由于幕后发生了很多变化,首先是将 texi2html 合并到 Texinfo 中,以替换 makeinfo,然后用将 Texinfo 文档转换为由转换器进一步处理的树的解析器替换。

在详细介绍最近(和不太最近)的历史之后,简要介绍一下解析器将展示 makeinfo 的下一步发展方向。

GNU/Hurd,又名:从基础开始的可扩展性(Samuel Thibault)

幻灯片视频

Unix 模型通常将“特权”用户与非特权用户严格区分开来。前者通常拥有所有可能的特权,而后者则拥有非常受限的特权,仅限于他们自己的主目录,并且最多有时允许挂载可移动介质。来自用户空间的一个解决方案例如是 GVFS,它允许 GNOME 应用程序透明地访问不仅系统提供的(即实际由特权用户提供的)内容,还包括用户空间提供的内容,例如来自 FTP、SMB 等的文件。另一个有趣的例子是使用 SOCKS 访问内网网站。一些浏览器原生支持使用 SOCKS 代理,而对于那些不支持的浏览器,可以使用 libsocks4 透明地使它们这样做。

然而,这些方法(嵌入)是有限的,并且会阻碍组合,因为它们大多需要在源代码中显式地指定。如果可移动介质使用特殊的文件系统格式化怎么办?如果内网网站无法通过 ssh 访问,只能通过 VPN 访问怎么办?为什么在已经授予了对串行端口的访问权限的情况下,不允许通过串行端口运行 PPP 隧道?这些通常在桌面上不是问题,因为非特权用户实际上也是特权用户,并且人们已经习惯于通过 sudo、FUSE、TAP 等进行一些调整,但它仍然很繁琐,并且存在潜在的安全漏洞。在一个新安装的系统上,难道不能例如直接运行 tar xf /ftp://ftp.gnu.org/pub/gnu/gcc/gcc-4.6.0/gcc-4.6.0.tar.bz2 来一步下载并解压缩一个 tarball 吗?实际上,在 GNU/Hurd 系统上,是可以的。

有趣的是,即使 GNU 不是 Unix,GNU/Hurd 也使用非常类似 Unix 的方法来实现可扩展性:文件。通过引入翻译器的概念,这实际上是它的真正核心,GNU/Hurd 让用户可以轻松完成在通常的 Unix 系统上需要特殊权限的各种任务,例如从 shell 访问 iso 映像的内容、chrooting、通过 VPN 路由应用程序网络流量、IP 转换……

本次演讲将介绍翻译器的概念,并通过一些已经工作的翻译器的例子,展示它为“非特权”用户(即实际上是 #0 自由)带来的强大功能,而不会破坏安全性,以及它与 Linux GVFS/FUSE/CUSE 等同类产品相比如何。

GNU MPFR 库简介 (Vincent Lefevre)

(幻灯片, 视频)

本次演讲将对 GNU MPFR 库进行总体介绍,该库用于任意精度的浮点计算。我将解释该库的特定功能(位级别的正确舍入、异常),并给出示例。我还将解释如何测试 MPFR 以提高其可靠性。最后,将介绍一些使用该库的简单应用程序。

GNU MPC 库简介 (Andreas Enge)

(幻灯片)

将介绍 GNU MPC 库,其中许多方面与 GNU MPFR 库相似,但也存在一些差异。我们将讨论复数的表示和主要实现的功能。还将讨论一些为实现高效实现并同时保证正确舍入而选择的算法。

[未公开主题] (Jose E. Marchesi)

已取消。

Org-mode 对于 Emacs 就像 Emacs 对于计算机 (Bastien Guerry)

(幻灯片, 视频)

Org-mode 是一个 Emacs 模式,用于使用快速有效的纯文本系统来记录笔记、维护 TODO 列表、进行项目规划和创作。

在本次演讲中,我将介绍现有的核心功能(组织器、导出器、Babel 库)并展示实际使用的例子。我还将列出可能的贡献(导出器、与在线组织器交互的库、错误跟踪工具等)并提及需要解决的难题,其中最难的是使 Org 适合于协作项目规划。

最后,我将概述 Org 的历史和社区,并提出一些关于如何维持这个伟大项目的想法。

Debian 的背景:发行版、上游和下游 (Stefano Zacchiroli, Debian 项目负责人)

(幻灯片, 视频)

很久以前,软件发行版的工作流程相当简单(获取新的上游版本、打包、获利),并且利益相关者的数量相对较少(上游作者、打包者、用户)。如今,情况变得越来越复杂,上游/下游的概念也越来越模糊:衍生发行版建立在现有发行版之上,软件发行管道越来越长,……而且(幸运的是)用户无处不在!为了拥有一个可持续的生态系统,不仅惠及个别项目,而且惠及整个自由软件,各个利益相关者的责任是什么?

Emacs XWidget 分支 (Joakim Verona)

(幻灯片, 视频)

Emacs Xwidgets 是一个实验性分支,用于在 Emacs 窗口内嵌入 GTK+ 小部件。Emacs 抽象称为 Xwidget,代表外部小部件,也参考了 XEmbed 协议。

目前,可以在缓冲区中插入按钮、滑块、WebKit 浏览器和 XEmbed 套接字。它的工作方式类似于 Emacs 中对图像的支持。添加更多类型的小部件应该相当简单,但每种类型都需要适配器代码。

与图像不同的是,xwidget 有自己的生命周期。您使用 API 创建它们,获取引用,并使用显示规范将它们绑定到特定缓冲区。

每个 xwidget 可以有多个视图。在 MVC 术语中,xwidget 是模型,而 xwidget-view 是 xwidget 在特定 Emacs 窗口中的视图。

xwidget 代码尝试通过观察者模式实现来保持视图的视觉外观同步。

GNUstep 和 Étoilé 中的可扩展性 (Quentin Mathé)

(幻灯片, 视频)

本次演讲将介绍 Objective-C 中用于支持可扩展性的各种有趣机制,GNUstep 如何将它们用作符合 Cocoa 的实现,以及 Étoilé 如何利用 Objective-C 和 GNUstep 将用户和开发人员方面的灵活性进一步提升。

Objective-C 具有从其他库扩展类、在运行时内省代码、延迟解析方法等各种能力。我们将讨论这些以及一些不太常见的想法,例如类转换,用于实现原型或键值观察(一种观察其他对象中任意变化的方法)。

GNUstep 使用 Objective-C 的动态性来实现其绘图后端、主题支持或诸如键值编码或键值观察之类的功能,这些功能在 Cocoa 开发人员中更为人所知。GNUstep AppKit 和 Foundation 基于各种重复模式,例如类注册或类集群,以扩展内置类,因此我们将详细介绍它们并给出一些具体示例,例如 NSImageRep

在 Objective-C 和 GNUstep 的基础上,Étoilé 构建了一个桌面环境,它或多或少是一个开发人员平台。我们将讨论 LanguageKit,它可以用来创建与 Objective-C 对象无缝集成的动态语言,并使得可以用多种语言编写属于同一类的方法。在更高的层面上,我们将展示 EtoileUI 提供的可能性,EtoileUI 是一个 UI 工具包,其中用户界面完全模块化为可插入的方面(布局、样式、工具、控制器等),从而可以快速创建新的 UI 或在运行时精确轻松地更改 UI。

如果时间允许 ;-) 我将尝试介绍我们关于 CoreObject 作为具有版本控制的面向对象数据库的最新实验,或者至少做一个快速演示。

使用 MELT 扩展 GCC 以实现自由软件 (Basile Starynkevitch, Pierre Vittet)

(幻灯片, 视频)

MELT 是一种高级领域特定语言(提供模式匹配、应用/对象/反射式编程风格),用于扩展 GCC(GNU 编译器集合)。MELT 是免费软件(GPLv3 许可,FSF 版权),可用作 GCC [元] 插件(也可用作 GCC 实验分支)。

我们将通过示例概述 MELT,并为 GNU 软件提出特定的扩展(用 MELT 编写代码)想法。

Scilab:与非 IT 人员打交道时的可扩展性问题 (Sylvestre Ledru)

(幻灯片, 视频)

Scilab 是一款主要的数值计算软件。像许多其他软件(Python、R、Octave)一样,Scilab 提供了一些扩展机制来开发模块。然而,尤其由于大多数用户不是开发人员,因此会付出一些代价。

在此演示中,将介绍和讨论 Scilab 团队遇到的各种常见问题。

GNU Free Call — 汽车和手机的健康网络 (Haakon Meland Eriksen)

(幻灯片, 视频)

GNU Free Call 是一个新项目,旨在开发和部署全球安全的自组织通信服务,用于私人用途和公共管理。本次演讲的重点是在现有基础设施不再可用或被故意禁用时,使用 GNU Free Call 创建汽车和手机的健康网络,继续提供紧急医疗服务。

循环中的用户 (Andy Wingo)

(幻灯片, 笔记, 视频)

可扩展性不仅仅是一个锦上添花的功能:它帮助我们的用户感到满足,并且是自由 1 的关键组成部分。它还为用户提供了工具,使其能够过渡到临时贡献者,甚至可能成为您作为维护者的替代者。可扩展性帮助用户并构建 GNU。

除了可扩展性的论点之外,本次演讲还着眼于不同可扩展性方法的实际影响:嵌入、扩展和脚本。它还认为,GNU 扩展语言 Guile 支持所有这些模型。Guile 是一种功能强大、实用的扩展语言实现,所有 GNU 项目都应该使用它。

Emacs Lisp、Guile、JavaScript、一个硬性限制和一个伦理论点 (Jim Blandy)

(很抱歉,由于技术原因,本次演讲的视频无法观看。 问答视频第 1 部分, 问答视频第 2 部分)

扩展语言是一种强大的设计模式。然而,您选择的语言会影响您获得的用户群,并且流畅地支持混合语言已经变得比我们许多人预期的要困难。我认为困难在于我们如何将现实世界的含义归因于程序的具体行为。这种困难是编程行为的基础,无法解决。我将提供具体示例进行说明,得出一些令人失望的结论,并提出前进的方向。

来自 GNU 顾问委员会 的新闻

Woodchuck:改进移动设备的数据可用性(Neal Walfield)

(幻灯片视频)

移动设备应该最大化数据可用性,即用户想要的数据可访问的可能性。高速蜂窝网络并非万能:无线通信能源消耗大;数据传输上限越来越普遍;而且蜂窝覆盖并非无处不在。

Woodchuck 是一个用于调度延迟容忍内容的传输框架,例如博客、播客、电子邮件、社交网络更新、天气报告和日历数据。Woodchuck 通过监视网络条件和用户行为,并在条件良好时,告诉应用程序(必要时启动它们)执行更新或传输,从而节省电池电量、管理数据上限并隐藏不良的网络覆盖。挑战在于如何有效地管理这些资源并预测用户可能需要什么。

在本次演讲中,我将展示一些关于预取潜在改进的测量结果。我将简要讨论 Woodchuck 的设计。我将介绍 Woodchuck 的 API 以及我正在探索的调度方法。最后,我将讨论我们正在进行的用户研究,以便能够评估调度策略。

有关 Woodchuck 的更多信息,包括 Woodchuck 服务器、C 库和 Python 模块,可以在以下网址找到:

http://hssl.cs.jhu.edu/~neal/woodchuck/

N900 也提供二进制软件包。

GNU 数据语言(Alain Coulais,Sylwester Arabas)

(很抱歉,由于技术原因,本次演讲的视频不可用。幻灯片

GNU 数据语言 (GDL) 是一个免费/自由/开源的增量编译器,与 IDL 兼容,并在某种程度上与 PV-WAVE 兼容。它与其库例程一起,作为一种数据分析和可视化工具,用于天文学、地球科学和医学成像等学科。GDL 是在 GPL 许可下发布的自由软件。GDL 依赖于大量的其他库,包括:GCC、Readline、GSL、PLplot、ImageMagick、FFTw 等…

从法语 http://racketiciel.info/ 到国际 http://racketware.info/index (Alain Coulais, Cyprien Gay)

“不再有捆绑软件”行动的目标是让消费者在购买计算机时可以选择不为预装软件付费。

Guile-Emacs (BT Templeton)

欧洲的自由软件资金(Karsten Gerloff - FSFE 主席)

自由软件和高性能计算(Juan Antonio Añel Cabanelas)

(幻灯片)

当您使用 HPC 基础设施时,自由软件可能是一个艰难的选择。当您在时间(因此计算性能)很宝贵的环境中工作时,有时不像您需要的那样多,那么证明您正在“浪费”一半的资金是不容易的。此外,您可能无法控制您正在运行的代码或您正在使用的超级计算机,这使得问题更加复杂。本次演讲将尝试在 GHM 期间就这些问题展开富有成效的讨论。

GNU Psychosynth(Juan Pedro Bolívar Puente)

GNU 参与 Google 代码之夏(Rodrigo Rodrigues da Silva)

(视频)

GNU LibreDWG(Rodrigo Rodrigues da Silva)

出席者

  • Ludovic Courtès (GNU Guile)
  • Julien Danjou (GNU Emacs)
  • Jim Blandy (GDB, GNU Guile, Firefox 等)
  • Samuel Thibault (GNU Hurd)
  • Andy Wingo (GNU Guile)
  • Dodji Seketeli (GCC, Nemiver, GNOME)
  • Sylvestre Ledru (IRILL, Debian, Scilab)
  • Jose E. Marchesi (GNU PDF, GNU recutils)
  • Bastien Guerry (Org-Mode, GNU Emacs)
  • Neal Walfield (GNU Hurd)
  • Jim Meyering (GNU Coreutils, GNU Parted, Gnulib 等)
  • Andreas Enge (GNU MPC)
  • Albert Cohen (GCC, IRILL)
  • Vincent Lefevre (GNU MPFR)
  • Brian Gough (GNU 科学库, GNU 源代码发布集合)
  • Quentin Mathé (GNUstep, Étoilé)
  • Luca Saiu (GNU epsilon)
  • Reuben Thomas (GNU Zile, GNU Hello)
  • Patrice Dumas (GNU Texinfo)
  • Simon Josefsson (GnuTLS, GNU Libidn, GNU Shishi, GNU SASL 等)
  • Juan A. Añel (GNU 西班牙, GNUticias)
  • Sylwester Arabas (Gnu 数据语言)
  • Jérémie Koenig (GNU/Hurd)
  • Giuseppe Scrivano (GNU IceCat, GNU MyServer, GNU Wget, GNU Inetutils 等)
  • Alain Coulais (Gnu 数据语言)
  • Stefano Zacchiroli (Debian, IRILL)
  • Richard Braun (GNU Hurd)
  • Rodrigo Rodrigues da Silva (GNU LibreDWG)
  • Haakon Meland Eriksen (GNU 自由通话)
  • Roman Gopalan
  • Joakim Verona (GNU Emacs)
  • Ralf Wildenhues (GNU Automake, GNU Libtool, GNU Autoconf, Gnulib 等)
  • Basile Starynkevitch (GCC, MELT)
  • Francis Southern
  • Gaël Le Mignot (GNU Hurd)
  • Toby Dylan Hocking (GNU R)
  • Pierre Vittet (GCC, MELT)
  • Paolo Carlini (GCC)
  • Guillaume Smaha
  • Juan Pedro Bolívar Puente (GNU Psychosynth, GNU Jump)
  • Alexandre Lissy (GCC, MELT)
  • Arnaud Patard (Mageia 发行版)
  • Arne Babenhauserheide (GNU Hurd)
  • Florent Popille (圣艾蒂安大学 - 自由软件开发研究)
  • Bruno Haible (GNU gnulib, GNU libunistring)
  • Karsten Gerloff (FSFE 主席)
  • BT Templeton (GNU Guile, Guile-Emacs)
  • Steve White (GNU FreeFont)
  • Edlira Nano (INRA)
  • Laurent Guerby (GCC 编译农场)
  • François Dumont (GCC)
  • Dimitri Fontaine (GNU Emacs, el-get)
  • Romain Tartière (FreeBSD)
  • Brice Lopez
  • Arnaud Gambonnet

注册

注册已结束。

  • 您可以向 Flattr 捐款,以支持未来的 GNU 黑客会议

所有捐款将用于为那些无法参加会议的人提供旅行补助。

更多信息

参加会议是免费的,但您需要支付自己的差旅费/住宿费/餐费。如果您需要差旅费或住宿费方面的经济支持,请在您的注册电子邮件中注明,并注明允许您参加会议的最低金额。

建议的住宿选择

IRILL 附近的酒店

更远的酒店

旅馆

交通

餐饮

IRILL 有一份 建议餐厅列表。我们将尝试在中午和晚上进行团体用餐。请注意,不允许在 IRILL 和 Inria 的办公室用餐。

24 日星期三,晚餐在晚上 8 点在 Mussuwam 举行,这是一家位于 巴黎阿拉戈大道 33 号(13 区)的塞内加尔餐厅,距离 IRILL 1.3 公里。

25 日星期四,晚餐在晚上 8 点在 Au P'tit Cahoua 举行,地址是巴黎圣马塞尔大道 39 号,75013。

26 日星期五,晚餐在 “Le temps des cerises” 举行,地址是巴黎 Butte aux Cailles 街 18 号,75013(01 45 89 69 48),距离 IRILL 步行 10 分钟。

有疑问?

请在 ghm-discuss@gnu.org 邮件列表中提问,网址为 http://lists.gnu.org/mailman/listinfo/ghm-discuss

关注 GHM 新闻源 feed16.png 获取更新。