Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Bounties for sway development #986

Closed
ddevault opened this issue Dec 12, 2016 · 76 comments
Closed

Bounties for sway development #986

ddevault opened this issue Dec 12, 2016 · 76 comments

Comments

@ddevault
Copy link
Contributor

ddevault commented Dec 12, 2016

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

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.

@jplatte
Copy link

jplatte commented Dec 13, 2016

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?

@ddevault
Copy link
Contributor Author

That's correct.

@ddevault
Copy link
Contributor Author

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

@ddevault
Copy link
Contributor Author

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

@ddevault
Copy link
Contributor Author

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

@lambdafu
Copy link

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 :)

@ddevault
Copy link
Contributor Author

Thanks! Raised that bounty to $150.

@ddevault
Copy link
Contributor Author

ddevault commented Jan 4, 2017

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

@ddevault
Copy link
Contributor Author

ddevault commented Jan 4, 2017

(via #1019)

@Airblader
Copy link

@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.

@ddevault
Copy link
Contributor Author

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

@Airblader
Copy link

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

@ddevault
Copy link
Contributor Author

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.

@Airblader
Copy link

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

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

@ddevault
Copy link
Contributor Author

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

@ddevault
Copy link
Contributor Author

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

@ddevault
Copy link
Contributor Author

$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.

@ddevault
Copy link
Contributor Author

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

@jplatte
Copy link

jplatte commented Jan 15, 2017

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

@ddevault
Copy link
Contributor Author

@jplatte yes

@onny
Copy link

onny commented Jan 15, 2017

10$ to wayland/x11 clipboard sync damon :)

@ddevault
Copy link
Contributor Author

Got it :)

@ddevault
Copy link
Contributor Author

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

@Lourens-Rich
Copy link

Cloudef/wlc#210 it is fixed.

@ddevault
Copy link
Contributor Author

Reached out and offered the bounty.

@ddevault
Copy link
Contributor Author

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

@ddevault
Copy link
Contributor Author

(which brings that bounty up to $95)

@ddevault
Copy link
Contributor Author

ddevault commented Feb 4, 2017

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

@ddevault
Copy link
Contributor Author

ddevault commented Feb 6, 2017

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

@ddevault
Copy link
Contributor Author

ddevault commented Feb 6, 2017

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

@ddevault
Copy link
Contributor Author

ddevault commented Aug 13, 2017

$20 to pointer constraints, now $30

@maxanier
Copy link

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."

@ddevault
Copy link
Contributor Author

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

@ghallberg
Copy link

Should this be updated to reference wlroots instead of wlc?

@ddevault
Copy link
Contributor Author

Yeah, at this point, probably.

@ddevault
Copy link
Contributor Author

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

@ddevault
Copy link
Contributor Author

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.

@ddevault
Copy link
Contributor Author

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

@ddevault
Copy link
Contributor Author

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

@ddevault
Copy link
Contributor Author

$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.

@ddevault
Copy link
Contributor Author

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

@ddevault
Copy link
Contributor Author

+$22 to tray icons

@ddevault
Copy link
Contributor Author

+$20 to tray icons

@ddevault
Copy link
Contributor Author

+$100 to DPMS

@WaltWatt
Copy link

WaltWatt commented Jan 31, 2018

@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.

@ddevault
Copy link
Contributor Author

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

@WaltWatt
Copy link

WaltWatt commented Jan 31, 2018

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.

@swaywm swaywm locked and limited conversation to collaborators Oct 16, 2018
@ddevault
Copy link
Contributor Author

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.

@RyanDwyer
Copy link
Member

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.

@ddevault
Copy link
Contributor Author

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".

@ddevault
Copy link
Contributor Author

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

@RyanDwyer
Copy link
Member

Alright. I may as well claim window borders then.

@emersion
Copy link
Member

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

@ddevault
Copy link
Contributor Author

ddevault commented Nov 21, 2018

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.

@ddevault
Copy link
Contributor Author

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

@ddevault
Copy link
Contributor Author

ddevault commented Dec 2, 2018

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.

@ddevault ddevault closed this as completed Dec 2, 2018
Sign up for free to subscribe to this conversation on GitHub. Already have an account? Sign in.
Labels
None yet
Development

No branches or pull requests