Contributing

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.

Community Servers

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.