swaywm / sway

i3-compatible Wayland compositor

Home Page:https://swaywm.org

Geek Repo:Geek Repo

Github PK Tool:Github PK Tool

Bounties for sway development

ddevault opened this issue · comments

We are not currently accepting bounties

Until we finish working on integrating Sway and wlroots, it is difficult to objectively judge how bounties should be categorized and paid out.


So I've accepted donations for sway for a while now, and they've now accumulated to a fair sum. I was asked to put some of that towards beer and pizza (which was delicious), but the majority of it remains unspent. So let's spend it! I'd like to start a bounty program for sway to encourage the development of difficult/important features. Not all changes will be eligible for a bounty, but we'll have a few important issues (tracked in this GitHub thread) that will be. I also don't want to limit the bounty pools strictly to sway features - anything that improves the sway experience, even if it's in other projects in the ecosystem, can be considered for a bounty.

Bounties are a great way to support specific features in Sway. If you'd like to support ongoing Sway maintenance in general, consider Patreon as well.

Read this entire issue before you do anything related to bounties

Funds

Current balance: $1290

Current bounties

sway features

  • Real time video capture (#1006): $125
  • Layout save/restore (#1005) Invalid
  • ARM support (#143) Invalid: problem is with proprietary drivers
  • i3-style marks (#1007): $20 claimed by #1145
  • DPMS (#541): $220
  • #975: $20
  • Pointer constraints (#1071): $50
  • #892: $70
  • Touchscreen support via wlroots: $345
  • Keyboard layout per window: $50

wlc features

wlroots

  • xcape feature support: $100
  • Window borders: $100
  • Fractional scaling: $100
  • Selected Wayland protocol extensions*: $100
    • input-method, pointer-constraints, presentation-time, relative-pointer, idle_inhibit, xdg-output
  • (reserved for later): $100

other

  • Tray icons (Xembed+StatusNotifierItem): $322
  • wayland/x11 clipboard sync damon: $50

Contributing to a bounty

If you'd like to fund support for a specific feature, donate normally and mention what you'd like your donation to go towards, and how you'd like to be credited in this issue (if at all):

We are not currently accepting bounties

Feel free to donate towards something there isn't already a bounty for - I'll add one for you.

Awarding bounties

A pull request that addresses a bounty will not be merged on that merit alone - it will go through the same review process as any other pull request. Anyone interested in claiming a bounty is strongly encouraged to stop by the sway IRC channel or open an issue discussing the problem further to make sure everyone's on the same page and work isn't wasted.

If several people participate in a feature, the bounty will be split between them. The awardees can agree amongst themselves how to split the bounty. If an agreement can't be reached, I'll have the final say on how to distribute a bounty.

A bounty will not be awarded for partial completion of a task - but once the task is completed, those who contributed partial solutions that contributed to the big picture will receive some of the bounty as described above.

Bounties will be awarded via PayPal or Bitcoin, whichever is the preference of the awardee. You could also choose to give some or all of your reward back to other bounties.

First off, props for putting in some of your own money, and having PayPal as an option. There are some "poor souls" like me who don't have a credit card (not that I would actually feel bad about that) which often makes online money transfer very annoying, and PayPal is the only service I know of that fixes that (half-decently).

Question: Am I understanding correctly that donations with no [meaningful] message were distributed to bounties you saw fit, and do you plan to continue handling them that way?

That's correct.

The bounty program is now in effect. Go forth and code!

Thanks to @Fale for donating $90 to DPMS, #975, and Cloudef/wlc#87 🎉

$60 donation added to Xembed support (tray icons), bringing the bounty up to $110 🎉

Mh, the donations list says "project not specified", but the 40 bucks I just gave are supposed to be for "Xembed (tray icons) in Xwayland and wlc". Thanks for setting this up :)

Thanks! Raised that bounty to $150.

Claimed the redshift bounty for myself and redistributed it to real time video capture and touchscreen support.

@SirCmpwn Since there's no separate issue for it – why implement Xembed at all? It's an outdated and annoying specification and you'd put the money to much better use implementing StatusNotifierItem specification instead. Also see i3/i3#2088.

User demand. Lots and lots of programs still use Xembed. We should of course eventually support both.

AFAIK most tray applications use libappindicator which will use the new spec if available and only fall back to Xembed.

Something important to note is that StatusNotifierItem is dbus-based, and so far I've worked to avoid making dbus a hard dependency of sway. If we do implement it, we should put it behind a flag and also implement XEmbed for systems without dbus. I would be open to adding that to the bounty, though. Will leave some time for discussion first.

Out of curiosity, which desktop system doesn't have dbus?

But alright, I'll leave it up to you. Working with Xembed is painful. :-)

I have a laptop running Void that doesn't presently have dbus.

Just looked through the StatusNotifierItem specification and was reminded of how godawful it is. That specification is a goddamn dumpster fire.

$50 added to tray icons, bringing the total bounty for that up to $200. Went ahead and made it more comprehensive - it now includes both Xembed and StatusNotifierItem support.

Same donor, second donation - DPMS. $50 brings that bounty up to $70.

Hm, is PayPal only supported on the receiver side, not to add money to a bounty?

10$ to wayland/x11 clipboard sync damon :)

Got it :)

$40 donation to ARM support, x11/wayland clipboard, drag and drop, layout save/restore

Reached out and offered the bounty.

The awardee of the xdg-shell bounty has chosen to re-donate it to touchscreen support.

(which brings that bounty up to $95)

$10 from @hosaka goes to tray icons (now $210), thanks!

$20 from @DenialAdams, split evenly between modesetting (now $30) and pointer constraints (now $10). Thanks!

Looking at the donation backend, I seem to have missed one - $5 to touchscreen support (now $100).

Added a $10 donation to tray icons!

$200 donation to touchscreen support!

wayland/x11 clipboard sync damon: $40

Can this be implemented in terms of #926? I would suppose so. If so, I'd like to take on #926, and if that works out good, I would consider tackling wayland/xwayland clipboard sync.

#926 would be a good start, but syncronizing the clipboard should probably be done in wlc/wlroots.

I guess that due to sway movement to wlroot, all the wlc-related bounties will be moved against wlroot, right?

Regarding the XEmbed/tray feature, would it be more beneficial to recommend using something like xembed-sni-proxy instead of fully implementing XEmbed? That way, there will be less work involved as we only have to implement SNI.

That sounds like a great plan, @NBonaparte.

$200 donation to touchscreen support!

Update - the donor gave me permission to disclose his name. Many thanks to Mikael Voss for this donation!

In case anyone wants to implement full touchscreen support in wlc/sway (Cloudef/wlc#172) but is lacking the necessary hardware to test it, I would be willing to donate a Lenovo YOGA 300 or a similarly priced alternative to them. I’d love to see touchscreens work in sway, but unfortunately I don’t have the time to do it myself.

@4e554c4c has implemented i3-style marks and chosen to redonate the bounty to #892. Thanks!

$20 donation added to layout save/restore

$200 donation split four ways

50$ for DPMS (#541), 50$ for Touchscreen support (Cloudef/wlc#172), 50$ for #892 and 50$ for Tray icons

Thanks to Mikael Voss for his continuing generosity!

@illdefined The world is a small place, you browse random projects and always the same people turn up.

I have set up a Patreon page for supporting general maintenance of this and other projects. This doesn't supplant the bounty system - it supplements it. Bounties support specific features and Patreon supports overall development and maintenance (basically all of the work I do).

https://patreon.com/sircmpwn

If you have questions feel free to shoot them my way. I would also sincerely appreciate it if you spread the word about this Patreon page. Thanks!

@rubdos have you made any headway with #926? I was thinking of trying to implement it as well as it should be pretty easy. Also @SirCmpwn, just to save some digging around, is the current clipboard state managed by wlc or sway itself?

It's managed by wlc, in a manner of speaking. You should read up on how the clipboard works on X11 and on Wayland. I think @nyorain is working on this, by the way.

commented

Yeah, I am currently working on x11/wayland clipboard sync from the list.
This merged patch makes it possible to implement #926, I think. Feel free to implement it, you will need the newly added wlc_set_selection function (see the wlc example), otherwise I will look into it once clipboard sync is finished (am not familiar with the sway codebase yet though).

@neon64, no, I dropped it because of a lack-of-time.

$10 to tray icons, now $280.

$20 to pointer constraints, now $30

Unfortunately, my recent Bitcoin donation has not been successful.
I got an email from Stripe saying "Drew DeVault has been unable to complete your order and would like to refund you by sending Bitcoin to a refund address."

Hmm, I didn't hear anything about that from Stripe. Can you reach out to them for help?

Should this be updated to reference wlroots instead of wlc?

Yeah, at this point, probably.

Actually, let's hold off on that. These don't translate well into that. I will move the touchscreen bounty to wlroots, though.

I've decided that we're not going to support layout save/restore. It's too hacky even in i3 and I don't want to bring that kind of cruft into Sway. For those who have contributed to its bounty, please contact me via sir@cmpwn.com to arrange for the reallocation or return of your funds. If I don't hear from you in 30 days, I'll reallocate the funds at my discretion.

$10 relocated from layout restore to ARM support at donor request.

$10 from anonymous donor for per-window keyboard layouts.

$50 donation from an anonymous donor to "the bounty of my choice", which I've chosen to add to real-time video capture. I also redistributed the layout save/restore into beefing up several other bounties.

I have received a $500 donation from an anonymous donor, with this note:

I'd like to fund a bounty to add keymapping support to wlroots that would allow for a key to be remapped to both a modifier and a keypress. Specifically, if held while pressing another key, Caps Lock would act as Ctrl. When pressed by itself, Caps Lock would act as Escape.

This is a pretty easy feature, so after some discussion the donor agreed to diversify it. I'm going to call the feature he requested "xcape features in wlroots" and stick $100 on that. The rest is going towards incentivizing development on wlroots+sway integration overall with a few new bounties that I think cover the harder parts of integration:

  • Window borders: $100
  • Fractional scaling: $100
  • Selected Wayland protocol extensions*: $100

I'm going to hang on to the last $100 for now and open up a bounty later on, when it becomes clear what more of the difficult work will be.

* input-method, pointer-constraints, presentation-time, relative-pointer, idle_inhibit, xdg-output

+$22 to tray icons

+$20 to tray icons

+$100 to DPMS

commented

@SirCmpwn in case no one has pointed it out by now the CapsLock/Ctrl/Escape functionality (exactly as described by the anonymous donor above) is quite reliably provided by this:
https://gitlab.com/interception/linux/plugins/caps2esc
The author is also maintaining an Archlinux package on AUR:
https://aur.archlinux.org/packages/interception-caps2esc
The solution works independently of gui (X or wayland window managers). I have been using it with (and without) sway or i3 for quite a while now without any problems.

Your link 404s, and if you read my comment more carefully, you'll notice that no bounty has actually been put towards that feature.

commented

Sorry about the links. Don't understand how I did it. Corrected.
I commented only with hope that this info somehow would get to the donor. Was not refering to the bounty.

Let's start talking about how to deal with these bounties. I want to start paying these out when we release 1.0-beta.1. The road to 1.0 made this complicated, as many of these features were the result of lots of people working in various degrees, most of whom never had their eyes on the bounty to begin with. My plan is to figure out who has a claim to which bounties and get those paid out. Anything which is too difficult to attribute or doesn't really make sense will be put into a bucket which will be spent on test hardware for sway devs, travel to events, domains, and so on.

Post-1.0, I don't really want to continue the bounty program. These were rarely paid out and most of them were never done by an individual working specifically towards that goal - they just all happened to get done as we were working on wlroots.

If anyone who worked on these things feels they have a claim to a bounty, please leave a comment in this thread. I limited discussion to collaborators to reduce noise, but anyone who has a comment and cannot make it should shoot me an email: sir@cmpwn.com.

I think you should do this:

  • Ignore the bounties listed in the first post
  • Decide how much of the kitty you want to spend on bounties and how much you want to reserve for other things
  • Decide how the bounty component should be divided based loosely on git metrics combined with a bit of personal opinion

Don't forget to reward yourself too.

I don't think that it's appropriate for me to repurpose this money for something other than paying out these bounties, outside of the bounties where it doesn't really make sense. People donated this money with the express intent of seeing these features completed. Here are some polls to validate this opinion:

As someone who has put money into a sway bounty...

As someone who has earned a sway bounty...

I also don't think git metrics are useful, and I'm going to put it all down to personal opinion and discussion with the people involved in each bounty. If you'd like to claim some of the bounties, please list the bounties you want to be considered for. I consider the following bounties valid and payable, assuming we can sort out who wants each:

  • Real time video capture
  • DPMS
  • Pointer constraints
  • Touchscreen support via wlroots
  • Drag and drop
  • Window borders
  • Fractional scaling
  • Selected Wayland protocol extensions
  • wayland/x11 clipboard sync

I think the following bounties can remain in effect and may be paid out in the future:

  • Keyboard layout per window
  • Tray icons

I don't need to reward myself, about 25% of the pot was my own money in the first place and I get plenty of donations through Patreon. I just want to make sure that contributors are rewarded for their hard work. I'll put my cut into the bin of "discretionary money to spend on the project".

@atomnuker has expressed interest in the real time video capture bounty

Alright. I may as well claim window borders then.

I've already claimed the $30 bounty for drag-and-drop. It's still waiting for me on @SirCmpwn's wall. :^)

Okay, current list of claims is:

If anyone else wants to lay a claim, do so by December 1st. I'll be paying out bounties then. Anything unclaimed will be moved into the general fund for hardware purchases, conferenece attendance, etc.

Oh, and email me your PayPal details. sir@cmpwn.com

Alright - $475 in bounties have been paid out and $815 is left in the discretionary fund. Thanks to everyone who participated, both donating towards bounties and working on features to claim them. The bounty program is now closed.