[Metalab] code bounty (Free software, C++)
Lars Dɪᴇᴄᴋᴏᴡ 迪拉斯
daxim at cpan.org
Thu Jan 20 19:49:59 CET 2011
X-Post: luga, metalab
Ich habe diese Aufgabe ursprünglich für jemanden geschrieben, der sie nicht
angegangen ist. Daher werfe ich sie mal in die Öffentlichkeit, mal sehen, was
so draus wird.
----
I commission you with the task of some bug fixing and feature development in
the Free software [SCIM](http://www.scim-im.org/). In order to tackle these,
you need the C++ development toolchain for SCIM and optionally some knowledge
about RPM spec files and the [openSUSE Build service]
(https://build.opensuse.org/).
If you're interested, please write back for any questions, clarifications,
negotiations. I promise to support you during the task as much as I can,
especially setting up SCIM is difficult for people who never used any input
method before and are not familiar with the concept.
Milestone 1
===========
Problem description
-------------------
SCIM does not play well together with the already existing different [input
method Compose](http://en.wikipedia.org/wiki/Compose_key), a feature in [X]
(http://x.org/). The reason is that SCIM needs to have these environment
variables set in order to work:
> env|sort|ack -i scim
GTK_IM_MODULE=scim
QT_IM_MODULE=scim
XMODIFIERS=@im=SCIM
However, Compose ceases to work when they are set; so a user must decide at
application start which input method he wants to use. As a workaround, SCIM
ships with own implementation if Compose. However, **its [data tables]
(https://scim.svn.sourceforge.net/svnroot/scim/scim/trunk/src/scim_compose_key_data.h)
are out of date**, e.g. typing `Compose` `.` `.` in SCIM results in `·`; but
as of now typing `Compose` `.` `.` should normally result in `…`, and
`Compose` `.` `-` in `·`.
Inchstone 1a
------------
Get the [current Compose file]
(http://cgit.freedesktop.org/xorg/lib/libX11/plain/nls/en_US.UTF-8/Compose.pre)
from the X Git repository. Write a script - preferably in Perl - that massages
it into the required header file format. Make it work with an [installed
Compose file](file:///usr/share/X11/locale/en_US.UTF-8/Compose), too. The
deliverables are the script and the new header file.
Inchstone 1b
------------
Compile SCIM with the updated data table. The deliverable is a working
demonstration, it must exhibit the correct behaviour as outlined in the
problem description.
Inchstone 1c
------------
Send an email to the SCIM development mailing list with your changesets, or a
link to them. The deliverable is evidence that you did so.
You can skip the last inchstones in this milestone and forfeit half this
milestone's bounty money.
Inchstone 1d
------------
Sign up for Build service, branch your SCIM package off the [M17N project]
(https://build.opensuse.org/package/show?package=scim&project=M17N), apply
your changesets and build scim packages for 11.3 in both i586 and x86_64. The
deliverables are scim RPMs from your home project which installs on my
openSUSE systems and which exhibit the correct behaviour as above.
Inchstone 1e
------------
Send an email to the openSUSE M17N mailing list with your changesets, or a
link to them, and a link to your 1d deliverables. The deliverable is evidence
that you did so.
Milestone 2
===========
Problem description
-------------------
The Compose emulation in SCIM sucks because it needs to be constantly updated
to follow upstream X. Also, it just deals with a single Compose file, whereas
the real Compose feature allows user customisation in a `$HOME/.XCompose`
file. Example:
include "/usr/share/X11/locale/en_US.UTF-8/Compose"
# If include directive is missing, the directives below
# completely replace the system default compose table.
<Multi_key> <asciitilde> <exclam> : "̃" U0303 # COMBINING TILDE ACCENT
Typing `v` `Compose` `~` `!` then results in `̃v` additionally to the ones
provided by the system compose table.
Inchstone 2a
------------
Replace the Compose emulation with something better which exhibits the
behaviour of the real Compose feature. It must avoid a separate hard coded
data table that can fall out of date so easily, instead either tie into the X
development files as dependency, so when scim is built, it uses a reasonable
fresh copy from X; or even hook into the installed live copy of the Compose
file. Either way, it must also respect the custom user file if it exists.
Recompile SCIM with your changesets. The deliverables are the changesets, and
a working demonstration, it must exhibit the correct behaviour as outlined in
the problem description.
Inchstone 2b
------------
Send an email to the SCIM development mailing list with your changesets, or a
link to them. The deliverable is evidence that you did so.
You can skip the last inchstones in this milestone and forfeit half this
milestone's bounty money.
Inchstone 2c
------------
Same as 1d.
Inchstone 2d
------------
Send an email to the openSUSE M17N mailing list with your changesets, or a
link to them, and a link to your 2c deliverables. The deliverable is evidence
that you did so.
Payment
=======
Personally in cash immediately upon verification of completion of each
milestone, 20€ for full Milestone 1, and 80€ for full Milestone 2. I can come
to the Metalab during the evening on half a day's notice in order to meet you.
Hints
=====
SCIM runs conceptually on top of X. In practice it consists of a number of
modules, a pluggable backend that does the real work of creating characters
from user input, and a frontend UI for tweaking the settings and a tray icon
with floating palette for character candidate selection. I use the frontend
skim for KDE.
$ /bin/ps -AH --forest -o args | ack s[ck]im
/usr/lib64/scim-1.0/scim-launcher -d -c kconfig -e all -f socket --no-stay
/opt/kde3/bin/skim --np skimplugin_scim --display :0.0 -c socket -d --no-
stay
/usr/lib64/scim-1.0/scim-helper-manager
/usr/lib64/scim-1.0/scim-launcher -d -c socket -e socket -f x11
I'm afraid the [software architecture is not documented](http://www.scim-
im.org/wiki/documentation), for example those daemon programs don't even have
a man page. What I can tell you comes from my own observation as a user.
`scim-launcher` and `scim-helper` are spawned by `scim -d`, which is launched
from `/etc/X11/xim.d/scim` at a user's X session start-up. `skim` is a regular
desktop application, which I've set up to run when my KDE session starts. skim
communicates with the backend via a socket.
These are the minimum packages I have installed that are necessary to do
useful work in Chinese, Japanese plus the Compose key.
$ rpm -qa | ack s[ck]im | sort
scim-1.4.7-174.1.x86_64
scim-anthy-1.2.7-5.1.x86_64
scim-devel-1.4.7-350.4.x86_64
scim-m17n-0.2.2-235.1.x86_64
scim-pinyin-0.5.91.20060705-272.1.x86_64
scim-pinyin-skim-0.5.91.20060705-267.3.x86_64
scim-qtimm-0.9.4-278.1.x86_64
scim-tomoe-0.6.0-23.1.x86_64
skim-1.4.5-263.2.x86_64
skim-scim-anthy-1.2.2-213.3.x86_64
To contact me in real-time when email is too cumbersome:
<irc://irc.freenode.net/metalab>, <xmpp:daxim at jabber.metalab.at>
I am usually online on workdays during the daytime.
-------------- next part --------------
A non-text attachment was scrubbed...
Name: signature.asc
Type: application/pgp-signature
Size: 198 bytes
Desc: This is a digitally signed message part.
URL: <http://lists.metalab.at/pipermail/metalab/attachments/20110120/84c3e75c/attachment.sig>
More information about the Metalab
mailing list