If you’d like to contribute to Drawpile, then you’ve come to the right place.
Here we will go over a variety of ways you can help the project with development, and without!
While Drawpile could use help with its developement, you don’t need to be a developer or possess coding skills to provide very valuable contributions.
Non-Development Contribution
Here are quite a few ways you could contribute that don’t require you to be a software developer. You can contribute in many other ways not mentioned here.
Helping Other Users
Users come to ask questions about Drawpile on our Discord and libera.chat.
If you know your way around Drawpile and want to help others this way, you can hang around help respond to those kinds of questions.
Providing Illustrations
You may have noticed that the Drawpile website is pretty thin on illustrations. It would be great to have some for decoration or to showcase features, issues or bugs!
If you’ve drawn artworks or prepared showcases that you would like Drawpile to us, contact us!
The works provided should naturally come with your consent to use, and ideally be put under a Creative Commons license.
They should of course be made at least for the most part in Drawpile and shouldn’t contain any canon characters or intellectual property.
Reporting Problems, Suggesting Features
When you find a bug or some other problem or have an idea for a good feature, bring it up! This is how Drawpile improves.
Don’t worry about reporting duplicates, it doesn’t hurt to hear things brought up again and might end up as a good reminder to get to them.
If the matter is already brought up in for example a GitHub issue, feel free to add your thoughts or elaboration to it!
Translations
Drawpile is used all across the world, by people speaking many different languages.
If you want to translate it into yours or fix something about an existing translation, you can do so on Weblate.
You can see which languages there are already and how complete the translations are. If you don’t spot your language, you can add a new one.
Drawpile has a set of community servers. These are servers run by and moderated by people who want to give a space for others to draw.
If you have your own Drawpile server that you want to become one of these community servers, you can submit it here.
If you want to help moderate existing Drawpile servers, feel free to contact us.
Documentation
You can contribute to this help page by writing documentation!
If you know your way around, you can send pull requests to the drawpile.github.io repository.
Otherwise, you can just write up an article in your favorite word processor and send it over to us!
Reproducing Issues
You could help developers pinpoint the cause of problems by recreating the problems that are reported on our GitHub issues page & Discord server and greatly speed up the process, especially by providing log files if applicable.
Testing New Features
Additional testing for new or experimental features is always valuable, especially since your devices and cirumstances is likely unique. Description of your experience will help developers improve the features for everyone.
Development Contribution
These are areas that need some software development skills.
If you’d like to take on a task or work on an area, we strongly recommend getting in contact with us and the other members in our community, to avoid conflicts or potentially working on something that is already being worked on.
This is especially important when it comes to the network protocol or similar pillar components because of the potential for merge conflicts, which can be avoided if we know what you’re working on.
You can find out how to get in contact on the main help page.
Read the architecture page to become familiar with the different components, and check out our coding guidelines for general but very useful guidelines.
We’ve compiled the ideas into a large backlog, and created their corresponding GitHub issue.
Development Backlog
All items in the following chart should exist as issues on our GitHub; you can check their current status by clicking them.
Note that this list isn’t updated in real time, but is updated often enough for you to pick an area to contribute.
Tasks & Features |
Status |
Size |
Type |
Implement OpenGL canvas view |
OCCUPIED |
L |
patch |
Port for iPad (iOS/iPad OS) |
idea |
XL |
patch |
First-time user setup wizard to reduce preferences fiddling |
Awaiting |
M |
patch |
Redesign chat to not be fixed at the bottom (perhaps dock, overlay or additional tab for the right pane) |
idea |
L |
patch |
Rework selections and transforms, see GitHub Milestone |
Awaiting |
L |
UPDATE |
Allow hiding user cursors when they get too close |
idea |
S |
patch |
Make arrow keys move around the timeline when it has focus |
idea |
S |
patch |
Add more fonts to the browser client so that non-Latin languages work |
idea |
S |
patch |
Indicate and remember hidden list servers in the server browser |
idea |
S |
patch |
Implement cel mode for timeline tracks |
Awaiting |
M |
UPDATE |
Allow operations like moving or copying across multiple timeline frames |
Awaiting |
M |
UPDATE |
Implement proposed gap closing algorithm for the fill tool |
idea |
M |
patch |
Action Log |
idea |
M |
patch |
Remove support for the old login process |
idea |
S |
SeRVeR |
Bundle ffmpeg on Windows |
idea |
M |
patch |
Filtering Communities |
idea |
S |
patch |
Pan and Rotation Tool (as part of the current Zoom tool) |
idea |
M |
patch |
Drop-downs that involve 3 or less items should become buttons |
Awaiting |
S |
patch |
|
|
|
|
Make undo and redo not require a round-trip to the server |
Awaiting |
L |
patch |
Remember background color per brush slot |
Awaiting |
S |
patch |
Presets for key bindings, with import and export (+ start screen) |
idea |
M |
patch |
Allow exporting and importing settings between desktop, mobile and browser |
idea |
M |
patch |
Make the browser version save all configurations properly |
idea |
M |
patch |
Increase layer count limit |
Awaiting |
M |
UPDATE |
Increase brush size limit |
Awaiting |
M |
UPDATE |
Redesign permissions (setting limits & privileges) |
idea |
L |
UPDATE |
Sidecar Server-side Permission Manager |
|
|
SeRVeR |
Redesign & Unify host dialog & session settings to host with the intended settings immediately |
idea |
M |
patch |
|
|
|
|
Add private/public toggle to host dialogr |
Awaiting |
S |
patch |
Tags and/or descriptions for public sessions |
idea |
M |
patch |
Split server browser into table and detail view |
idea |
S |
patch |
Make it clearer why someone can’t join a session (e.g. wrong version.) |
idea |
S |
patch |
Remove private listing roomcode feature (it’s been replaced with invite links) |
Awaiting |
S |
patch |
Remove “block new logins” session setting, it’s redundant with the password |
Awaiting |
M |
patch |
Make invite links not include stale passwords if it was changed |
idea |
S |
patch |
Allow favoriting brush presets |
idea |
S |
patch |
Dynamically switch between desktop and small-screen mode |
idea |
S |
patch |
Allow resetting settings to their defaults in a sensible way |
idea |
S |
patch |
Allow customizing tool and status bar widgets |
idea |
M |
patch |
Add clone and heal brush (plus permissions.) |
idea |
L |
UPDATE |
Implement floating reference image annotations (plus compression & permissions) |
idea |
L |
UPDATE |
Attempt utilizing more modern compression (brotli, zstd, webp.) |
idea |
M |
UPDATE |
Decompress compressed commands once upon receipt, rather than each time they’re executed |
idea |
S |
patch |
Allow saving and loading webp Ideally also saving animated webp for animations |
idea |
M |
patch |
Allow exporting animation frames on Android and browser (into a ZIP) |
idea |
S |
patch |
Upgrade browser client to Qt 6.7 and check if this bug still appears |
Awaiting |
S |
patch |
Darken depressed buttons |
idea |
S |
patch |
Make autosave actually automatic |
idea |
M |
patch |
Add a graphical interface for the Drawpile-timelapse CLI |
idea |
M |
patch |
Allow exporting animations as videos, probably via ffmpeg |
idea |
M |
patch |
Allow zooming the timeline |
idea |
S |
patch |
Make kinetic scrolling work in the timeline |
idea |
S |
patch |
Add a brush size palette widget |
idea |
M |
patch |
Make session resets less disruptive by designating a single user to perform the reset |
idea |
L |
patch |
Allow the server to delegate resetting the session to an external tool instead of a client |
idea |
L |
patch |
Make the systemd service not install socket activation automatically |
idea |
S |
patch |
Integrate with systemd watchdog |
idea |
S |
patch |
Add optional buttons for mirror, rotate, etc, to navigator |
idea |
M |
patch |
Truncate files when writing them on Android |
idea |
S |
patch |
Add rotation and panning to zoom tool |
idea |
M |
patch |
Implement animation tweening |
idea |
S |
patch |
Replace global timeline with animation groups |
Awaiting |
L |
UPDATE |
Allow hiding the brush preview |
idea |
S |
patch |
Implement optional server-side rate limiting |
idea |
M |
patch |
Allow opening multiple documents/sessions in tabs |
idea |
L |
patch |
Integrating multiple account systems , e.g. Drawpile.net, Drawpile.cn, or even third party ones (like Steam) |
Awaiting |
L |
patch |
Add a scribble area to the brush settings dialog, to allow for testing brushes |
Awaiting |
M |
patch |
Add scratchpad docker, to allow for an off-canvas area to mix colors and such |
idea |
M |
patch |
Headless Server |
idea |
L |
SeRVeR |
Get rid of the TCP protocol and run everything via WebSockets |
idea |
M |
SeRVeR |
Implement gesture handling on Windows |
idea |
M |
patch |
Add touch shortucts, like double-tap to undo |
idea |
M |
patch |
Allow importing animation frames |
idea |
M |
patch |
Bundle Microsoft Visual C++ Redistributables in installer |
idea |
S |
patch |
Dedicated Server as a Windows Service |
idea |
S |
patch |
Build a Drawpile version of this Chrome Wintab Plugin and integrate it into Qt |
idea |
M |
patch |
Host Keys for List Server (support for cluster-type hosts) |
idea |
S |
patch |
Every few dozen strokes, create a very small thumbnail as preview for the layer |
idea |
|
|
Upon pasting media create and hold a temporary layer |
Awaiting |
M |
UPDATE |
Implement feather edges feature to selection |
idea |
M |
UPDATE |
Allow resolution presets in the New dialog |
idea |
S |
patch |
Improve UI theme |
idea |
S |
patch |
Make shift-scroll-driven brush size adjustment dynamic based on scroll speed |
idea |
S |
patch |
Allow creating sessions from the web admin panel |
idea |
M |
patch |
If you’d like to advocate or provide concept, explanation or illustration involving the changes, feel free to contact us or write directly in the corresponding GitHub issue.