summaryrefslogtreecommitdiff
path: root/debconf2015.pin
diff options
context:
space:
mode:
Diffstat (limited to 'debconf2015.pin')
-rw-r--r--debconf2015.pin328
1 files changed, 306 insertions, 22 deletions
diff --git a/debconf2015.pin b/debconf2015.pin
index f31ded8..e7012e0 100644
--- a/debconf2015.pin
+++ b/debconf2015.pin
@@ -1,19 +1,266 @@
-# Debian conference Pinpoint talk about Gitano
+# Debian conference Pinpoint talk about Lua in Debian, and Gitano
[backing.png]
[center]
[font=Sans 50px]
[stretch]
--- [backing-cat-flop.png]
+-- [backing-lua.png]
--- [backing-cat-flop.png] [no-markup]
+-- [backing-lua.png] [no-markup]
-Gitano - A Git service configured in Git
+Lua!
Daniel Silverstone <dsilvers@debian.org>
# Burble like a tard about who you are
+# Talk will cover a little about Lua and where you might
+# find it, what it is in Debian, etc. Then a bit about
+# My primary Lua-based project 'Gitano'
+
+-- [backing-lua-crescent.png]
+
+What is Lua?
+
+# Small language, easily embedded and extended.
+# From Tecgraf at PUC-Rio
+# Started life as a data description language called DEL
+# Grew into something called 'Sol' and from there to 'Lua'
+
+-- [backing-lua-landing.png]
+
+It's just that thing for games, right?
+
+# Popular in games, such as World of Warcraft, Angry Birds,
+# Later LucasArts games, Baldur's gate, BZFlag, Civ 5, Crysis,
+# Far Cry, Freeciv, MDK2, Saints Row 2, The Witcher, etc.
+
+-- [backing-lua-landing.png]
+
+Not just for games...
+
+# Mercedes uses it in cars, Postgres PL/Lua
+# Loads of Adobe products (lightroom, Revel, etc)
+# IDEs (ZeroBrane fr.ex)
+# Canon Hack Development Kit
+# Ginga (brazilian digital tv system middleware scripting)
+# Guppy genetic sequencing
+# LG smart TVs
+# Space shuttle hazardous gas detection system
+# Giggle (Renderman plugin developed for 'Troy')
+
+-- [backing-lua-landed.png]
+
+Blah blah blah, closed source software,
+mumble groan complain. What about F/LOSS?
+
+# PowerDNS, GNUPlot, hedgewars, Apache2, widelands,
+# Freespace, Weechat, tokyotyrant, pepper, pandoc,
+# opendkim, monotone, lighttpd, geany, freeciv,
+# devilspie, crawl, conquest, conky, awesomewm, cgit
+# asterisk aegis, blahblahblah
+
+-- [backing-lua-footprint.png]
+
+Okay, so what is it like?
+
+# Very simple syntax. A little pascal like (do / end)
+# First class functions, lexical scoping, one-based-index
+# Simple OO syntax, but no classes per-se
+
+-- [backing-lua-footprint.png] [font=Inconsolata 75px]
+
+for k, v in pairs(os.environ) do
+ print(k, "=", v)
+end
+
+-- [backing-lua-footprint.png]
+
+Extending Lua
+
+# Very simple stack-based API for interacting between
+# Lua and C resulting in python-lua bridges, python-ruby
+# bridges, haskell-lua support, etc.
+
+-- [backing-lua-footprint.png] [font=Inconsolata 75px]
+
+static int l_double(lua_State *L) {
+ LUA_NUMBER value = luaL_checknumber(L, 1);
+ lua_pushnumber(L, value * 2.0);
+ return 1;
+}
+
+-- [backing-lua-footprint.png]
+
+Embedding Lua
+
+# The same simple stack-based API for interacting between
+# Lua and C works the other way out...
+
+-- [backing-lua-footprint.png] [font=Inconsolata 75px]
+
+static LUA_NUMBER doublevalue(lua_State *L, LUA_NUMBER value) {
+ LUA_NUMBER ret;
+ luaL_loadstring(L, "v=... return v * 2.0");
+ lua_pushnumber(L, value);
+ lua_call(L, 1, 1);
+ ret = luaL_checknumber(L, -1);
+ lua_pop(L, 1);
+ return ret;
+}
+
+-- [backing-lua-crater.png]
+
+Batteries somewhat nearby...
+
+# Despite popularity, batteries are still slowly accreting
+# ca. 90 or so Lua library packages, many thanks to Enrico Tassi
+# LuaRocks
+
+-- [backing-lua.png]
+
+Community?
+
+# Small but reasonably vibrant community, in parts a little
+# immature despite the age of the language, mostly because
+# of how a lot of gamers get into Lua
+
+-- [lua/fosdem-2015-lua-bof.jpg] [bottom]
+
+Lua BoF - FOSDEM 2015
+
+# Terrifying bunch of reprobates
+
+-- [backing-lua.png]
+
+Community!
+
+IRC: <span font="Inconsolata 50px">#lua</span> on <span font="Inconsolata 50px">Freenode</span>
+Website: <span font="Inconsolata 50px">http://www.lua.org/</span>
+Mailing List: <span font="Inconsolata 50px">lua-l@lua.org</span>
+
+-- [backing-lua.png]
+
+Back to Debian ...
+
+# Originally I packaged Lua 4 and Lua 5.0 way back in the day, but the packages
+# were not very good and John Belmonte took over. The majority of Lua packaging
+# in Debian is now looked after by Enrico Tassi. Some of the main Lua packages
+# are still by John Belmonte.
+
+-- [backing-lua-crater.png]
+
+Packaging Lua libraries
+
+# Lua's lack of batteries mean that there are a lot of mechanisms for the
+# various obvious things you need to do (e.g. posix bindings). This means
+# that we end up with a lot of libraries, often called the same thing, which
+# are not mutually compatible. Fortunately LuaRocks is sorting this kind of
+# thing out.
+
+-- [backing-lua-crater.png]
+
+debhelper support (dh-lua)
+
+# Worked on by Enrico Tassi, standardises build of Lua library
+# packages to be policy compliant and work consistently across all
+# Lua versions packaged in Debian.
+# 5.1 5.2 5.3 and perhaps luajit
+
+-- [backing-lua-crater.png] [font=Inconsolata 75px]
+
+ #!/usr/bin/make -f
+ %:
+ dh $@ --build-system=lua --with lua
+
+# Basically the trivial debhelper but including dh-lua and turning it on
+# add a build-dependency on dh-lua too
+
+-- [backing-lua-crater.png] [font=Inconsolata 75px]
+
+ # lua5.1.lace.dh-lua.conf
+ PKG_NAME=lace
+ LUA_SOURCES=$(wildcard lib/lace/*.lua) lib/lace.lua
+ LUA_SOURCES_MANGLER=sed s?^lib/??
+ LUA_MODNAME=lace
+
+# You have to tell dh-lua how things work to get your library into place.
+# You can also tell it about tests etc, it's all in Enrico's policy.html
+# in the dh-lua docs
+#
+# Symlink other lua versions (or make new files if they fundamentally differ)
+
+-- [backing-lua-crescent.png]
+
+Other peoples' build systems and how to (ab)use them.
+
+# Thanks to Enrico's use of Make, it's possible to abuse dh-lua a little. It's
+# not really meant to include the building of binaries as well as libraries
+# from the same source, but...
+
+-- [backing-lua-crescent.png] [font=Inconsolata 75px]
+
+PKG_NAME=supple
+LUA_SOURCES=$(wildcard lib/supple/*.lua) lib/supple.lua
+LUA_SOURCES_MANGLER=sed s?^lib/??
+LUA_MODNAME=supple
+CLIB_OBJS=lib/supple/capi.lo
+VERSION_INFO=0:0:0
+LUA_MODNAME_CPART=supple.capi
+
+build:
+ $(H)$(LBTL) --mode=link $(CC) $(CFLAGS) -Wl,--no-add-needed \
+ -o $(UID)/wrapper -I . -I $(UID)/ \
+ src/wrapper.c \
+ $(LDFLAGS) $(LUA_LBTL_D)
+
+install:
+ $(H)$(LBTL) --mode=install install -m a+rx,u+rwxs \
+ $(UID)/wrapper $(shell pwd)/$(LUA_LPATH)/supple-wrapper$(LUA_VERSION)
+ $(H)$(LBTL) --finish $(LUA_LPATH)
+
+# Since the dh-lua.conf files are makefiles, and some of dh-lua's targets are
+# used purely as a collection points for a number of other targets, we can be
+# evil and add in additional rules...
+
+-- [backing-lua-landed.png]
+
+What about applications written in Lua?
+
+# Applications are a slightly different beast, currently dh-lua isn't
+# interested in those. I'm sure Enrico would love patches.
+
+-- [backing-lua-landed.png] [font=Inconsolata 75px]
+
+ #!/usr/bin/make -f
+
+ # Set up the variables the Gitano makefile needs
+ PREFIX:=/usr
+ LUA_VER:=5.1
+ export LUA_VER PREFIX
+
+ # And Debhelper the world
+ %:
+ dh $@
+
+# Sadly, providing the app's Makefile isn't too crazy, it turns out to be
+# trivial to package them anyway -- thanks debhelper...
+
+-- [backing-lua.png]
+
+And now for something...
+
+-- [backing-cat-flop.png]
+
+...of a tangentially related advertisement...
+
+-- [backing-cat-flop.png] [no-markup]
+
+Gitano - A Git service configured in Git
+
+# I apologise now for people who were here two years ago, but some of this
+# will seem somewhat familiar as the fundamentals of Gitano haven't changed
+# but I promise there's one or two new things...
-- [backing-cat-flop.png]
@@ -27,7 +274,7 @@ What is it?
Why do it?
-# Looked at gitolite and decided I could do
+# Looked at gitolite (in 2012) and decided I could do
# better or nicer or whatever
-- [backing-cat-flop.png]
@@ -37,8 +284,7 @@ Who is it for?
# People who would like to run their own git server
# Github is a more effective centralised version control
# system than Subversion could ever hope to be.
-# P.S. Alioth.
-# Gitorious is a large unwieldy pile of crap
+# Gitlab is a large unwieldy pile of crap
# Both of them rely on data stores which are not Git
-- [backing-cat-sunbathing.png]
@@ -50,9 +296,10 @@ Technology choices
# Git - odd to list, but I mean configuration is in git
# rulesets are in git, etc.etc.etc.
# Lua - I like Lua, it's easy to prototype and write stuff
-# libgit2/luagit2 - Way faster than invoking git commands
-# although Gitano *can* operate without them
+# libgit2 - Way faster than invoking git commands
+# although Gitano *can* operate without it
# cgit rather than gitweb - much faster, caches, prettier
+# and cgit now supports extensions written in Lua
-- [backing-cat-sunbathing.png]
@@ -60,7 +307,7 @@ Lace - Lua Access Control Engine
# ACL engine for rulesets. Most people who are at least
# technically minded understand ACLs. Non-turing-complete
-# means output more easily cached Not using Lua means I
+# means output more easily cached. Not using Lua means I
# *could* switch implementation language if I wanted.
-- [font=Monospace 50px]
@@ -95,6 +342,7 @@ project.owner "liw"
description "Gitano Instance Administrators"
members["*"] "dsilvers"
+members["*"] "vince"
# Clod also supports lists which remain ordered. This is an
# example group file in a Gitano repository
@@ -177,6 +425,9 @@ And on Linux, memory is pre-allocated and we enter seccomp mode 1.
# limits above, you now can't make syscalls to take
# advantage of them.
+# Currently pondering namespaces and how I might use those to further limit
+# stuff.
+
# If that's not sandbox enough, please tell me how to
improve matters further.
@@ -186,13 +437,14 @@ Gall - Git Abstraction Layer (in) Lua
# Abstraction layer for accessing Git repositories from Lua.
# Focusses on bare repositories and can operate using the
-# git commandline or the libgit2 library (via the luagit2
-# binding).
-
-# Next comes inelegance, so "phew" goes here.
+# git commandline or the libgit2 library. Used to be luagit2
+# based but that stopped being updated so it's a very thin
+# binding built as part of gall now.
-- [backing-cat-inelegant.png]
+# Next comes inelegance, so "phew" goes here.
+
-- [backing-cat-inelegant.png]
Putting it all together.
@@ -236,7 +488,7 @@ Integrating with external apps and services
OpenSSH server, Cgit (gitweb at a pinch), git-daemon
-Outgoing HTTP calls from hooks
+Outgoing HTTP(s) calls from hooks
# Horrifyingly shocking idea, but integrating with external
# services is a good idea. As such, Gitano uses OpenSSH
@@ -253,7 +505,8 @@ Real users of Gitano
- git.gitano.org.uk, git.liw.fi
- git.netsurf-browser.org, richard.maw.name/git
- - Codethink and Baserock
+ - Codethink and various other companies
+ - Possibly some of you in the audience
# Equally horrifyingly, people use this crap what I wrote.
@@ -261,14 +514,44 @@ Real users of Gitano
-- [backing-cat-stern.png]
--- [command=google-chrome --app=https://trello.com/b/l4Id6iiC/gitano] [backing-cat-stern.png]
+-- [backing-cat-stern.png]
+
+Mini-debconf
+ <small>mini-camp
+ <small>mini-coding
+ <small>mini-effort
+ <small>mini-done-lane
+ <small>mini-report
+</small></small></small></small></small>
+
+# Lots of work happened Thursday including incorporating git upload-archive
+# support contributed by Gavin Lee of Maynooth University Ireland, various
+# fixes from friendly colleagues of mine, and a huge number of niggle-fixes
+# including: User renaming being fixed, group renaming being verified,
+# detection of dangling HEAD following push (just for you Brett), automatic
+# defines for users and groups for simpler rule creation, https support for
+# hooks, correctly recording committer vs. author for remote commands using the
+# 'sudo' (as) command. copying repos no longer making assumptions based on the
+# default ruleset (which to be fair most people use for the most part).
+
+-- [backing.png]
+
+Packaging
+
+# As you might have guessed from the earlier content, I've been packaging
+# Gitano and its libraries for Debian -- Currently I have builds for Jessie
+# but they're very much not ready and very much not compliant yet.
+#
+# Help welcomed. Debianisation is on the Gitano gitano server as you'd expect.
+
+-- [backing-cat-stern.png]
Future plans
Lots of ideas for future content, see the Trello
- - https://trello.com/b/l4Id6iiC/gitanow
- - (Link is on www.gitano.org.uk)
+ - https://trello.com/b/l4Id6iiC/gitano
+ - (Link is on https://www.gitano.org.uk/)
# I would welcome contributions to Gitano or the libraries
# behind it. I would especially welcome contributions which
@@ -276,7 +559,7 @@ Lots of ideas for future content, see the Trello
-- [backing-cat-eat-you.png]
--- [command=gnome-terminal] [backing-cat-eat-you.png]
+-- [backing-cat-eat-you.png]
Live demo and walkthrough
@@ -308,7 +591,8 @@ Thank you for listening
This talk is available from:
<span font="Monospace 50px">git://git.gitano.org.uk/personal/dsilvers/gitano-talk.git</span>
+(specifically debconf2015.pin)
-Current (at time of talk) gitano-all deb (4-1) at:
-<span font="Monospace 50px">http://users.pepperfish.net/dsilvers/gitano-deb/</span>
+Current (at least at time of talk) debs at:
+<span font="Monospace 50px">http://platypus.pepperfish.net/~dsilvers/gitano/</span>