† git/diff -s | awk '{ print $2 }' rc/bin/9fs rc/bin/Bfn rc/bin/ape/grep rc/bin/ape/ln rc/bin/g rc/bin/inst/prepdisk rc/bin/ipso rc/bin/patch/list rc/bin/patch/undo sys/lib/git/common.rc sys/man/1/git sys/man/1/sam sys/man/2/9pqueue sys/man/2/fork sys/man/8/sol † cd / † git/commit sys/lib/git/common.rc # Author: Grimmware <oholiab@grimmwa.re> # # parent: e3cd9725106a9e2e5d326aaf4dcb83cafb181a15 # parent: fdbe335d3ac0ba5307b2b5ab97d694af0d2256a7 # M sys/lib/git/common.rc # # Commit message: Pull in git merge fixes from upstream to unfuck my local changes heads/grimmware: 26ca85f02dd9770bb7a1e1c37c0dc21db69424c2 † git/revert usage: revert [-c query] file ... † git/revert `{git/diff -s | awk '{print $2}'} † git/diff -s † git/merge front /bin/git/merge: nothing to merge, doofus † git/branch heads/grimmware † git/log Hash: 26ca85f02dd9770bb7a1e1c37c0dc21db69424c2 Author: Grimmware <oholiab@grimmwa.re> Date: Tue May 17 20:00:01 +0200 2022 Pull in git merge fixes from upstream to unfuck my local changes Hash: fdbe335d3ac0ba5307b2b5ab97d694af0d2256a7 Author: Jacob Moody <moody@posixcafe.org> Date: Tue May 17 05:25:30 +0200 2022 aux/listen: remove special cases for depreciated datakit
Tue May 17 06:43:20 EDT 2022
.de hd .tl ''\\$1'' .tm \\n% \\$1 .. .hd "My Head" blah blah diddy blah
Mon May 16 21:47:14 EDT 2022
diff 5dd9b370a07b49a072025f5cd401361e8988c9e7 uncommitted --- /tmp/diff100001586607 +++ /tmp/diff200001586607 --- a/sys/src/cmd/aux/listen.c +++ b/sys/src/cmd/aux/listen.c @@ -481,28 +481,19 @@ long n; readstr(dir, "remote", s->remote, sizeof(s->remote)-1); - if(p = utfrune(s->remote, L'\n')) + if(p = utfrune(s->remote, '\n')) *p = '\0'; n = readstr(dir, "local", addr, sizeof(addr)-1); if(n <= 0) return 0; - if(p = utfrune(addr, L'\n')) + if(p = utfrune(addr, '\n')) *p = '\0'; - serv = utfrune(addr, L'!'); + serv = utfrune(addr, '!'); if(!serv) - serv = "login"; - else - serv++; - - /* - * disallow service names like - * ../../usr/user/bin/rc/su - */ - if(strlen(serv) +strlen(proto) >= NAMELEN || utfrune(serv, L'/') || *serv == '.') return 0; - snprint(s->serv, sizeof s->serv, "%s%s", proto, serv); + snprint(s->serv, sizeof s->serv, "%s%s", proto, serv+1); return 1; }
Mon May 16 21:37:46 EDT 2022
From: "Theo de Raadt" <deraadt@openbsd.org> To: ig0r@b3zdna.net cc: tech@openbsd.org Subject: Re: [PATCH] xenocara: change xterm ProcGetCWD to get cwd via sysctl instead of procfs Comments: In-reply-to ig0r@b3zdna.net message dated "Sun, 15 May 2022 22:30:46 -0400." Date: Sun, 15 May 2022 20:46:00 -0600 Sender: owner-tech@openbsd.org ig0r@b3zdna.net wrote: > > Eventually there will protocol or text side bug in xterm, and someone > > will figure out ways to escalate beyond our other mitigations. Rather > > than forcing them to operate inside an uncomfortable less-than-POSIX > > pledge+unveil environment, they can reuse a simple 1996-era shell-egg to > > execve straight to a fresh shell for their pleasure. Because pledge > > "proc exec" lets them do so. > > But should it not be up to us to make sure that these exploits are > mitigated? Is it not our responsibility to properly go through all of > the changes made to applications in the source tree to make sure they're > secure? You'll turn into a smurf before you finish auditing xterm perfectly. And in the meantime, a new version from upstream will arrive. My point of view is for critical pieces of code, the best way to curtail risk isn't just to review against bugs, but to minimize what the software can do if such bugs are triggered. So I argue we should try to force xterm into a somewhat privsep/privdrop mindset -- using pledge and unveil to constrain action when it goes off the rails, and hopefully collect crashes that alert us ahead of time about problems. And then, I think we can disable features that aren't being used, when we shrink the unveil and pledge. I wonder how "localeFilter" / "luit" is supposed to work, because we don't allow "exec", or is that started earlier, and if so has someone reviewed that code, and added pledge/unveil to restrict the failure modes? xterm is already full of #ifdef, why not add a few more? If people don't like the xterm variation we ship, there are 20+ xterm variations with all sorts of fluff they will use instead (and most of them probably have these features ... and far worse perhaps) That's how I see it. Others might not agree, probably because they are using features I don't.
Mon May 16 11:04:10 EDT 2022
what is opms kratom shots? Kures MIT45
Mon May 16 09:57:17 EDT 2022
#include <u.h> #include <libc.h> #include <ctype.h> #include <bio.h> typedef struct Patch Patch; typedef struct Hunk Hunk; typedef struct Fbuf Fbuf; struct Patch { char *name; Hunk *hunk; usize nhunk; }; struct Hunk { char *file; int oldln; int oldcnt; int oldlen; int oldsz; char *old; int newln; int newcnt; int newlen; int newsz; char *new; }; struct Fbuf { int *lines; int nlines; int lastln; char *buf; int len; }; int strip; void * emalloc(ulong n) { void *v; v = mallocz(n, 1); if(v == nil) sysfatal("malloc: %r"); setmalloctag(v, getcallerpc(&n)); return v; } int fileheader(char *s, char *pfx, char **name) { char *p, *e; int len, n; if((strncmp(s, pfx, strlen(pfx))) != 0) return -1; for(s += strlen(pfx); *s; s++) if(!isspace(*s)) break; for(e = s; *e; e++) if(isspace(*e)) break; if(s == e) return -1; n = strip; for(p = s; *p && n > 0; p++){ if(*p != '/') continue; s = p + 1; n--; } len = (e - s) + 1; *name = emalloc(len); strecpy(*name, *name + len, s); return 0; } int hunkheader(Hunk *h, char *s, char *file) { char *e; memset(h, 0, sizeof(*h)); h->file = strdup(file); h->oldlen = 0; h->oldsz = 32; h->old = emalloc(h->oldsz); h->newlen = 0; h->newsz = 32; h->new = emalloc(h->newsz); if(strncmp(s, "@@ -", 4) != 0) return -1; e = s + 4; h->oldln = strtol(e, &e, 10); if(*e != ',') return -1; e++; h->oldcnt = strtol(e, &e, 10); while(*e == ' ' || *e == '\t') e++; if(*e != '+') return -1; e++; h->newln = strtol(e, &e, 10); if(e == s || *e != ',') return -1; e++; h->newcnt = strtol(e, &e, 10); if(e == s || *e != ' ') return -1; if(strncmp(e, " @@", 3) != 0) return -1; return 0; } void addnew(Hunk *h, char *ln) { int n; ln++; n = strlen(ln); while(h->newlen + n >= h->newsz){ h->newsz *= 2; if((h->new = realloc(h->new, h->newsz)) == nil) sysfatal("realloc: %r"); } memcpy(h->new + h->newlen, ln, n); h->newlen += n; } void addold(Hunk *h, char *ln) { int n; ln++; n = strlen(ln); while(h->oldlen + n >= h->oldsz){ h->oldsz *= 2; if((h->old = realloc(h->old, h->oldsz)) == nil) sysfatal("realloc: %r"); } memcpy(h->old + h->oldlen, ln, n); h->oldlen += n; } void addhunk(Patch *p, Hunk *h) { if((p->hunk = realloc(p->hunk, ++p->nhunk*sizeof(Hunk))) == nil) sysfatal("realloc: %r"); p->hunk[p->nhunk-1] = *h; } int hunkcmp(void *a, void *b) { int c; c = strcmp(((Hunk*)a)->file, ((Hunk*)b)->file); if(c != 0) return c; return ((Hunk*)b)->oldln - ((Hunk*)a)->oldln; } Patch* parse(Biobuf *f, char *name) { char *ln, *old, *new; Patch *p; Hunk h; int inbody; ln = nil; inbody = 0; p = emalloc(sizeof(Patch)); comment: free(ln); while((ln = Brdstr(f, '\n', 0)) != nil){ if(strncmp(ln, "--- ", 4) == 0) goto patch; free(ln); } sysfatal("%s: could not find start of patch", name); patch: if(fileheader(ln, "--- ", &old) == -1){ if(inbody) goto out; else goto comment; } free(ln); ln = Brdstr(f, '\n', 0); if(fileheader(ln, "+++ ", &new) == -1){ if(inbody) goto out; else goto comment; } free(ln); ln = Brdstr(f, '\n', 0); hunk: if(hunkheader(&h, ln, new) == -1) goto comment; free(ln); inbody = 1; while(1){ if((ln = Brdstr(f, '\n', 0)) == nil){ addhunk(p, &h); break; } switch(ln[0]){ default: addhunk(p, &h); goto patch; case '@': addhunk(p, &h); goto hunk; case '-': addold(&h, ln); break; case '+': addnew(&h, ln); break; case ' ': addold(&h, ln); addnew(&h, ln); break; } } out: qsort(p->hunk, p->nhunk, sizeof(Hunk), hunkcmp); free(old); free(new); free(ln); return p; } int rename(int fd, char *name) { Dir st; nulldir(&st); st.name = name; return dirfwstat(fd, &st); } void blat(char *f, char *o, usize len) { char *tmp; int fd; if((tmp = smprint("%s.tmp%d", f, getpid())) == nil) sysfatal("smprint: %r"); if((fd = create(tmp, OWRITE, 0666)) == -1) sysfatal("open %s: %r", tmp); if(write(fd, o, len) != len) sysfatal("write %s: %r", tmp); if(remove(f) == -1) sysfatal("remove %s: %r", f); if(rename(fd, f) == -1) sysfatal("rename %s => %s: %r", tmp, f); if(close(fd) == -1) sysfatal("close %s: %r", tmp); free(tmp); } int slurp(Fbuf *f, char *path) { int n, i, fd, sz, len, nlines, linesz; char *buf; int *lines; if((fd = open(path, OREAD)) == -1) sysfatal("open %s: %r", path); sz = 8192; len = 0; buf = emalloc(sz); while(1){ if(len == sz){ sz *= 2; if((buf = realloc(buf, sz)) == nil) sysfatal("realloc: %r"); } n = read(fd, buf + len, sz - len); if(n == 0) break; if(n == -1) sysfatal("read %s: %r", path); len += n; } nlines = 0; linesz = 32; lines = emalloc(linesz*sizeof(int)); lines[nlines++] = 0; for(i = 0; i < len; i++){ if(buf[i] != '\n') continue; if(nlines+1 == linesz){ linesz *= 2; if((lines = realloc(lines, linesz*sizeof(int))) == nil) sysfatal("realloc: %r"); } lines[nlines++] = i+1; } f->len = len; f->buf = buf; f->lines = lines; f->nlines = nlines; f->lastln = 0; return 0; } char* search(Fbuf *f, Hunk *h) { int ln, len, off, fuzz, maxfuzz, scanning; scanning = 1; len = h->oldlen; maxfuzz = f->nlines; if(maxfuzz > 250) maxfuzz = 250; for(fuzz = 0; scanning && fuzz < maxfuzz; fuzz++){ scanning = 0; ln = h->oldln - fuzz - 1; if(ln > f->lastln){ off = f->lines[ln]; if(off + len >= f->len) continue; scanning = 1; if(memcmp(f->buf + off, h->old, h->oldlen) == 0){ f->lastln = ln; return f->buf + off; } } ln = h->oldln + fuzz - 1; if(ln <= f->nlines){ off = f->lines[ln]; if(off + len >= f->len) continue; scanning = 1; if(memcmp(f->buf + off, h->old, h->oldlen) == 0){ f->lastln = ln; return f->buf + off; } } } sysfatal("unable to find offset to apply patch\n"); return nil; } char* append(char *o, int *sz, char *s, char *e) { int n; n = (e - s); if((o = realloc(o, *sz + n)) == nil) sysfatal("realloc: %r"); memcpy(o + *sz, s, n); *sz += n; return o; } int apply(Patch *p) { char *o, *s, *e, *curfile; int i, osz; Hunk *h; Fbuf f; e = nil; o = nil; osz = 0; curfile = nil; for(i = 0; i < p->nhunk; i++){ h = &p->hunk[i]; if(curfile == nil || strcmp(curfile, h->file) != 0){ if(slurp(&f, h->file) == -1) sysfatal("slurp %s: %r", h->file); curfile = h->file; e = f.buf; } s = e; e = search(&f, h); o = append(o, &osz, s, e); o = append(o, &osz, h->new, h->new + h->newlen); e += h->oldlen; if(i+1 == p->nhunk || strcmp(curfile, p->hunk[i+1].file) != 0){ o = append(o, &osz, e, f.buf + f.len); blat(curfile, o, osz); osz = 0; } } free(o); return 0; } void freepatch(Patch *p) { Hunk *h; int i; for(i = 0; i < p->nhunk; i++){ h = &p->hunk[i]; free(h->file); free(h->old); free(h->new); } free(p->hunk); free(p->name); free(p); } void usage(void) { fprint(2, "usage: %s [-p N] [patch...]\n", argv0); exits("usage"); } void main(int argc, char **argv) { Biobuf *f; Patch *p; int i; ARGBEGIN{ case 'p': strip = atoi(EARGF(usage())); break; default: usage(); break; }ARGEND; if(argc == 0){ if((f = Bfdopen(0, OREAD)) == nil) sysfatal("open stdin: %r"); if((p = parse(f, "stdin")) == nil) sysfatal("parse patch: %r"); if(apply(p) == -1) sysfatal("apply stdin: %r"); freepatch(p); Bterm(f); }else{ for(i = 0; i < argc; i++){ if((f = Bopen(argv[i], OREAD)) == nil) sysfatal("open stdin: %r"); if((p = parse(f, argv[i])) == nil) sysfatal("parse patch: %r"); if(apply(p) == -1) sysfatal("apply %s: %r", argv[i]); freepatch(p); Bterm(f); } } exits(nil); }
Sun May 15 17:55:27 EDT 2022
From: "Theo de Raadt" <deraadt@openbsd.org> To: Stephan Mending <list@md5collisions.eu>, misc@openbsd.org Mail-Followup-To: Stephan Mending <list@md5collisions.eu>, misc@openbsd.org Subject: Re: Cron running at 99% CPU for seemingly no reason Comments: In-reply-to Stephan Mending <list@md5collisions.eu> message dated "Sun, 15 May 2022 12:06:33 +0200." Date: Sun, 15 May 2022 09:56:02 -0600 Sender: owner-misc@openbsd.org This is a bug in a diff I put into snapshots.
Sun May 15 15:05:04 EDT 2022
ext2srv 6574: serving ext2 attach(fid=466,uname="nature",aname="/shr/usb/sdUc616d/linux",afid="-1")...alloc "/shr/usb/sdUc616d/linux", dev=3...good super block...OK clone(fid=466,newfid=450)...OK stat(fid=450)...OK destroy(fid=450) clone(fid=466,newfid=450)...OK open(fid=450,mode=0)...f->qid=0x00000000...OK read(fid=450,offset=0,count=8192)...I/O error destroy(fid=450)
Sun May 15 14:09:39 EDT 2022
pcicfginit 0.0.0: did=44 vid=8086 rid=2 intl=0 ccru=0 0.2.0: did=46 vid=8086 rid=2 intl=11 ccru=0 mem[0] = e0000004 4194304 mem[2] = d000000c 268435456 mem[4] = e0b1 8 0.25.0: did=10EA vid=8086 rid=6 intl=5 ccru=0 mem[0] = ed900000 131072 mem[1] = ed929000 4096 mem[2] = e041 32 0.26.0: did=3B3C vid=8086 rid=6 intl=11 ccru=3 mem[0] = ed928000 1024 0.27.0: did=3B56 vid=8086 rid=6 intl=3 ccru=3 mem[0] = ed920004 16384 0.28.0: did=3B42 vid=8086 rid=6 intl=11 ccru=4 0.28.1: did=3B44 vid=8086 rid=6 intl=11 ccru=4 0.28.2: did=3B46 vid=8086 rid=6 intl=10 ccru=4 0.29.0: did=3B34 vid=8086 rid=6 intl=5 ccru=3 mem[0] = ed927000 1024 0.30.0: did=2448 vid=8086 rid=A6 intl=0 ccru=4 0.31.0: did=3B07 vid=8086 rid=6 intl=0 ccru=1 0.31.2: did=3B2F vid=8086 rid=6 intl=10 ccru=6 mem[0] = e091 8 mem[1] = e081 4 mem[2] = e071 8 mem[3] = e061 4 mem[4] = e021 32 mem[5] = ed926000 2048 0.31.3: did=3B30 vid=8086 rid=6 intl=10 ccru=5 mem[0] = ed925004 256 mem[4] = e001 32 0.31.6: did=3B32 vid=8086 rid=6 intl=10 ccru=80 mem[0] = ed924004 4096 10.0.0: did=422C vid=8086 rid=35 intl=10 ccru=80 mem[0] = ed500004 8192 11.0.0: did=476 vid=1180 rid=BA intl=3 ccru=7 mem[0] = ed403000 4096 11.0.1: did=832 vid=1180 rid=4 intl=3 ccru=0 mem[0] = ed402000 2048 11.0.2: did=822 vid=1180 rid=21 intl=5 ccru=5 mem[0] = ed401000 256 11.1.0: did=476 vid=1180 rid=B6 intl=5 ccru=7 mem[0] = ed400000 4096 63.0.0: did=2C62 vid=8086 rid=2 intl=0 ccru=0 63.0.1: did=2D01 vid=8086 rid=2 intl=0 ccru=0 63.2.0: did=2D10 vid=8086 rid=2 intl=0 ccru=0 63.2.1: did=2D11 vid=8086 rid=2 intl=0 ccru=0 63.2.2: did=2D12 vid=8086 rid=2 intl=0 ccru=0 63.2.3: did=2D13 vid=8086 rid=2 intl=0 ccru=0 main->snarf vga->snarf igfx->snarf +vgactlw type igfx -vgactlw type igfx igfx: dpauxio: dp a, cmd 9, addr 0, len 16: receive timeout igfx: dpauxio: dp b, cmd 9, addr 0, len 16: receive timeout igfx: dpauxio: dp c, cmd 9, addr 0, len 16: receive timeout igfx: dpauxio: dp d, cmd 9, addr 0, len 16: receive timeout vmf 0 vmdf 75000000 vf1 0 vbw 0 igfx->options vga->init igfx->init igfx: display #1 main->load +vgactlw type igfx -vgactlw type igfx vgactlr: look for addr vgactlr: value p 0xd0000000 v 0xfffffe80d0000000 size 0x4000000 linear->addr p 0xd0000000 v 0xfffffe80d0000000 size 0x4000000 +vgactlw size 1024x768x32 x8r8g8b8 -vgactlw size 1024x768x32 x8r8g8b8 sequencer->enter off sequencer->leave off vga->load igfx->load sequencer->enter on sequencer->leave on +vgactlw drawinit -vgactlw drawinit +vgactlw hwgc igfxhwgc -vgactlw hwgc igfxhwgc main->exits pcicfginit 0.0.0: did=44 vid=8086 rid=2 intl=0 ccru=0 0.2.0: did=46 vid=8086 rid=2 intl=11 ccru=0 mem[0] = e0000004 4194304 mem[2] = d000000c 268435456 mem[4] = e0b1 8 0.25.0: did=10EA vid=8086 rid=6 intl=5 ccru=0 mem[0] = ed900000 131072 mem[1] = ed929000 4096 mem[2] = e041 32 0.26.0: did=3B3C vid=8086 rid=6 intl=11 ccru=3 mem[0] = ed928000 1024 0.27.0: did=3B56 vid=8086 rid=6 intl=3 ccru=3 mem[0] = ed920004 16384 0.28.0: did=3B42 vid=8086 rid=6 intl=11 ccru=4 0.28.1: did=3B44 vid=8086 rid=6 intl=11 ccru=4 0.28.2: did=3B46 vid=8086 rid=6 intl=10 ccru=4 0.29.0: did=3B34 vid=8086 rid=6 intl=5 ccru=3 mem[0] = ed927000 1024 0.30.0: did=2448 vid=8086 rid=A6 intl=0 ccru=4 0.31.0: did=3B07 vid=8086 rid=6 intl=0 ccru=1 0.31.2: did=3B2F vid=8086 rid=6 intl=10 ccru=6 mem[0] = e091 8 mem[1] = e081 4 mem[2] = e071 8 mem[3] = e061 4 mem[4] = e021 32 mem[5] = ed926000 2048 0.31.3: did=3B30 vid=8086 rid=6 intl=10 ccru=5 mem[0] = ed925004 256 mem[4] = e001 32 0.31.6: did=3B32 vid=8086 rid=6 intl=10 ccru=80 mem[0] = ed924004 4096 10.0.0: did=422C vid=8086 rid=35 intl=10 ccru=80 mem[0] = ed500004 8192 11.0.0: did=476 vid=1180 rid=BA intl=3 ccru=7 mem[0] = ed403000 4096 11.0.1: did=832 vid=1180 rid=4 intl=3 ccru=0 mem[0] = ed402000 2048 11.0.2: did=822 vid=1180 rid=21 intl=5 ccru=5 mem[0] = ed401000 256 11.1.0: did=476 vid=1180 rid=B6 intl=5 ccru=7 mem[0] = ed400000 4096 63.0.0: did=2C62 vid=8086 rid=2 intl=0 ccru=0 63.0.1: did=2D01 vid=8086 rid=2 intl=0 ccru=0 63.2.0: did=2D10 vid=8086 rid=2 intl=0 ccru=0 63.2.1: did=2D11 vid=8086 rid=2 intl=0 ccru=0 63.2.2: did=2D12 vid=8086 rid=2 intl=0 ccru=0 63.2.3: did=2D13 vid=8086 rid=2 intl=0 ccru=0 main->snarf vga->snarf igfx->snarf +vgactlw type igfx -vgactlw type igfx igfx: dpauxio: dp a, cmd 9, addr 0, len 16: receive timeout igfx: dpauxio: dp b, cmd 9, addr 0, len 16: receive timeout igfx: dpauxio: dp c, cmd 9, addr 0, len 16: receive timeout igfx: dpauxio: dp d, cmd 9, addr 0, len 16: receive timeout vmf 0 vmdf 75000000 vf1 0 vbw 0 igfx->options vga->init igfx->init igfx: display #1 main->load +vgactlw type igfx -vgactlw type igfx vgactlr: look for addr vgactlr: value p 0xd0000000 v 0xfffffe80d0000000 size 0x4000000 linear->addr p 0xd0000000 v 0xfffffe80d0000000 size 0x4000000 +vgactlw size 1024x768x32 x8r8g8b8 -vgactlw size 1024x768x32 x8r8g8b8 sequencer->enter off sequencer->leave off vga->load igfx->load sequencer->enter on sequencer->leave on +vgactlw drawinit -vgactlw drawinit +vgactlw hwgc igfxhwgc -vgactlw hwgc igfxhwgc main->exits
Sun May 15 12:33:06 EDT 2022
━━━━━━━━━━━━━━━━━━━ PRAXIS MEETING #1 Edward Wilson ━━━━━━━━━━━━━━━━━━━ Table of Contents ───────────────── 1. Info 2. Marking Boycott 3. SU/NUS reaffiliation 4. Action decisions 5. Admin decisions 6. Postscript 1 Info ══════ Time: 3pm-4:20pm Date: 15.5.22 (Sunday) Location: Library floor 2, group study room. Attendees: 5 2 Marking Boycott ═════════════════ UCU are going ahead with the marking boycott. Vote happened around the 6th of may(?), boycott scheduled to start on the 23rd of May (8 days from now). *What is likely to happen*: The boycott goes ahead on the 23rd -> University has made a plan -> The University outsources marking. *But there are more possibilities*: 1. If the boycott does go ahead on the 23rd (most likely). 1. University ’does nothing’, boycott goes ahead. Graduation (crucially in its administrative capacity) would be disrupted. University would get in trouble with rankings/Ofsted and some students maybe legally, things it cares a lot about. 2. University makes/has made a plan to combat the effects of the boycott (most likely). 1. The University outsources marking, either inter-department (depends on departments, would be harder with, say, SPAH vs. Law). Or to an agency. 2. The University forecasts/predicts grades using some kind of algorithm. 2. The boycott does not go ahead on the 23rd (least likely). 1. University concedes to all UCU demands attached to the boycott before the 23rd -> UCU calls off boycott. 2. The University concedes to some of UCU demands attached to the boycott before the 23rd (most likely) -> UCU calls off boycott. 3. The UCU calls off the boycott without winning any demands before the 23rd. *What should we do in these situations?* 1. If the boycott is called off as UCU has won some or all demands: Good! Demonstrates the effectiveness of the boycott and, moreover, UCU has won some demands. 2. If the boycott goes ahead and the University either outsources or algorithmises as a solution: Bad! Make the case to students that the university is fucking them over. Argue against both outsourcing and algorithms. *In the meantime*: 1. Create some kind of communique to clarify the situation for students (The SU hasn’t put out much info, neither has the University, neither has the UCU; we can be first) “The University doesn’t have a plan!”. Will include both up-to-date info and our position but also talks to students who aren’t totally on side. 2. Continue to think/strategise and bring thoughts to the next meeting. 3. Act as a ’touchstone’ between the students and the situation. Keep students informed even if they’re not on-side. Get ’middle’ students on side by clarifying the situation, pushing the political point of it being in students’ interests too. 3 SU/NUS reaffiliation ══════════════════════ K met with CEO of SU after the SU committee to reaffiliate. CEO (Craig Stephens) not happy to reaffiliate, said we can participate in national struggles w/o being part of the NUS. Usual arguments. Samira felt she lost b/c of support for strikes, we don’t agree. SU hasn’t technically got rid of its strike support motion, but basically a technicality. SU seems (as usual), lost cause. 4 Action decisions ══════════════════ 1. E: to create a ’communication’ to students outlining the possibilities with regard to the marking strike, as discussed in the session. (Agreed by attendees). 5 Admin decisions ═════════════════ 1. Next meeting schedules for next week, Sunday 22nd May at 3pm in the Library 2nd floor group study room. 2. Invite people who were at the meeting to the discord. 3. Agenda items for next week already submitted: 1. E: Marking Boycott cont’d (will be a day before its set to start). 2. K: Wyvern resurrection, place to put our statements and communications. 3. C: Production of leaflets with same point as the communication. 6 Postscript ════════════ Thanks so much to everyone who turned up, and hopefully see you next week.
Sun May 15 12:33:05 EDT 2022
━━━━━━━━━━━━━━━━━━━ PRAXIS MEETING #1 Edward Wilson ━━━━━━━━━━━━━━━━━━━ Table of Contents ───────────────── 1. Info 2. Marking Boycott 3. SU/NUS reaffiliation 4. Action decisions 5. Admin decisions 6. Postscript 1 Info ══════ Time: 3pm-4:20pm Date: 15.5.22 (Sunday) Location: Library floor 2, group study room. Attendees: 5 2 Marking Boycott ═════════════════ UCU are going ahead with the marking boycott. Vote happened around the 6th of may(?), boycott scheduled to start on the 23rd of May (8 days from now). *What is likely to happen*: The boycott goes ahead on the 23rd -> University has made a plan -> The University outsources marking. *But there are more possibilities*: 1. If the boycott does go ahead on the 23rd (most likely). 1. University ’does nothing’, boycott goes ahead. Graduation (crucially in its administrative capacity) would be disrupted. University would get in trouble with rankings/Ofsted and some students maybe legally, things it cares a lot about. 2. University makes/has made a plan to combat the effects of the boycott (most likely). 1. The University outsources marking, either inter-department (depends on departments, would be harder with, say, SPAH vs. Law). Or to an agency. 2. The University forecasts/predicts grades using some kind of algorithm. 2. The boycott does not go ahead on the 23rd (least likely). 1. University concedes to all UCU demands attached to the boycott before the 23rd -> UCU calls off boycott. 2. The University concedes to some of UCU demands attached to the boycott before the 23rd (most likely) -> UCU calls off boycott. 3. The UCU calls off the boycott without winning any demands before the 23rd. *What should we do in these situations?* 1. If the boycott is called off as UCU has won some or all demands: Good! Demonstrates the effectiveness of the boycott and, moreover, UCU has won some demands. 2. If the boycott goes ahead and the University either outsources or algorithmises as a solution: Bad! Make the case to students that the university is fucking them over. Argue against both outsourcing and algorithms. *In the meantime*: 1. Create some kind of communique to clarify the situation for students (The SU hasn’t put out much info, neither has the University, neither has the UCU; we can be first) “The University doesn’t have a plan!”. Will include both up-to-date info and our position but also talks to students who aren’t totally on side. 2. Continue to think/strategise and bring thoughts to the next meeting. 3. Act as a ’touchstone’ between the students and the situation. Keep students informed even if they’re not on-side. Get ’middle’ students on side by clarifying the situation, pushing the political point of it being in students’ interests too. 3 SU/NUS reaffiliation ══════════════════════ K met with CEO of SU after the SU committee to reaffiliate. CEO (Craig Stephens) not happy to reaffiliate, said we can participate in national struggles w/o being part of the NUS. Usual arguments. Samira felt she lost b/c of support for strikes, we don’t agree. SU hasn’t technically got rid of its strike support motion, but basically a technicality. SU seems (as usual), lost cause. 4 Action decisions ══════════════════ 1. E: to create a ’communication’ to students outlining the possibilities with regard to the marking strike, as discussed in the session. (Agreed by attendees). 5 Admin decisions ═════════════════ 1. Next meeting schedules for next week, Sunday 22nd May at 3pm in the Library 2nd floor group study room. 2. Invite people who were at the meeting to the discord. 3. Agenda items for next week already submitted: 1. E: Marking Boycott cont’d (will be a day before its set to start). 2. K: Wyvern resurrection, place to put our statements and communications. 3. C: Production of leaflets with same point as the communication. 6 Postscript ════════════ Thanks so much to everyone who turned up, and hopefully see you next week.