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

Jake: Establish plan for disbursing community-raised funds #14

Closed
ocdtrekkie opened this issue Jun 25, 2021 · 51 comments
Closed

Jake: Establish plan for disbursing community-raised funds #14

ocdtrekkie opened this issue Jun 25, 2021 · 51 comments
Assignees

Comments

@ocdtrekkie
Copy link
Member

Thanks to FundOSS, our OpenCollective now has a sizeable $4,878 to work with to fund Sandstorm development. I think that it's critical that we translate this funding into progress in short order, so that people feel their investment has actually gone to where it belongs.

My understanding is that FundOSS intends to run another round in 3-6 months, which I feel should guide our disbursement rate somewhat, though until the next FundOSS is running, we should assume it may be a one-off, and try to raise our own recurring funding on OpenCollective. But if we were so lucky as to be able to run FundOSS again and come out similarly in 3-6 months, then we should look to spend $750-1,000 a month.

I think we should establish a list of appealing projects that can be completed in roughly a month or less, and assign a rough dollar value, based on the expected time needed and our goal disbursement rate (above). We should then determine a way for the community to indicate their preferences/ranking, such that we can prioritize spending on projects which the community is excited about. I think Framadate might be a suitable poll app for this, since people can vote for multiple options, though it falls short of ranked-choice or single-transferable voting.

Obviously the two biggest perks to running community funding this way compared to Ian's sponsors page is: We can easily distribute this to any community developer participating, and the community can direct the priorities of development rather than leaving it open-ended.

@ocdtrekkie
Copy link
Member Author

ocdtrekkie commented Jun 25, 2021

Some ideas I had for potential projects might include:

  • Adding visibility and control of Powerbox requests to the Grain Settings page.
  • Adding "danger zone" advanced grain features (change packageId, transfer ownership) to the Grain Settings page.
  • Updated Etherpad package, since there's been considerable updates over the past few years.
  • Packaging Overleaf, the modern incarnation of ShareLatex, which has turned out to be a popular use for Sandstorm.

While big things like implementing federation, supporting social protocols, and implementing backup are super valuable to the long-term success of Sandstorm, I feel like we should tackle some short-form hits to get our community funding moving.

@zenhack
Copy link
Collaborator

zenhack commented Jun 26, 2021

While big things like implementing federation, supporting social protocols, and implementing backup are super valuable to the long-term success of Sandstorm, I feel like we should tackle some short-form hits to get our community funding moving.

Generally agree. Also, said big things sound fun, so it's more likely I'll end up doing them for free at some point anyway.

Do we have an issue open for "change packageId"? I can thing of some use cases, but this probably needs a decent bit of design discussion.

@ocdtrekkie

This comment has been minimized.

@zenhack

This comment has been minimized.

@ocdtrekkie
Copy link
Member Author

ocdtrekkie commented Jun 26, 2021

We should move design conversations about specific features to dedicated
tasks though, I think.

Agreed. I will work on writing up some issues for these. (Also, "hiding" our last two posts, I don't want them to dominate the discussion here.)

@xet7
Copy link
Member

xet7 commented Jun 26, 2021

1a) Would it be possible for some sponsored Sandstorm developer to send pull requests to Sandstorm and Wekan to fix some of Sandstorm Wekan issues like:

I think I don't know enough about Sandstorm internals to fix them myself.

1b) Alternatively, could someone add more tips to those Sandstorm Wekan issues where to find more related documentation, code files at Sandstorm repo, examples, etc to help me solve those issues.

  1. Could Wekan Rules be used to automate other Sandstorm apps some way?

  2. Could Wekan web UI be used to manage Sandstorm cron, for scheduled Rules? Or could Sandstorm Admin Panel be used to manage Sandstorm cron?

  3. How to enable Wekan API with Sandstorm webkey ? I did not get all of API working yet.

  4. At Sandstorm Admin Panel, could there be visible which grains have exposed webkey to Internet?

  5. Related to permissions management, how is other Sandstorm App Market apps permissions currently? Does Sandstorm Admin Panel manage enough of permissions for all apps, or could it be improved to make more centralized permissions settings management?

@ocdtrekkie
Copy link
Member Author

@xet7 Yeah, we'd need to define the scope well, but adding more Sandstorm integration to Wekan could be a viable project here.

@xet7
Copy link
Member

xet7 commented Jun 26, 2021

@ocdtrekkie

Ok. I'm mostly interested about that above 1a) User Permissions, to get that working.

@ocdtrekkie
Copy link
Member Author

I'm gonna tag in a couple people I specifically hope see this thread: @abliss @troyjfarrell @garrison @dckc

@ocdtrekkie
Copy link
Member Author

Possibly another feature that might make sense for consideration here is dark mode, as Sandstorm is probably the last web property I use which doesn't support it. Though I am unsure the scope of this, if it requires "edit every template", it might be a longer project than I'd hope.

@garrison
Copy link
Contributor

The most important thing to me is that Sandstorm remains a viable and improving platform. Second, improvements to apps would go a long way to improving the Sandstorm experience, I believe. Updating the versions of Etherpad and Overleaf was suggested above. I wish that Sandstorm had alternatives to Doodle and Disqus (e.g. isso, commento). I occasionally come up against bugs in davros that ought to be fixed. My third wish would be better backup support.

@zenhack
Copy link
Collaborator

zenhack commented Jun 29, 2021 via email

@zenhack
Copy link
Collaborator

zenhack commented Jun 29, 2021

Re: disqus, I experimented with my own variant of this way back:

https://github.com/zenhack/sandstorm-comments

though I think I hit some design roadblocks, but at this point I forget what they were...

@hosh
Copy link

hosh commented Jun 29, 2021

I think the biggest one for me is first class support for ARM64 and raspberry pi.

Sandstorm is attractive to me because I think it's a great platform for small homelabs, rather than being deployed on cloud servers. So for me, this isn't just about privacy-first design, but also better resiliency of our computing infrastructure that our civilization uses. I think the Raspberry Pi would make for a better hardware platform than x86.

@dckc
Copy link

dckc commented Jun 29, 2021

Would folks please refer to your important things by issue number? If there isn't already an issue, add one?

Oh... maybe I see why this is a challenge. I was going to point to the backup issue, but there are many.

#8 looks pretty cool.

my thoughts as a customer are in dckc/madmode-blog#83

@ocdtrekkie
Copy link
Member Author

@hosh I think that's the natural place to end up now that ARM boards powerful enough to run Sandstorm are plentiful, though it's probably substantially more work than I expect us to accomplish in near term goals. As far as I can tell, Meteor still doesn't officially support ARM. And the most critical issue will be that every app likely has to be repackaged for ARM-based systems.

x86-based hardware is plentiful on the low-end too, either via old servers or budget-spec mini-PCs.

@dckc For what it's worth, there's a bit of project brainstorming here, but it's also to discuss the approach to handling the funding. If it seems plausible to move in the direction I put in the original text at the top, we'll have to triage the suggested ideas into time/value expectations, then assemble a polling strategy for people to indicate support... probably with links where appropriate to more detail.

@zenhack
Copy link
Collaborator

zenhack commented Jun 29, 2021

x86-based hardware is plentiful on the low-end too, either via old servers or budget-spec mini-PCs.

eh... last I looked there was still a pretty huge price gap between something like the rpi and a cheap intel anything.

But yes, ARM support is a much bigger task than the scope we're looking at for these funds. If folks want to direct the resources in that direction, it would make sense to break off some smaller prereqs I think. #4 is relevant here, as the seccomp filters are the one major bit of "code" that is intrinsically architecture specific -- so I'd want to get that nailed down before I try porting it to a new architecture (note that the flatpak folks at some point used our code and erroneously assumed it was portable: sandstorm-io/sandstorm#3402). An "ARM Roadmap" might be useful for planning more broadly

@ocdtrekkie

This comment has been minimized.

@zenhack
Copy link
Collaborator

zenhack commented Jun 29, 2021

(Let's avoid hijacking this thread to discuss the merits of an ARM port in detail; we have an issue dedicated to that).

@ocdtrekkie
Copy link
Member Author

ocdtrekkie commented Jul 6, 2021

Okay, so we've left this open for a bit, I think we should sort our projects into:

Continuing efforts to work on (these fall a bit outside the scope of what we can accomplish in this short term, but my hope is if we can build recurring funding, we can establish a set of sub-goals to accomplish to reach each of these):

  • Sandstorm-aware backup solution
  • Future ARM support

Shorter-term projects:

@zenhack I know you aren't available full-time at present, but based on your knowledge of some of these issues/projects, do you think you could estimate the number of full-time weeks you'd expect these shorter-term projects to take? I kinda want to establish some sort of rough baseline of "this is going to take twice as much as this" from this.

@zenhack
Copy link
Collaborator

zenhack commented Jul 6, 2021

I'll find time and give it some thought soonish.

Re: the commenting app, this feels like something that's going to need a bit of research before I can pin down a reasonable estimate.

Agree that the Davros thing isn't actionable yet.

@ocdtrekkie
Copy link
Member Author

@zenhack Yeah, if there's anything you don't think you can reasonably estimate or handle in a short timeframe, we can punt if needbe.

@garrison Do you think you could highlight an explicit group of problematic bugs or high-impact improvements that would make a good Davros update goal? (We'd also need @mnutt's involvement, so I should probably tag him if we're talking about it.)

@garrison
Copy link
Contributor

garrison commented Jul 7, 2021

Regarding Davros, I wish that it would be more resilient to files with arbitrary names and files with arbitrary content. For an example of a grain becoming entirely unusable based on the content of a single file, see mnutt/davros#117. Regarding filenames, I was recently unable to view a single file named b&w.png because of the ampersand (mnutt/davros#33); to obtain the file, because there's no way to rename a file through the web interface (mnutt/davros#76), I had to download a zip of all files in the grain. I experienced mnutt/davros#19 as recently as last year apparently, but I have not been experiencing it recently.

@ocdtrekkie
Copy link
Member Author

@garrison I think the last one you mention is truly an actually gone, Davros was updated in January 2021.

@zenhack I'm going to go ahead and put the other three issues reported as the Davros update project in the list, it seems concrete and actionable.

@zenhack
Copy link
Collaborator

zenhack commented Jul 17, 2021

Here are some stabs at rough estimates on these issues. All of these should be considered somewhat tentative; I'd probably want to do a more methodical think about each of them before agreeing to an actual quote:

These are hard to say exactly, since there are a lot of unknown unknowns, but almost certainly less than a week:

  • Etherpad update/re-package
  • Overleaf update/re-package

Note that the former I started on a while back: https://github.com/zenhack/etherpad-lite-sandstorm; it even builds and works, but it's slow to start and is missing some plugins and integration -- I wouldn't consider it ready until it's clearly not a regression. There are a bunch of patches applied to the original package which I will have to tease out and add to the new one.

I have a strong suspicion that @xet7 would be more efficient at solving the Wekan issues than I would, though I could advise on Sandstorm platform questions. The multiple board issue smells thorny. I don't really want to comb through all of the other issues individually.

The big caveat with the Davros stuff is I'm not really familiar with the codebase; there's always the possibility I get in there and it's structured in some wild way I didn't anticipate or (in the case of the bugs) the issue is much subtler than I'd expected. So the above should be taken with a hefty grain of salt.

Commenting app that works on Sandstorm: Really hard to estimate; this smells like the sort of thing where there might be some architectural gotchas, given that the comments are supposed to be pulled in by another page. I'd want to dig in and map out the design space before attempting to asses the workload here.

Add Powerbox visibility/revocation to Grain Settings: I'm assuming this is just listing the caps that the grain holds, and adding a "revoke" button. This will take less than a day.

Add grain transfer to Grain Settings: a few days to a week.

Add change package to Grain Settings: a day or two

@xet7
Copy link
Member

xet7 commented Jul 17, 2021

@zenhack

Yes, I think it's better for me to look at Wekan issues, and only ask about some specific questions about Sandstorm I don't know yet.

@ocdtrekkie
Copy link
Member Author

@zenhack I think there's probably value in the Wekan item as a small project even if it's maybe just a concentrated effort to work with Lauri on it. The Sandstorm integration code is mostly all in one file, and a lot of it was written by David Renshaw (https://github.com/wekan/wekan/blame/master/sandstorm.js) Right near the top of it is a comment stating the no-longer-the-case assumption that only a single board would be available in a Sandstorm grain. Some of the other questions like API integration is probably mostly troubleshooting: Wekan has an HTTP API and Sandstorm supports such, but there isn't a working implementation. Depending on Lauri's comfort being paid out by an OpenCollective, we could also perhaps split the project between the two of you if it entails you working together.

I'm going to ponder over your estimates and maybe pitch out where I think maybe the numbers should be, and see what you think. We are coming up on a month since FundOSS, and I'd like to have some sort of plan and send out an update to both start people voting on how we should prioritize these and encourage recurring donations. (Along with perhaps some project-based buckets in OpenCollective to build funds for larger projects.)

@xet7
Copy link
Member

xet7 commented Jul 17, 2021

Yes it's OK to work together.

It's OK for me with OpenCollective, or anything else. It's just that I have not used it myself yet, so you providing details helps.

@xet7
Copy link
Member

xet7 commented Jul 17, 2021

I'm not so good with estimates, so it's better you think about those.

@xet7
Copy link
Member

xet7 commented Jul 17, 2021

At that Sandstorm Wekan permissions related code is mentions about them being hacks, so maybe there could be some better way to implement those.

@xet7
Copy link
Member

xet7 commented Jul 17, 2021

Also, currently there is Wekan Teams/Organizations in progress, so there's some thinking how it would work with Sandstorm permissions. Although, it's basically just in Wekan Admin Panel adding some Sandstorm user to Team or Organization, and then at boards adding some board to Team or Organization. I don't know does it need to affect Sandstorm in some way.

@mnutt
Copy link

mnutt commented Jul 20, 2021

I unfortunately don't have the bandwidth in the next few months to do very much development on Davros, but am happy to assist others and help make sure that changes get incorporated.

@ocdtrekkie
Copy link
Member Author

@zenhack Do you think it would be fair to set a price of roughly $750 for each app project (Etherpad and Overleaf repackages, Davros and Wekan fixes), and maybe $250 to each Grain Settings feature, with perhaps the note that if something ends up being significantly more complicated, we might add $250 to a given item? (Or perhaps a stretch goal, like ensuring smooth upgrading for Etherpad and Overleaf... the former I suspect will be really irritating, but the value of it is high.) That would give or take divide about the funding we have over most of the projects mentioned here, and give a bit of extra weight to the app projects, which may require diving into less familiar codebases and/or being just very boring work.

@mnutt That's all we could possibly hope for. The biggest frustration would be if we got the work done, but couldn't get a release out. Thanks!

@zenhack
Copy link
Collaborator

zenhack commented Jul 28, 2021 via email

@ocdtrekkie
Copy link
Member Author

Those are definitely all fair points. My rough-ish thoughts were that it might land far south of corporate hourly rate territory, but be well above the previous GitHub Sponsors' monthly level. (And FWIW, from a financial/practical standpoint, I would probably always recommend prioritizing your higher-tier corporate rate work when it's available... Ian being able to afford food is just a inherent positive for the Sandstorm project.)

I also agree it would be more comfortable if there was more input on both the community spending angle, and the potential contractor angle. I have tended to look at things from a bounty model before, which is by nature flat-fee, but the nature of OpenCollective and "invoicing" work would naturally fit an hourly rate model. So I guess then the question would be, would the community here be comfortable with that direction? If so, would we set a consistent hourly offering for any developer working on it? Or how would the community decide that Ian's proposed rate is fair?

The numbers I ballparked would presumably come close to a notion where the existing raised funds would cover most of the list of project ideas. Presumably whether at an hourly rate or a higher flat fee, the scope of work able to be reached within the funds raised would be less than that, which I suppose makes the idea of voting to prioritize projects somewhat more noteworthy... Ultimately I'd like to get to the point where we are both moving on the community selecting what projects are going forward first, and we are beginning to solicit recurring support in order to be able to afford more.

Ultimately, with you not able to make decisions to conflict of interest, and me being absolutely not willing to make decisions about community funding entirely on my lonesome... We really need other people's thoughts on this...

@xet7
Copy link
Member

xet7 commented Jul 28, 2021

Hmm? So maybe, I'll do that everything listed, and then that money to me? 🙂

@ocdtrekkie
Copy link
Member Author

@xet7 It'd definitely be excellent to have multiple people working on Sandstorm via this funding! My thought was if you and Ian worked together on the Sandstorm integration issues with Wekan, for instance, you could both get a portion for it.

But we need to figure out what is fair and under what terms it should be handed out.

@xet7
Copy link
Member

xet7 commented Jul 28, 2021

@ocdtrekkie

Yes it would be nice if other people participated too 🙂

Anyone available that has some time for it ?

@garrison
Copy link
Contributor

garrison commented Aug 2, 2021

the nature of OpenCollective and "invoicing" work would naturally fit an hourly rate model. So I guess then the question would be, would the community here be comfortable with that direction?

That sounds fine to me. A primary goal from my perspective is to keep morale up among developers, and I expect that hourly with regularly check-ins has advantages on this front.

If so, would we set a consistent hourly offering for any developer working on it? Or how would the community decide that Ian's proposed rate is fair?

Setting a consistent and general policy here is, of course, difficult. I wouldn't necessarily say that every developer has to be paid the same rate. But if not, this must be done with great care. The way I think of it is as follows: essentially, Ian is quoting his opportunity cost for taking on projects. For projects that take advantage of his current knowledge and experience working with Sandstorm, it probably makes a lot of sense to hire him. This would certainly include the Powerbox visibility/revocation to Grain Settings project above. I also like the idea of Ian providing help fixing longstanding Wekan integration issues, especially since the Wekan port has been well maintained and seen consistent releases over time. At the same time, I am not really sure that it makes sense for us to pay Ian his quoted rate to dive into an unknown codebase (Davros) and fix random bugs (the ones I suggested above). Updating the Overleaf or Etherpad packages would, of course, be a huge win. If there are no other bids, the most logical path forward might be to have Ian work on (one of) them.

@garrison
Copy link
Contributor

garrison commented Aug 2, 2021

I also just want to say a few words about my experience so far in contributing financially to Sandstorm development through GitHub Sponsors after Oasis shut down. I became a sponsor of Ian after seeing Jake's message on sandstorm-dev, motivated primarily by the matching funds, but with overall low expectations, only the hope that I could send a clear signal that I want Sandstorm to continue as a viable platform. When TTRSS was updated, I was confused the first time I opened my grain and received all the PowerBox requests, but once I then read the post on the Sandstorm blog and understood what I had witnessed, I was ecstatic! I also really appreciate Ian's work on the Content-Security-Policy stuff, as well as numerous other contributions. The primary reason I contributed to the FundOSS campaign is to express my gratitude and excitement that Sandstorm is still moving forward.

@ocdtrekkie
Copy link
Member Author

I've made a Framadate poll here: https://ocdhost.sandcats.io:6080/shared/NC8FAJpQU5kb7ZoWThCV679FlD4Gd5TpnmFuFxQmhti

While shy of ranked-choice voting, this does let you effectively group your preferences into three groups: High Priority, Low Priority, and Not Interested, give or take. I added the seven relatively well-defined projects that we can reasonably estimate the time frame for completion. If people would like to vote from this issue, feel free to do so. If you object to this voting method, please comment here, and if there's no opposition, I will post this to the mailing list and OpenCollective in the nearish future to try to get a wider net of participation.

@ocdtrekkie
Copy link
Member Author

@garrison You may want to check out the new version of Davros in experimental: https://apps.sandstorm.io/app/8aspz4sfjnp8u89000mh2v1xrdyx97ytn8hq71mdzv4p4d8n0n3h?experimental=true

@zenhack
Copy link
Collaborator

zenhack commented Aug 19, 2021

It looks like the powerbox controls are tied for the lead right now. I feel like we need to pin down exactly what functionality that entails.

Also, we should make a call on how long we're going to keep the poll open. I won't have time to work on stuff until September in any case; currently doing stuff for a client who is in crunch mode.

@ocdtrekkie
Copy link
Member Author

@zenhack I think my intention for that item was that Powerbox requests which have been granted (say, domains TTRSS is allowed to talk to) are listed in grain settings in an understandable way, and the ability to revoke those capabilities is available. I'm not sure there's any more sophisticated controls necessary or even desirable. Are there presently other types of Powerbox requests that might need to be covered there? (I'm not particularly versed in the internals of that.)

Honestly, the poll is probably reaching it's natural end (time since the emails/posts about it went out, the people who voted are mostly those I would expect to participate, etc.), I think it's probably safe to consider these the standing priorities for now. I am not super worried about someone in our community calling the process unfair because we didn't adhere too tightly to a explicitly given timeline or process. And this is really just the first phase of this, as hopefully we will regularly build funds, solicit feedback on projects we should try to schedule, etc. So things missed or left out or not accomplished during this one will make it in the next one.

So our top priorities would be the Grain Powerbox Controls and the Etherpad Re-package. And once those are accomplished, as funds permit, Grain Ownership Transfer and the Overleaf Re-package. I highly doubt even if a few more people pop in to vote, that order is going to change much.

@ocdtrekkie
Copy link
Member Author

Hey everyone, we are going to get this moving here. Ian still has other projects taking up a significant portion of his attention, but we have sought out another person to start moving on our community's goals. We've been speaking with @orblivion, who is uniquely qualified to work on the Etherpad re-packaging project. Dan is both a published Sandstorm package author, having put together the very well crafted Kiwix package, and has done contract work on Etherpad relatively recently as well.

Dan has done some investigation and estimation on the work required to re-package Etherpad, with a range of between 17.5 and 44.5 hours. Our plan is for Dan to begin work on the update at the same $90/hr. rate discussed above, checking in with the community at the end of each 10 billable hours. (I think perhaps an issue on the community-project repo may be a good way to do this, so interested parties can subscribe.) As long as we feel we're on track, we'll give Dan the go ahead to continue.

@orblivion
Copy link

Thanks @ocdtrekkie!

The estimate is split into several different areas of concern (plugins, sandstorm integrations, etc). Some have a bigger estimate range than others, accounting for very optimistic vs very pessimistic view of unknown unknowns. I was thinking I could front-load those areas so we could hone down the estimate faster, and perhaps know sooner if we want to short-circuit if it starts to look like it'll go really long.

@zenhack
Copy link
Collaborator

zenhack commented Sep 28, 2021

Yeah, I thought the analysis you did was very thorough, thanks. Do you want to share the breakdown here so others can see it?

I agree with the idea of tackling the less-certain tasks first.

@ocdtrekkie
Copy link
Member Author

The estimate might be a good opening post for Dan's tracking issue for his work, so we can move status of that project out to it's own issue.

@zenhack
Copy link
Collaborator

zenhack commented Sep 28, 2021

Good idea.

@orblivion
Copy link

#15

BTW I have even more detail than this but I kept it as my own dev TODO items for everyone else's sanity. But LMK if anyone wants more detail on something.

@ocdtrekkie ocdtrekkie self-assigned this Sep 29, 2021
@ocdtrekkie
Copy link
Member Author

I'm going to close this one since we have a plan, including having spent a large portion of what we raised, and a list of community-prioritized items to spend the rest of it on.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

No branches or pull requests

8 participants