This job ad has been posted over 40 days ago! (*)

Inkscape - Short term contract for Python programming Freelance

Published at 2022-12-12 - Viewed: 7167 times - Inkscape Project - Software Freedom Conservancy (Worldwide/Remote)

The Inkscape project is looking for a Python developer to implement importing functionality for a file format that is not yet supported by Inkscape. The work will be carried out in Python based on the Inkscape extension library inkex.

The file format will be implemented based on an outdated specification that is publicly available. Missing bits will be reverse engineered by the candidate, with possible support from the Inkscape development team.

In particular, the following tasks should be performed (not necessarily in this order):

  1. Implementing a parser for the file format based on an old specification (about 100 pages), which contains a mostly complete EBNF description of the format, in Python (preferably pyparsing).
  2. Designing and implementing functionality to convert the relevant parts of the abstract syntax tree created in 1) into an Inkscape SVG file.
  3. Reverse-engineering the later additions to the file format, in particular: texts, multi-page documents, path effects, mesh gradients; and include those parts in the parser and converter functionality. The extent and prioritization of those items will be decided on based on the candidate’s progress.
  4. Document the format whenever the existing documentation is insufficient or outdated, in particular for items 2) and 3). This documentation will preferably reside outside of the code.
  5. Write unit tests to test the implemented functionality, a very good test coverage is expected. A test-driven development approach might prove beneficial, especially for 2) and 3).

The candidate’s work will build on already existing boilerplate code, and the inkex library provides the necessary syntactic sugar to create SVG files. They will work closely together with the maintainers of Inkscape’s Python-based extension collection, who also have experience on implementing importing and exporting functionality. These maintainers will guide the on-boarding and mentoring process. The candidate will be provided with a license of the format’s native software to create sample files, for the purpose of creating unit tests and reverse-engineering the missing pieces, for the duration of the project.

Duration and Schedule:

The project is scoped to fit a 6-week full time schedule. Milestones for each week are available, and the progress will be evaluated by the candidate and the mentor(s) in (at least) weekly discussion sessions. Depending on the progress, the project may be extended to up to 12 weeks (with additional compensation). The schedule may be shifted in order to accommodate part-time candidates.

Work on the project may start no later than Mar 15, and at least a commitment of 20 hours / week is expected.

The hourly rate is USD 41 per hour.
Payment terms: Net 30.

Please note that the SFC is legally prohibited as a United States based non-profit, from contracts with people in US embargoed countries. Please contact us if you are unsure about your country’s status and want to work on this project.

Your Profile:

  • Strong Python knowledge and experience
  • Experience with asynchronous / text based workflows
  • Previous (contractual or volunteer) contributions to Free, Open Source Software
  • Ideally experience with implementing specifications and/or file formats

Required documents:

  • Link to personal portfolio (Website / Github / Gitlab / relevant repository), which ideally includes interactions on bug trackers
  • Resumé / Background
  • No formal cover letter is required. Instead, please submit your answers to the following questions (one paragraph each):
    1. What is your past experience in the domains of free software, file formats, specifications, reverse engineering?
    2. How do you anticipate working with the volunteer community during this contract (and working across timezones)? Do you have experience with highly asynchronous or text based (i.e., Gitlab issue trackers / Rocketchat or IRC) based workflows?
    3. What is your motivation to work on this project and FOSS in general?

Please submit your documents until Monday, Jan 9, 2023, 23:59 UTC, to

« More jobs in programmers