16:06:50 <smichel17> #startmeeting 
16:06:51 <hcoop-meetbot> smichel17: Meeting started at 2024-07-07T16:06+0000
16:06:54 <hcoop-meetbot> smichel17: Current chairs: smichel17
16:06:58 <hcoop-meetbot> smichel17: Useful commands: #action #info #idea #link #topic #motion #vote #close #endmeeting
16:07:01 <hcoop-meetbot> smichel17: See also: https://hcoop-meetbot.readthedocs.io/en/stable/
16:07:33 <smichel17> #topic Role Call
16:07:44 <unknown_lamer> #info clinton
16:07:47 <robin> #here 
16:07:50 <unknown_lamer> #here 
16:07:53 <smichel17> #here 
16:07:55 <unknown_lamer> forgot we added the command
16:08:09 <keverets[hc]> #here 
16:08:17 <smichel17> Yeah you can do #here clinton if you want your name to show up as clinton in the meeting notes instead of unknown_lamer
16:08:27 <unknown_lamer> #here clinton
16:08:31 <unknown_lamer> hopefully didn't break the bot there
16:08:40 <keverets[hc]> New test case
16:08:43 <unknown_lamer> (ideally have our coop usernames in the transcript but no big deal really)
16:08:45 <smichel17> we'll see :)
16:08:53 <robin> and aliases it for actions etc. (not sure what that does exactly)
16:09:00 <smichel17> #topic agenda
16:09:10 <smichel17> I should do a financial update
16:09:30 <smichel17> We should also discuss kicking inactive members
16:09:37 <unknown_lamer> *sigh* the wiki spam is back in full force
16:09:44 <keverets[hc]> :/
16:09:47 <robin> yeah :(
16:09:49 <unknown_lamer> I wonder if anything can be done other than requiring account registration with manual approval
16:10:11 <smichel17> We get new members infrequently enough, it seems like that's a reasonable solution?
16:10:19 <keverets[hc]> Not a bad idea. Could it use LDAP for author and just allow coop members to edit?
16:10:25 <unknown_lamer> The idea back when was to allow anyone to edit...
16:10:38 <keverets[hc]> Back in a more innocent time
16:10:41 <smichel17> But anyway, I think we can discuss that later unless you want to make it part of the board meeting
16:10:44 <unknown_lamer> I wouldn't put more effort into auth infrastructure with moin 1.x since it's long deprecated (moin2 might actually becoming stable lately too)
16:11:11 <smichel17> Anyone have other topics?
16:11:13 <keverets[hc]> Can discuss wiki replacement after the meeting, I think
16:11:17 <unknown_lamer> yeah it's more admin stuff, I'll see what we need to do to require accounts or if anyone else has had similar textcha spam issues and send a message to -discuss
16:11:30 <smichel17> felt like he had one more, but doesn't remember it now :(
16:11:45 <keverets[hc]> Decision points are really just about kicking delinquent members I think
16:12:08 <keverets[hc]> unknown_lamer: did you have a topic about getting another VPS?
16:12:13 <robin> filing annual report, also gmail forwarding but that may not be board-level
16:12:24 <smichel17> Maybe appoint someone to try harder to contact kzootech, too
16:12:29 <robin> probably me
16:12:51 <unknown_lamer> we have a budget that lets the admins spin up new machines without approval, although we are near or at that budget
16:13:25 <unknown_lamer> https://wiki.hcoop.net/HcoopBudget
16:13:41 <unknown_lamer> fixed expenses this year also went up because gandi's new owners suck
16:13:53 <keverets[hc]> Ok, budget extension might be a topic, but if it's good enough for now it can be handled later
16:14:29 <unknown_lamer> yes, the polcy we adopted just says the sysadmins have to ask for approval to go past $400/mo and we're at $365.10/mo
16:14:40 <smichel17> #topic financial updates
16:14:46 <unknown_lamer> I will ask for a budget change once I work out the specs for the new servers then
16:14:54 <keverets[hc]> The total for 2023 on that page looks wrong
16:15:14 <keverets[hc]> Copy & paste error
16:15:44 <smichel17> Currently on paper we are receiving $525 per month in dues, but in practice it's significantly lower than that because of many deliquent members
16:16:09 <keverets[hc]> Should we get on to that topic then?
16:16:21 <smichel17> In a moment
16:16:25 <unknown_lamer> This has been an issue since before I was treasurer last, apologies for kicking the can down the road
16:16:47 <smichel17> Bank account balance is currently at $8991
16:17:23 <keverets[hc]> That should probably be an info to get into the summary
16:17:28 <smichel17> From a rough estimate, I think we're holding approximately steady there. It jumps between 8k and 9k because members tend to top off balances in larger amounts
16:18:24 <smichel17> On https://members.hcoop.net/portal/money "Sum of all active balances" is $940.68, but I don't really know what that means, it doesn't seem to change ever
16:18:44 <unknown_lamer> That number should be (member balances) - (hcoop balance)
16:19:05 <smichel17> I just retroactively added all our digitalocean bills for last year and the number did not change
16:19:54 <unknown_lamer> fun sumOwnedBalances () =
16:19:57 <unknown_lamer> case C.oneRow (getDb ()) ($`SELECT SUM(amount)
16:19:59 <unknown_lamer> FROM Balance JOIN WebUser
16:20:02 <unknown_lamer> ON Balance.name = WebUser.name
16:20:06 <unknown_lamer> AND WebUser.bal = Balance.id
16:20:10 <unknown_lamer> JOIN Membership
16:20:13 <unknown_lamer> ON Membership.usr = WebUser.id
16:20:16 <unknown_lamer> AND Membership.grp = 1`) of
16:20:19 <unknown_lamer> [amt] => C.realFromSql amt
16:20:22 <unknown_lamer> | _ => raise Fail "sumOwnedBalance: no rows"
16:20:25 <unknown_lamer> not sure
16:20:55 <smichel17> I want to find the page where I can just see the balance for the `hcoop` user, to check how it compares to our bank balance, but havne't found time to do that yet
16:20:59 <smichel17> Do you know it off hand?
16:21:11 <smichel17> (portal is kind of confusingly laid out)
16:21:24 <unknown_lamer> negative balances also go into that so that probably explains the number
16:21:46 <unknown_lamer> https://members.hcoop.net/portal/balances then go down to hcoop
16:22:14 <unknown_lamer> yes, the portal is custom software written forever ago... also can't rebuild now because mlt broke with new sml again but that is usually a quick fix
16:22:36 <unknown_lamer> I argued about whether it was single or double entry when we first had the portal and got shot down but I was right, it's all single entry and annoying
16:22:50 <smichel17> Alright, so that balance is 7983.16
16:22:53 <robin> /portal/balances blocked for me fwiw ("Authorization error: You aren't a member of group #0")
16:23:12 <unknown_lamer> Have to be an admin to access, it should be checking the treasurer group instead
16:23:17 <robin> ah
16:23:25 <unknown_lamer> but that's technical todo and not entirely relevant to the topic at hand
16:23:29 <robin> yeah
16:23:45 <unknown_lamer> board || financial is what it should check
16:23:47 <smichel17> Anyway, good news is it's not too far off from the bank balance
16:24:14 <smichel17> (correctly lower because of member balances, which are in our bank account but still belong to members)
16:24:28 <smichel17> So we might need some minor reconciliation but nothing significant
16:24:35 <unknown_lamer> https://bugzilla.hcoop.net/show_bug.cgi?id=1052 may be related, I identified some discrepancies but that's around when my burn out got critical and all that... but it's all recorded
16:24:59 <unknown_lamer> also all of the members who haven't been paying but whose dues count toward the hcoop balance
16:25:43 <smichel17> I think we're relatively healthy financially, though not as much in the black as I'd prefer. So I'm up to move on to delinquent members and revisit this next quarter when we've straightened that out
16:25:57 <unknown_lamer> Sure
16:26:20 <keverets[hc]> ๐Ÿ‘
16:26:32 <robin> +1
16:27:13 <smichel17> #info finances are healthy, approximately equal dues and expenses
16:27:22 <smichel17> #agreed Revisit finances/budget in next quarterly meeting
16:27:23 <hcoop-meetbot> smichel17: Unknown command: #agreed
16:27:37 <smichel17> :rolling_eyes:
16:27:58 <smichel17> #topic Delinquent Members
16:29:50 <unknown_lamer> https://members.hcoop.net/portal/money?cmd=bootworthy (I'm on there but only because I paid for the ssl renewal and didn't submit reimbursement until today)
16:30:13 <unknown_lamer> https://bugzilla.hcoop.net/buglist.cgi?component=Financial&list_id=1975&product=HCoop&resolution=--- some of these members asked to have their accounts closed, but not many
16:30:18 <smichel17> We discussed this in the last meeting, trying to find the notes link
16:30:45 <smichel17> side note, why doesn't https://wiki.hcoop.net/IrcMeetings/20240707 appear in https://wiki.hcoop.net/IrcMeetings?action=LocalSiteMap
16:30:48 <unknown_lamer> my inclination is to bring up anyone who only paid dues once after joining for expulsion and then zeroing their balances and closing their accounts
16:31:20 <unknown_lamer> LocalSiteMap IIRC only shows what links to the page, you have to add it manually to IrcMeetings (there's some way to get a listing of subpages onto a page but I can't remember offhand)
16:31:23 <keverets[hc]> I'm good with that plan
16:31:33 <robin> https://hcoop.net/board/meetings/2023/hcoop.20230428.0017.html ?
16:31:45 <unknown_lamer> Then after the easy expulsions are done, contact any longer term members one final time using every address we have for them before doing the same
16:31:53 <smichel17> https://hcoop.net/board/meetings/2024/hcoop.20240429.2300.html
16:32:05 <smichel17> Last time we agreed, " notify members that are 6 months delinquent (~17) of impending termination, and if they don't pay dues to get in good standing within 2 weeks, be expelled"
16:32:45 <smichel17> But we didn't appoint anyone specific to do that, and it hasn't happened yet
16:33:03 <smichel17> (Also outside of that agreement there was chatter of being more lenient for longtime members)
16:33:25 <smichel17> And a note that rvbc (kzootech) is one of the delinquent members..
16:33:46 <keverets[hc]> robin: can you update https://wiki.hcoop.net/IrcMeetings with the links to the previous and this one?
16:34:00 <robin> keverets[hc], yeah, will do afterwards
16:34:38 <keverets[hc]> robin: thanks!
16:34:48 <keverets[hc]> smichel17: probably a treasurer task. I'll do it
16:35:24 <robin> for people with huge debts who basically haven't used hcoop for years (and, presumably, haven't really used coop resources), i'd suggest offering to zero their balance
16:36:15 <keverets[hc]> To encourage them to remain members?
16:36:49 <robin> yeah, friendlier than kicking them out and requiring re-application
16:36:55 <smichel17> FYI, you can use #action if you want to capture those todos more prominently in the notes e.g. #action keverets will contact delinquent members
16:37:57 <keverets[hc]> robin: not a bad idea, but if they don't respond at all (which I assume will be the common case), then that adds work and delays action quite a bit
16:38:00 <smichel17> (also thanks, and I know it's been a slow handoff, slower than unknown_lamer to me even :sweat_smile:
16:38:22 <unknown_lamer> If someone has been using services and has a large unpaid balance IMO they should pay it (and be inelgible to reapply if they don't)
16:38:55 <unknown_lamer> whether or not any member with a negative balance has been using services is another question. We should be able to tell based on file mtimes, whether their domains are current, etc.
16:38:59 <keverets[hc]> Is there a convenient way to tell who has been using services and who hasn't?
16:39:12 <unknown_lamer> pretty much have they logged in and do they actually have anything actively hosted
16:39:15 <keverets[hc]> Ah, you answered it there
16:39:39 <smichel17> Yeah it seems like a lot of manual work but not too difficult
16:40:09 <unknown_lamer> most of that list is either members who joined and paid initial dues and left or folks who asked to leave at least
16:40:25 <unknown_lamer> so only a few special cases like meowfaceman and nevetski I think
16:41:15 <smichel17> I think it's reasonable to offer one-time forgiveness to folks who have been with the coop a long time, especially if they are using minimal resources. But yeah let's not bother for one-time payments or many-years-overdue
16:41:30 <robin> btr is an example (i know them from other projects), their homepage was on hcoop for a few years, at some point it started showing the default "unconfigured virtual host" page, also they had a severe motorcycle accident a few years back which might've been a factor
16:42:04 <robin> (i assume they don't have other domains actively hosted)
16:42:33 <robin> but we could set a short-ish deadline and do the normal expulsion process if there's no response
16:42:58 <smichel17> e.g. at my (nonprofit) aikido dojo we have a 'pay what you can afford' policy, which I like as long as it doesn't put financial hardship on the org
16:43:45 <keverets[hc]> I don't think we should change the payment structure at this time, but we can discuss more later
16:44:18 <smichel17> That's reasonable too. I'm okay either way. E.g. revisiting after expulsions
16:45:10 <smichel17> How about we proceed with expulsions along the lines of "we assume you're not using hcoop anymore, you'll be expelled soon if you don't reply" and then we can discuss what to do about people who do reply at the next meeting?
16:45:46 <unknown_lamer> I really think we can just summarily remove people who paid only once and simplify the task
16:46:08 <smichel17> Fair, agreed on "paid once".
16:46:12 <unknown_lamer> or maybe, paid once and any domains they control are inactive or they have no domtool config
16:46:23 <robin> one-time payers, sure
16:46:29 <keverets[hc]> Yup
16:47:00 <unknown_lamer> Then longer-term members I don't see harm in keeping a list and handling actual expulsion after the next meeting
16:47:26 <robin> smichel17, frame it more as "we'll zero out your debt if you'd like to start using hcoop again (otherwise...)" maybe, but basically yes :)
16:47:42 <unknown_lamer> The treasurer can create a list and admins can check for activity and a full quarter gives us plenty of time to handle that
16:47:47 <robin> and i can ping some old-time members via social media and whatnot
16:47:53 <smichel17> ๐Ÿ‘
16:47:56 <smichel17> notes that all delinquent members have been recieving monthly automated emails about their negative balance
16:48:16 <smichel17> possible they don't check their hcoop email or gmail has been sending them to spam, etc though
16:48:44 <keverets[hc]> Freezing their accounts should encourage them to figure it out
16:49:01 <keverets[hc]> Part of being a member of the coop is receiving and responding to communication
16:49:09 <robin> is looking forward to mwl's Run Yr Own Mail Server coming out in august (re: gmail)
16:49:15 <keverets[hc]> Failure to do so puts the coop at financial risk
16:49:18 <smichel17> ๐Ÿ‘
16:49:23 <robin> +1
16:49:47 <smichel17> Can we get a #info and/or #action to summarize outcomes and move on to next topic?
16:50:52 <keverets[hc]> #info there are several members who paid a single time and then stopped paying without using services
16:51:06 <keverets[hc]> #info there are long time users who are delinquent
16:51:46 <keverets[hc]> #action the treasurer will provide admins a list of users who paid a single time to check for activity
16:52:10 <unknown_lamer> Account freezing is ... very broken.
16:52:15 <keverets[hc]> #action admins will take that list, and provide the subset that are no longer active
16:52:20 <unknown_lamer> I think there's a bug detailing the issues but no one ever fixed it
16:52:41 <unknown_lamer> I think the #1 issue is that it doesn't record their pts id and everything has incorrect ownership on restoration
16:52:47 <keverets[hc]> #action admins to find and fix bug with freezing accounts
16:52:53 <unknown_lamer> Which is why we stopped freezing people basically...
16:53:10 <unknown_lamer> I am not going to fix it in a reasonable time, and the script is written in perl which I can only kind of half fake competence in
16:53:40 <smichel17> notes #undo will remove the most recent #thing from the summary)
16:54:14 <keverets[hc]> #action treasurer to notify all delinquent users that they are scheduled for expulsion if no action is taken. Included will be a one-time offer to reset balance to 0 if they make at least a one-month payment by the deadline
16:54:35 <smichel17> I think it's not critical that freezing doesn't work, we've been getting along without it for years
16:54:52 <unknown_lamer> actually maybe that's the only bug so perhaps I could fix it
16:55:03 <unknown_lamer> but I dunno, depends on what I end up doing today I guess
16:55:06 <keverets[hc]> Yeah, but it's nice to have a soft cutoff
16:55:26 <keverets[hc]> Any other info or action you want to add, smichel17 ?
16:55:29 <unknown_lamer> Right, if we had freezing members might notice before we have to boot them
16:56:12 <unknown_lamer> I am not sure we can unilaterally offer to forgive balances, although we have been zeroing out delinquent balances (partially because we have no ability to collect debt, partially because we have not followed our own suspension procedures in a very long time)
16:56:37 <unknown_lamer> Section 205. Members shall be charged monthly dues and any other expenses delineated in the Corporation's policies as determined by the board.
16:56:39 <robin> unknown_lamer, bylaws change required maybe?
16:56:42 <unknown_lamer> Section 208. The board may, by majority vote, expel any member who maintains outstanding debt to the Corporation for three consecutive months or more. This means that the member has paid less than the total dues owed to date.
16:56:44 <robin> aha
16:56:47 <unknown_lamer> so I think
16:56:55 <keverets[hc]> unknown_lamer: if the majority of the board approves (and we should vote), what other agency is needed?
16:57:06 <unknown_lamer> we could actually forgive balances? policies as determined by...
16:57:36 <unknown_lamer> just want to be sure we're not agreeing to do something that will violate the bylaws or member control of the coop
16:58:02 <unknown_lamer> I can be ok with this as long as it is very clear it's a one-time thing only relating to expulsions not being handled properly for several years
16:58:21 <keverets[hc]> That's fair
16:58:36 <smichel17> I guess in that case I think we do actually needd to fix the freezing bug in order to offer one time zeroing
16:58:46 <smichel17> Otherwise it will likely happen again, if we can't freeze at 0
16:58:57 <unknown_lamer> and once we're back to normal procedures then we won't do it again except as circumstances require (e.g. if a member falls into financial hardship). And the normal leniency we offer when a member notifies us they can't pay temporarily, although that hasn't happened in ages it has before.
17:00:28 <robin> maybe vote now on a one-time debt jubilee for bootworthy members? or propose it on a list for any member disagreements then do a board poll?
17:00:46 <unknown_lamer> /afs/hcoop.net/common/etc/scripts/freeze is the script if anyone else wants to take a look at it. We need to save the pts id for the user and $user.daemon and then recreate the user with those ids, AFAIK everything else... might work.
17:00:52 <keverets[hc]> We should add a repeating board meeting agenda item to vote on expulsion of delinquent members. That would keep it to a roughly every-3-month thing
17:00:55 <unknown_lamer> maybe some issues with how domains are removed
17:01:23 <unknown_lamer> keverets[hc]: the treasurer is supposed to just bring up delinquent members for expulsion using a poll each months
17:01:44 <keverets[hc]> unknown_lamer: each month?
17:01:58 <keverets[hc]> Or each meeting?
17:02:04 <unknown_lamer> e.g. https://members.hcoop.net/portal/poll?id=42
17:02:28 <unknown_lamer> Recurring official business like that can be handled over email and with official polls
17:02:30 <keverets[hc]> Poll per-member?
17:02:36 <keverets[hc]> Ok
17:02:59 <unknown_lamer> https://members.hcoop.net/portal/poll?id=43 we've done more than one in a poll if we have multiple delinquent
17:03:33 <smichel17> unknown_lamer: We ought to add a note about that to https://wiki.hcoop.net/TreasurerInstructions
17:03:37 <unknown_lamer> freezing is intended to be done without board approval since it just disables services (but has the issue)
17:04:29 <unknown_lamer> didn't realize it wasn't in there, whoops
17:04:58 <unknown_lamer> But before the very long interruption in expulsions that's how we did it
17:06:50 <keverets[hc]> Can you take the action to update the treasurer duties page with the proper way to handle this going forward (after the one-time purge)?
17:07:47 <robin> #action robin will update IrcMeetings links on the wiki post-meeting
17:09:19 <smichel17> #action smichel17 will update https://wiki.hcoop.net/TreasurerInstructions to mention polls for expelling members
17:09:55 <keverets[hc]> Any other decisions or actions?
17:10:46 <smichel17> Not that I can think of
17:10:59 <keverets[hc]> Ok, should we adjourn then?
17:11:02 <robin> action to enact whatever policy we decide for the bootworthy expulsions?
17:11:35 <unknown_lamer> is someone else editing the treasurer page
17:11:38 <robin> or determine it later or whatever
17:11:42 <unknown_lamer> ah I see
17:11:46 <unknown_lamer> I cancelled my edit then
17:11:48 <keverets[hc]> I am not
17:11:51 <robin> not i
17:11:53 <unknown_lamer> smichel17 is
17:12:21 <smichel17> I just fixed the section about transferring paypal balance to bank account, which was outdated
17:13:10 <robin> last item, annual report (and finding kzootech)
17:13:24 <smichel17> #topic annual report
17:13:52 <robin> #info PA annual report has not been submitted yet and is one week late
17:14:07 <robin> #action robin will file a provisional report
17:14:24 <robin> #action robin will attempt to contact kzootech before the next board meeting
17:14:31 <robin> that's it i think
17:16:27 <smichel17> Anything else to discuss today?
17:16:55 <keverets[hc]> No
17:16:58 <smichel17> I noticed https://rvbc.coop/ doesn't have ssl cert up to date eitherโ€ฆ
17:17:07 <robin> nope
17:18:35 <smichel17> Though interestingly on https://members.hcoop.net/portal/balances I see https://members.hcoop.net/portal/user?id=321 still has a positive balance which is weird
17:19:43 <smichel17> Created back in 2015, I didn't realize kzootech had been a member for that long before joining on behalf of rvbc
17:21:07 <robin> oh that's kzootech? huh
17:21:34 <smichel17> Same real name as https://members.hcoop.net/portal/user?id=360
17:22:34 <smichel17> Ending meeting in 20s unless someone raises a new topic
17:23:04 <smichel17> #endmeeting