-
Notifications
You must be signed in to change notification settings - Fork 908
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
Discussion: Accepting Donations #1174
Comments
WRT distributing money, I'll propose the following model: Winit officially supports 7 platforms (Windows, macOS, X11, Wayland, Android, iOS, and WASM). Accordingly, the donated money will be evenly split into 7 pots, one for each platform. If a platform has an active maintainer, the money in the platform's pot will be transferred to the maintainer on a monthly basis. If the platform does not have an active maintainer, the money will accumulate in the pot until a maintainer commits to that platform. Once that occurs, the money in the pot will be transferred to the maintainer over the next three months, in addition to their platform's monthly donations. This is to attempt to circumvent malicious actors from coming in, briefly contributing to the project to become the maintainer, then leaving once they have acquired the pot. I fully hope and expect that I'm being unnecessarily paranoid there and that any maintainers we currently or will have will act in good faith, but I'd rather be a bit more cautious than necessary than get burned by someone acting in bad faith. The main problem I'm aware of with that model is that it doesn't account for what happens if we have multiple maintainers on a platform. However, we've only ever had one maintainer per platform, and I don't expect that situation to change. There are probably other issues with that model that I haven't figured out, so I'm very much interested in getting feedback on it. (I'll note that the above model doesn't currently account for taxes. We've got contributors from all over the world, so I'll need to do more investigation to figure out how those would work.) |
Yeah, correct, for the most part. I also got this "ancient" (or cheap, or both) windows laptop laying around that falsely claims to support OpenGL 2.1, when it doesn't even support that. For understandable reasons, I don't do any testing on that.
Well, ideally I'd have a nice shiny table with lots of names in it like winit's, however, given the limited traffic, I haven't seen the need for such a thing. As it currently stands, I try to squeeze as much info out of the users submitting the issue as humanly possible, then hope someone finds the solution :p For whatever system is proposed though, I'd suggest that glutin and winit draw from a unified pool, as most users honestly can't tell the difference between the two, judging by how much issues I transfer from glutin to winit.
Well, you've already cc'd more people then there are platforms, so some platforms are going to need more then one maintainer else someone gets the short end of the stick. I'd rather money is distributed evenly between people who's recently contributed past some certain threshold calculated by some yet to be decided metric. Some threshold would be necessary since I don't imagine it's feasible to forward forty-five and a half cents to fifty person. Also, on the topic of maintainership, how long until @murarth gets marked as X11's? Thank you @murarth ❤️ |
Really great to see you starting this conversation @Osspial - if there was ever an OSS project I'd love to see funded winit is up there! Possible Alternative - Funding IndividualsOne alternative approach that might help to ease the burden of managing distribution of money would be to instead allow individual devs provide their own patreon/opencollective links and provide a clearly visible table or something of the sort where folks can easily see:
I'm imagining something very close to the Testers and Contributors table, but front and centre rather than hidden in a wiki. Perhaps this way individuals can sponsor/donate based on the contributions they are interested in? E.g. I personally am no longer as invested in glutin as I once was, as most of my downstream work is now Vulkan oriented, but I am interested in seeing general management of winit continued and that feature parity is reached across the supported platforms. All that said, I suppose this does tend to complicate things for the user who just wants to see winit thrive in general, and doesn't want to have to do the busywork of subscribing to each individual! Organisation?Perhaps it is worth considering setting up a board for winit or some sort of organisation structure where occasional meetings can be setup to discuss and decide on these things? A "proper" organisation of some sort with an official structure, method of decision-making, code-of-conduct, leadership review process, etc may make applying for funding via MOSS and other avenues a little easier as well? Perhaps @erlend-sh may have some advice here, as I believe they have gone through something similar with Amethyst? Edit: I should add that your approach of having a pot distributed between recent contributors with some measurable thresholds setup sounds reasonable enough to me! Just wanted to share some other approaches/thoughts that might be worth considering. |
GitHub recently announced GitHub Sponsors, but I'm not sure if this is available for organizations such as rust-windowing, or if it's only available to individuals. In either case, there's now a shiny "Sponsor" button that we can make appear on the top of the repo by adding a Having the possibility to choose to donate to individual contributors sounds interesting to me, but as @mitchmindtree pointed out, this could make it harder to donate and it could also lead to a single person receiving an unproportionate amount of the donations. Perhaps a distributed approach would be better. With regards to open source grants and such, I feel like it's definitely worthwhile applying, because it'd potentially be a much larger income source than individual donations. This might be dependent on setting up an actual legal entity to handle the logistics however. |
I also like the idea suggested by @zegentzy of distributing money to recent contributors, but I don't know how well this would work in practice. Perhaps there could be a bug bounty program where maintainers can assign bounties to issues and the bounty gets pulled from some fund that is put aside each month from donations. This would make sure that money goes towards meaningful development work. |
I think this is a great idea and a big step for this project. An important issue to consider, as raised by @mitchmindtree, is that of organization. If we're going to be distributing money from donors to maintainers/developers, I think that strongly suggests creating a non-profit organization. This gives a legal framework for accepting donations and making payments and it formally establishes a board to make decisions about who receives payment and to oversee the direction of the project. However, it also means certain legally binding obligations and costs in establishing/maintaining the organization. @Osspial Maybe you've already considered all of this. I just want to make sure we're all on the same page. I don't know if it's my place to talk about how payments should be made to developers because I haven't been involved with the winit project for very long, but I like the idea of giving an equal share to a set of maintainers/regular contributors. It avoids the tricky situation of trying to rate a developer's contributions and compare them to other developers. |
I know I'm not involved here anymore, but I'd like to offer my perspective. I'm inclined to say that any "algorithmic" approach to money distribution won't work well. As programmers, it's an appealing idea, especially since it makes the job more passive. However, things are almost never clear cut in reality, and everyone has emotions... conflicts will arise, and money makes everything more complicated. Speaking from experience, it's easy for maintainers to overestimate how much they're able to get done (I accomplished maybe 10% of what I hoped to during my time here), and managing funds is frankly its own time-consuming job that someone should be paid for. (The same goes for community outreach!) Moreover, the road to sustainability is long. Divided among this many people, winit's income would have to be quite substantial for someone to be able to work on it part-time. When I was active here, I made around $150/mo through Patreon, and it wasn't quick or easy to reach that number (and $64 of that was from my ex-boyfriend, so that doesn't even count). That was enough to pay for my medication when I lived with my parents, but it would do very little to help someone pay for rent or groceries. Talking to @erlend-sh is definitely a good idea, since I believe they think about this problem a lot. I'd also strongly recommend reaching out to Embark, since I know they use winit in some capacity and they're definitely interested in supporting the ecosystem. I believe grants and sponsorships are the best bet, since a single business can inject so much more money than multiple individuals can. I also believe that contracting specific developers for specific tasks is the most practical model, since 1) pay and terms are decided upfront, 2) the impact of the money is demonstrable and easy to understand, 3) it's the model most likely to give someone meaningful income, and 4) it can help flesh out the person's resumé.
I'm no expert on business law, but I've mucked about in this space before. In the US, when you're making a for-profit legal entity, you have the lovely option of an LLC. That gives you many of the benefits of a corporation (most notably, that it's a distinct legal entity) without all of the administrative headaches. However, non-profit corporations don't have that option; not only do you have all of the complexity of a corporation, but you're also subject to additional scrutiny and requirements. Founding and maintaining a 501(c)(3) while remaining compliant isn't something to be taken lightly. There's a lot of paperwork, accounting needs to be done (and correctly!), laws aren't always easy to interpret, and the state department isn't going to hold you hand. I personally would never do it without a lawyer, since non-compliance isn't an acceptable risk. For instance, who would even found it? If @Osspial did it, they'd have to incorporate in PA, and I'm familiar with the requirements there. The filing fee is only $125, which isn't so bad, and there's that additional ~$100/yr you'd have to spend on a commercial registered office provider (that's the PA-specific term for a registered agent). Less obvious is that you'd have to publish a declaration in 2 law newspapers, which probably runs around $200. Like in any state, you'd need to draft your articles of incorporation, which doesn't strictly need to be a "legal document", but you'll certainly want to be able to rely on it if you ever end up in court. This is still ignoring the concept of nexus. If members of the non-profit are in other states (especially if they're managing members), then some nuanced and state-specific laws dictate if you'd be required to incorporate in that state as well. In that case, it would be a foreign corporation (as opposed to a domestic one), which almost always costs more, and in some cases (i.e. Texas) it can be a huge price hike. You'd also need registered agent service for each state you were incorporated in, so that's an additional ~$100/yr per state. Some states also impose their own recurring fees, and even ignoring all of these financial concerns, you'd also have to be compliant with the differing laws and tax requirements in each state. I don't even know what happens when you throw international members/activities into the mix, but it's surely very messy. We're software developers, not lawyers or accountants or ops. These things are all their own jobs, and there's no reason to believe that anyone here could or should fill those roles, especially not on a volunteer basis. |
I can't stress this point enough. While novel distribution models can be accomplished with a more systematic approach, all the upfront work that would require isn't worth it until there are meaningful sums of money to distribute. You don't want to spend lots of time and energy on a "perfectly fair" system to divvy up $50 at the end of every month between 10 people.
Yep, can confirm. I ran a micro-grants fund for Discourse for several years and I've studied a large amount of similar programs. My former boss @coding-horror wrote an apt piece about how difficult it is for open source projects to make use of money they receive: https://blog.codinghorror.com/is-money-useless-to-open-source-projects/ At Amethyst we've been gradually figuring out how the micro-grants model works for core development (i.e. not just community add-ons which was the focus of Discourse's program). With micro-grants awarded for specific gigs you move the burden of distribution to a project manager. You try agree as a team on where to start by discussing the most pressing issues (e.g. long-pending work that's blocking the next release) and gauge who's willing to step up to do the work. If a lot of people want to have a go at a paid sprint that'll require a longer discussion & process, but I've found this is rarely the case. If you're able to have an honest conversation about paid work you'll find there are some who are in a more fitting place to receive payment for their work than others. This fit could be anything from the actual impact the money will have (a student gets much more value out of $250 than an active freelancer does) to the recipient actually having a wide open schedule to do focused work for a good stretch of time. Once you've found a place to start you can gradually try to make sure every contributor gets a chance to do a paid gig at some point, accepting that it could be years until everyone gets their turn unless grants or (my personal favorite) business gets involved. Having non-profit status is nice, but getting there requires a large investment of administrative labour, and there's a certain maintenance burden to it as well like @francesca64 mentioned. Honestly, if there's anything Winit needs that it can't obtain without formal non-profit status then the Amethyst Foundation could happily act as a completely hands-off umbrella to that end. We can talk more about this in a separate channel. |
I have near to no experience wrt to donations and doing a living from them, but I'd just like to add my own perspective on this, which pretty much goes into the direction of "Funding Individuals". I recently asserted my willingness to reduce my involvement in winit (see #972), mostly because it was taking a significant part of my open-source involvement, which is done purely on my free time. Finding a way to find more time to devote to open-source would have been a way to avoid having to choose between projects like this, but receiving money from donations/sponsoring to devote time for open-source is pretty much not an option for me. I'm currently in the middle of a PhD, meaning I don't actually have any time I could devote more to open source, but also I have no idea if my status as a PhD student allows me (from a tax point of view) to receive such donations. For these reasons, I'll just say I don't want to receive anything, and open-source shall remain a free-time activity for me for now. At least until I've finished my PhD. |
Thank you all for taking the time to respond to this thread! I'll respond to the various topics brought up, in no particular order: @francesca64: thank you for the information on setting up a 501(c)(3). It sounds like setting up a new non-profit organization won't be worth the hassle, especially given the amount of money we're likely to be processing. Part of the reason I've been eying OpenCollective is that it lets us receive and distribute money without setting up an entire legal organization, which should let us proceed without worrying about the potential legal issues arising from managing a nonprofit.
I'll be honest: I'll be happy if the donation amount ever goes above tip level, but I'm not holding my breath. Still, it's certainly worth trying to reach a point where the Winit maintainers can work on Winit part-time, and we should absolutely reach out to companies to try and reach that point. You mentioned Embark studios, so I'm cc-ing @repi, as he's the main point of contact for Embark I've seen.
@zegentzy I'm intrigued by the idea of automatically distributing funds to contributors, but I don't think that's an idea that will work in practice, both for the reasons stated elsewhere in the thread and because I'm not aware of any satisfactory metric for measuring contribution. Directing funds to a small group of pre-approved maintainers should create the least amount of drama, and I'd rather we not create more problems than we solve when we start managing donations.
@mitchmindtree Getting people to donate money is already an uphill battle, and I'd rather not increase the friction needed to do that more than necessary.
@erlend-sh I like the idea behind that, but I don't think that's the best place for Winit to start out, given the small pool of contributors and the nature of the project. Winit has a fairly narrow scope, but it takes a lot of work to implement individual features since each feature has to be implemented 7 separate times in different contexts that each have different base assumptions and requirements. Amethyst has a wider scope and I'd guess (let me know how far off the mark this is, since guesses are usually wrong in some way) that working with its codebase is easier, since you aren't developing around quirky, non-Rusty unsafe APIs and it's easier to hop to a different part of the codebase since contributors aren't constrained by the platform they happen to be working on. At least while Winit is still limited to small pools of donations and contributors, evenly distributing the donation pool among the specialized platform maintainers should work better for our purposes (if people disagree with that assertion please say so, as I'm not 100% convinced about it, but I'm still fairly sure it's an accurate assessment of our situation). It's definitely worth re-visiting a micro-grant model if we ever get enough money and non-maintainer contributors to reliably support that, but I suspect that will take a while if it happens at all.
@aleksijuvani I'm not a huge fan of the idea of assigning public bug bounties, since that can potentially lead to conflict if multiple people simultaneously implement a feature and both have valid claims to the bounty. If we get enough money to start distributing micro-grants regularly they could be a good solution for rewarding frequent contributors that aren't necessarily part of the maintenance team, but it'll take some time until we reach the point where we're able to do that. All of those points being said, I'll support having a supplementary system for donors to give donations to individual developers. That nicely side-steps my objection about not having enough money to give micro-grants, since we wouldn't be granting the grants directly.
Would it make sense to expand the role of Winit Maintainer to |
Good initiative! And yes we at Embark have been trying to find more ways to support or sponsor Rust projects and we do use Today we have a mix of smaller passive sponsorships on Patreon & Github to individuals where we ask nothing in return, and a few a bit larger sponsorships of projects/organizations which right now is Amethyst and rust-analyzer. The best mechanism for projects right now seem to be OpenCollective which both Amethyst and rust-analyzer uses. This is easy for us but does require set up for the project in question. Haven't found any other Rust projects on it, but definitely are other large open source projects. |
I think that would be a good idea, @Osspial, although I'm not sure how many of the existing maintainers are interested in opengl shenanigans.
Sorry, but I'd rather not. I don't have any familiarity with Wayland beyond I can start stuff in weston, and it does not like sharing contexts from different connections :/ Unfortunately, nor do I really have much interest in Wayland stuff. |
I don't think it makes sense to conflate the maintainership of winit and glutin—even though using glutin means using winit, this isn't the case the other way around. If you're writing code for any graphics API besides OpenGL, such as Metal, Vulkan or DirectX, you won't be using glutin. The two projects can share a donation pool, sure, but they should have a separate set of maintainers. |
@aleksijuvani LoC-wise (I know that's a faulty measurement in some respects but I believe it applies here), Glutin is roughly an order of magnitude less complex than Winit (looking at the Windows backend, Glutin's is 299 LoC while Winit's is 4050). We're having a really hard time getting even a bare minimum number of maintainers for Winit - why go through that process again, when Glutin's codebase is substantially less complex and we can likely get to the "it-works-well-so-we-only-make-changes-needed-for-ecosystem-updates-or-to-fix-bugs" state fairly easily?
I've done a bit of work with WGL, and imo that's more "platform API shenanigans" than "OpenGL shenanigans", though people may disagree with me there.
Fair enough. That does make the donation splitting situation a bit more complex, though. |
Boy does it ever feel weird to add a comment to an issue that's had no comments for years, but here I go anyway. We recently had a brief discussion on this topic on matrix/irc, which I'll quickly summarize the outcome of:
I'm currently in a position where I can dedicate a substantial portion of my time to working on winit, and I don't have to worry about paying any bills for quite some time yet. So, after working through my hang-ups about soliciting donations, I think I'd like to create a GitHub Sponsors profile (after figuring out the legal side of things, of course), as I believe this is the simplest way to get the ball rolling right now. This is admittedly predicated on none of the current maintainers having any objections to this (it'd be nice if you could add a ":eyes:" reaction to this comment to signal non-objection). |
I'm one of the maintainers of Bevy, an important upstream dependency. The Bevy team is very supportive of this move; |
I work on winit from the point of alacritty and most of my work is torwards solving its bugs. So given I daily drive winit application I just happen to fix winit bugs and resolve issues faster than folks working on winit without using it that much. Anyway I can't accept donations in any form due to the "situation", so it's not like the my voice really matters. What matters is having someone around in winit to check/discuss, since right now the situation is that certain patches could take longer than they should. Though, if donating in hardware is an option to add support for something like graphical tablets would be nice (hardware I can accept, and I won't ever by input tablet myself). |
I think the way forward is when individuals are being funded separately when certain folks feel like. Money distribution and setting up open collective might not be the way right now, winit doesn't have expenses in any form and it's mostly about contributors time and motivation. If you look at primary winit maintainers/contributors, mostly all of them do have a way to fund them (even I have now liberapay account). So if you're interested in winit improving in certain direction or keep those people patient about what they are doing. I'd suggest to sponsor them (@daxpedda fixed lots of web stuff in the past months, and @notgull tries to bring X11 to a reasonable state). The development and pushing features could be affected by simply asking/discussing on matrix/irc channel. If such development could require special hardware/infra we could find a solution, but I sort of have hardware to at least cover stuff on Linux. |
Since @kchibisov is too humble to say it himself, I will note that he is a huge driving force behind the project, handling not only Wayland but also basically all other backends when the other maintainers are absent (cough cough looking at myself). So supporting him is also a good option! |
Thanks, I haven't mentioned that because I wasn't sure that it'll work for me with liberapay, and in reality it won't yet (Though, I'd like to use FOSS system for that). However there's an option with the patreon https://www.patreon.com/kchibisov , which should work. |
Over the past few months, I've received a decent number of messages from people asking if the Winit project accepts donations, or where money can be given. Currently we don't, mainly (as I understand it) because nobody's been comfortable managing that responsibility and there's still an amount of uncertainty about who exactly the money should go to. I think this is a worthwhile discussion for us to officially have, since Winit is an important project in the Rust ecosystem and financial contributions will most certainly help ensure that the Winit maintainers are able to spend enough of their time to keep the codebase maintained, as well as potentially help solidify the maintainership situation for platforms that do not currently have an official maintainer.
With that said, there are a few things I'd like to lay down as groundwork for this discussion:
It's also worth asking: how should we manage Glutin's maintainership going forward? Currently @zegentzy manages that exclusively, but AFAIK he only has direct access to Linux platforms; it's probably worth having other people with more expertise on other platforms help out with that. I think we should manage Glutin's donation within the same system as Winit, so figuring that out is important for figuring out donation distribution.
cc @vberger @ryanisaacg @zegentzy @murarth @mtak- @aleksijuvani @vbogaevsky @mb64 @philip-alldredge
The text was updated successfully, but these errors were encountered: