profile
viewpoint
If you are wondering where the data of this site comes from, please visit https://api.github.com/users/stefanor/events. GitMemory does not store any data, but only uses NGINX to cache data for a period of time. The idea behind GitMemory is simply to give users a better reading experience.
Stefano Rivera stefanor No day job :) Debian, Ubuntu The Internet http://tumbleweed.org.za/

eligrey/classList.js 1097

Cross-browser element.classList

pwaller/pyfiglet 889

An implementation of figlet written in Python

beck/git-po-merge 22

A git merge driver for .PO files

stefanor/chromecastplayer 13

Command Line ChromeCast media player

pybay/pybay 11

Website for PyBay - the Bay Area Python Conference

CarlFK/voctomix-outcasts 8

Support clients for Voctomix

beck/grunt-static-i18n 5

Grunt plugin for internationalization of static assets.

JHSaunders/roshambo 3

A simple 2 player Ro-Sham-Bo (Rock,Paper,Scissors) game to resolve pointless conflicts online

stefanor/bashbot 3

A modular IRC bot in bash

CarlFK/video-stack-deploy 2

fork of DebConf Video Team ansible repo

delete branch stefanor/cachecontrol

delete branch : avoid-httpbin

delete time in 5 days

PR opened ionrock/cachecontrol

Stand-alone test_file_cache_recognizes_consumed_file_handle()

Avoid using httpbin.org for an endpoint that we can serve ourselves.

This helps Debian to run the test suite for cachecontrol in our test infrastructure, without Internet access.

+9 -3

0 comment

2 changed files

pr created time in 5 days

create barnchstefanor/cachecontrol

branch : avoid-httpbin

created branch time in 5 days

fork stefanor/cachecontrol

The httplib2 caching algorithms packaged up for use with requests.

fork in 5 days

delete branch stefanor/mitogen

delete branch : multi-word-mask

delete time in 12 days

pull request commentCTPUG/wafer

Count gaps in ScheduleItem duration

I'm not super sure what the right solution is, but I don't making duration = end - start the default is it

Can you expand on that. From my PoV, this is a simplification, rather than adding complexity.

Unless there's a use-case for having discontinuous schedule-items, where you want to count the discontinuities. I couldn't think of one earlier, but I'd imagine something like an all-day workshop that spans lunch, but you want to carve out a hole for lunch, but use a single Talk for both morning and afternoon.

However, wafer currently disallows scheduling items like that, with the find_non_contiguous validator. (DebConf has to disable this to allow discontinuous events that span breaks, like this.

Perhaps there could be a flag somewhere that says that there isn't a gap?

That could make sense, I can see 3 potential configurations:

  1. No discontinuities permitted (Status quo)
  2. Discontinuities permitted, but excluded from talk length (workshop example above)
  3. Discontinuities permitted, and included in talk length (DebConf)
stefanor

comment created time in 22 days

PR opened CTPUG/wafer

Count gaps in ScheduleItem duration

DebConf has gaps in the Slots between talks, to keep a reasonable-looking schedule while still having clearly marked gaps between talks.

However, the talk length is displayed incorrectly for talks that span across a gap. This had the knock-on effect of disallowing pre-recorded video uploads for talks that were longer than (talk_length - gaps) while shorter than talk_length.

Correct the calculation and add tests.

+54 -17

0 comment

2 changed files

pr created time in 23 days

create barnchCTPUG/wafer

branch : pentabarf-duration

created branch time in 23 days

delete branch CTPUG/wafer

delete branch : current-page-timestamp

delete time in a month

push eventCTPUG/wafer

Stefano Rivera

commit sha d03c718d424574793f4f7fc84983346c1bf64dc4

Look at the time when picking the current ScheduleBlock Now that ScheduleBlocks can span midnight, we need to be concerned about both date and time.

view details

Stefano Rivera

commit sha ec98b110c91a282c9252d8f28d973186aae7059d

Refactor CurrentView to take a single timestamp query parameter, simplifying the logic

view details

Stefano Rivera

commit sha 5e2883ed1bcc014c24c698d7f567e37f65fdcad7

Merge pull request #618 from CTPUG/current-page-timestamp Fix /schedule/current when the schedule spans midnight

view details

push time in a month

PR merged CTPUG/wafer

Fix /schedule/current when the schedule spans midnight

When a schedule spans midnight, /schedule/current displays the last talk from the previous day, every day. It's still based on the old separate date and time from ScheduleDay and ScheduleBlock, in its logic, the migration was incomplete here.

Fix the bug, and refactor the code to use a single timestamp query parameter for testing.

+48 -69

0 comment

2 changed files

stefanor

pr closed time in a month

PR opened CTPUG/wafer

Fix /schedule/current when the schedule spans midnight

When a schedule spans midnight, /schedule/current displays the last talk from the previous day, every day. It's still based on the old separate date and time from ScheduleDay and ScheduleBlock, in its logic, the migration was incomplete here.

Fix the bug, and refactor the code to use a single timestamp query parameter for testing.

+48 -69

0 comment

2 changed files

pr created time in a month

create barnchCTPUG/wafer

branch : current-page-timestamp

created branch time in a month

delete branch stefanor/git-filter-repo

delete branch : version-from-module

delete time in a month

PR opened newren/git-filter-repo

Calculate the version from the module, not the entry_point

When git-filter-repo is installed, sys.argv[0] will be an entry-point stub, not the relevant Python module.

+1 -1

0 comment

1 changed file

pr created time in a month

create barnchstefanor/git-filter-repo

branch : version-from-module

created branch time in a month

issue openedjitsi/jigasi

Debian 11: No sound with Java 17

Description

No audio is carried when Jigasi runs under OpenJDK 17 on Debian bullseye.

We have an Asterisk in front of a jitsi+jigasi. When deployed on Debian 11 bullseye, with the default OpenJDK 17, no audio is carried after the conference room selection in Asterisk. Asterisk is configured to only use opus with jigasi.

Downgrading to OpenJDK 11 makes it work again.

Current behaviour

Here are the relevant log lines from jigasi:

2021-08-21 23:16:20.807 INFO: [67] org.jitsi.jigasi.SipGateway.incomingCallReceived().216 [ctx=1629587780806902500081] Incoming call received...
2021-08-21 23:16:20.811 INFO: [69] org.jitsi.jigasi.SipGatewaySession.run().1721 [ctx=1629587780806902500081] Wait thread cancelled
2021-08-21 23:16:20.815 INFO: [67] org.jitsi.jigasi.JvbConference.start().493 [ctx=1629587780806902500081] Starting JVB conference room: TestCall
2021-08-21 23:16:20.821 INFO: [67] org.jitsi.jigasi.JvbConference.setXmppProvider().636 [ctx=1629587780806902500081] Using ProtocolProviderServiceJabberImpl(Jabber:5b60cdb4@jitsi.dc21.debconf.org/5b60cdb4)
2021-08-21 23:16:20.848 INFO: [72] impl.protocol.jabber.OperationSetBasicTelephonyJabberImpl.registrationStateChanged().127 Jingle : ON 
2021-08-21 23:16:20.849 INFO: [72] org.jitsi.jigasi.JvbConference.registrationStateChanged().687 [ctx=1629587780806902500081] Registering XMPP.
2021-08-21 23:16:20.853 INFO: [72] impl.protocol.jabber.ProtocolProviderServiceJabberImpl.authenticated().2423 Authenticated: false
2021-08-21 23:16:20.855 INFO: [72] org.jitsi.jigasi.JvbConference.joinConferenceRoom().778 [ctx=1629587780806902500081] Joining JVB conference room: TestCall@conference.jitsi.dc21.debconf.org
2021-08-21 23:16:20.871 INFO: [76] impl.protocol.jabber.ChatRoomJabberImpl.joined().1361 testcall@conference.jitsi.dc21.debconf.org/29167fe9 has joined the testcall@conference.jitsi.dc21.debconf.org chat room.
2021-08-21 23:16:20.872 INFO: [76] impl.protocol.jabber.ChatRoomJabberImpl.joined().1361 testcall@conference.jitsi.dc21.debconf.org/focus has joined the testcall@conference.jitsi.dc21.debconf.org chat room.
2021-08-21 23:16:22.212 INFO: [82] impl.protocol.jabber.IceUdpTransportManager.createIceAgent().347 End gathering harvester within 1302 ms
2021-08-21 23:16:22.445 INFO: [82] impl.protocol.jabber.CallPeerMediaHandlerJabberImpl.harvestCandidates().1198 End candidate harvest within 20 ms
2021-08-21 23:16:22.449 INFO: [82] org.jitsi.jigasi.JvbConference.incomingCallReceived().1419 [ctx=1629587780806902500081] Got invite from focus
2021-08-21 23:16:22.557 INFO: [91] service.protocol.media.MediaHandler.registerDynamicPTsWithStream().1003 Dynamic PT map: 101=rtpmap:-1 telephone-event/8000; 107=rtpmap:-1 opus/48000/2; 
2021-08-21 23:16:22.557 INFO: [91] service.protocol.media.MediaHandler.registerDynamicPTsWithStream().1020 PT overrides []
2021-08-21 23:16:22.563 INFO: [91] org.jitsi.jigasi.SipGatewaySession.peerStateChanged().1683 [ctx=1629587780806902500081] SIP peer state: Connecting*
2021-08-21 23:16:22.564 INFO: [100] org.jitsi.jigasi.SipGatewaySession.handleCallState().1600 [ctx=1629587780806902500081] Sip call IN_PROGRESS: Call: id=16295877807811387049923 peers=1
2021-08-21 23:16:22.564 INFO: [100] org.jitsi.jigasi.SipGatewaySession.handleCallState().1609 [ctx=1629587780806902500081] SIP call format used: rtpmap:-1 opus/48000/2
2021-08-21 23:16:22.565 INFO: [100] org.jitsi.jigasi.SipGatewaySession.peerStateChanged().1683 [ctx=1629587780806902500081] SIP peer state: Connected
2021-08-21 23:16:22.565 INFO: [100] service.protocol.media.CallPeerMediaHandler.start().1961 Starting
2021-08-21 23:16:22.567 INFO: [91] service.protocol.media.MediaHandler.registerDynamicPTsWithStream().1003 Dynamic PT map: 126=rtpmap:-1 telephone-event/8000; 111=rtpmap:-1 opus/48000/2 fmtp:useinbandfec=1;minptime=10; 103=rtpmap:-1 unknown/90000; 
2021-08-21 23:16:22.567 INFO: [91] service.protocol.media.MediaHandler.registerDynamicPTsWithStream().1020 PT overrides [103->104 ]
2021-08-21 23:16:22.579 INFO: [91] service.protocol.media.CallPeerMediaHandler.start().1961 Starting
2021-08-21 23:16:22.664 SEVERE: [148] net.sf.fmj.media.Log.error()   Unable to handle format: LINEAR, 48000.0 Hz, 16-bit, Mono, LittleEndian, Signed
2021-08-21 23:16:22.664 SEVERE: [148] net.sf.fmj.media.Log.error() Failed to prefetch: net.sf.fmj.media.ProcessEngine@5f1b678
2021-08-21 23:16:22.666 SEVERE: [147] net.sf.fmj.media.Log.error() Error: Unable to prefetch net.sf.fmj.media.ProcessEngine@5f1b678

2021-08-21 23:16:22.683 SEVERE: [150] net.sf.fmj.media.Log.error() Failed to build a graph for the given custom options.
2021-08-21 23:16:22.683 SEVERE: [150] net.sf.fmj.media.Log.error() Failed to realize: net.sf.fmj.media.ProcessEngine@5fc8fbc7
2021-08-21 23:16:22.684 SEVERE: [150] net.sf.fmj.media.Log.error()   Cannot build a flow graph with the customized options:
2021-08-21 23:16:22.684 SEVERE: [150] net.sf.fmj.media.Log.error()     Unable to transcode format: LINEAR, 48000.0 Hz, 16-bit, Mono, LittleEndian, Signed
2021-08-21 23:16:22.684 SEVERE: [150] net.sf.fmj.media.Log.error()       to: opus/rtp, 48000.0 Hz, Stereo
2021-08-21 23:16:22.684 SEVERE: [150] net.sf.fmj.media.Log.error()       outputting to: raw.rtp
2021-08-21 23:16:22.684 SEVERE: [149] net.sf.fmj.media.Log.error() Error: Unable to realize net.sf.fmj.media.ProcessEngine@5fc8fbc7
2021-08-21 23:16:22.687 INFO: [100] service.protocol.media.TransportManager.sendHolePunchPacket().552 Send NAT hole punch packets
2021-08-21 23:16:22.697 SEVERE: [153] net.sf.fmj.media.Log.error() Failed to build a graph for the given custom options.
2021-08-21 23:16:22.698 SEVERE: [153] net.sf.fmj.media.Log.error() Failed to realize: net.sf.fmj.media.ProcessEngine@52a5a34b
2021-08-21 23:16:22.698 SEVERE: [153] net.sf.fmj.media.Log.error()   Cannot build a flow graph with the customized options:
2021-08-21 23:16:22.698 SEVERE: [153] net.sf.fmj.media.Log.error()     Unable to transcode format: LINEAR, 48000.0 Hz, 16-bit, Mono, LittleEndian, Signed
2021-08-21 23:16:22.700 SEVERE: [153] net.sf.fmj.media.Log.error()       to: opus/rtp, 48000.0 Hz, Stereo
2021-08-21 23:16:22.700 SEVERE: [153] net.sf.fmj.media.Log.error()       outputting to: raw.rtp
2021-08-21 23:16:22.700 SEVERE: [153] net.sf.fmj.media.Log.error()     Unable to add customed codecs: 
2021-08-21 23:16:22.700 SEVERE: [153] net.sf.fmj.media.Log.error()       org.jitsi.impl.neomedia.audiolevel.AudioLevelEffect2@2e8816de
2021-08-21 23:16:22.700 SEVERE: [151] net.sf.fmj.media.Log.error() Error: Unable to realize net.sf.fmj.media.ProcessEngine@52a5a34b
2021-08-21 23:16:22.701 INFO: [91] org.jitsi.jigasi.JvbConference.callStateChanged().1530 [ctx=1629587780806902500081] JVB conference call IN_PROGRESS.
2021-08-21 23:16:22.732 INFO: [109] org.jitsi.srtp.crypto.OpenSslWrapperLoader.log() jitsisrtp successfully loaded
2021-08-21 23:16:27.566 SEVERE: [105] util.UtilActivator.uncaughtException().122 An uncaught exception occurred in thread=Thread[RTPEventHandler,9,system] and message was: getTrackControls cannot be called before configured
javax.media.NotConfiguredError: getTrackControls cannot be called before configured
        at net.sf.fmj.media.ProcessEngine.getTrackControls(ProcessEngine.java:1385)
        at net.sf.fmj.media.MediaProcessor.getTrackControls(MediaProcessor.java:113)
        at org.jitsi.impl.neomedia.device.MediaDeviceSession.getAllTrackControls(MediaDeviceSession.java:2521)
        at org.jitsi.impl.neomedia.device.MediaDeviceSession.getEncoderControls(MediaDeviceSession.java:2472)
        at org.jitsi.impl.neomedia.MediaStreamImpl.update(MediaStreamImpl.java:3599)
        at net.sf.fmj.media.rtp.RTPEventHandler.processEvent(RTPEventHandler.java:80)
        at net.sf.fmj.media.rtp.RTPEventHandler.dispatchEvents(RTPEventHandler.java:50)
        at net.sf.fmj.media.rtp.RTPEventHandler.run(RTPEventHandler.java:114)

Seems the issue is the Failed to build a graph for the given custom options exception.

Expected Behaviour

We expect sound to be carried. After downgrading to OpenJDK 11, the log entries are:

2021-08-21 23:21:46.124 INFO: [68] org.jitsi.jigasi.SipGateway.incomingCallReceived().216 [ctx=16295881061241058989745] Incoming call received...
2021-08-21 23:21:46.129 INFO: [70] org.jitsi.jigasi.SipGatewaySession.run().1721 [ctx=16295881061241058989745] Wait thread cancelled
2021-08-21 23:21:46.132 INFO: [68] org.jitsi.jigasi.JvbConference.start().493 [ctx=16295881061241058989745] Starting JVB conference room: TestCall
2021-08-21 23:21:46.141 INFO: [68] org.jitsi.jigasi.JvbConference.setXmppProvider().636 [ctx=16295881061241058989745] Using ProtocolProviderServiceJabberImpl(Jabber:431c1417@jitsi.dc21.debco
nf.org/431c1417)
2021-08-21 23:21:46.171 INFO: [73] impl.protocol.jabber.OperationSetBasicTelephonyJabberImpl.registrationStateChanged().127 Jingle : ON 
2021-08-21 23:21:46.171 INFO: [73] org.jitsi.jigasi.JvbConference.registrationStateChanged().687 [ctx=16295881061241058989745] Registering XMPP.
2021-08-21 23:21:46.176 INFO: [73] impl.protocol.jabber.ProtocolProviderServiceJabberImpl.authenticated().2423 Authenticated: false
2021-08-21 23:21:46.183 INFO: [73] org.jitsi.jigasi.JvbConference.joinConferenceRoom().778 [ctx=16295881061241058989745] Joining JVB conference room: TestCall@conference.jitsi.dc21.debconf.o
rg
2021-08-21 23:21:46.208 INFO: [77] impl.protocol.jabber.ChatRoomJabberImpl.joined().1361 testcall@conference.jitsi.dc21.debconf.org/29167fe9 has joined the testcall@conference.jitsi.dc21.deb
conf.org chat room.
2021-08-21 23:21:46.211 INFO: [77] impl.protocol.jabber.ChatRoomJabberImpl.joined().1361 testcall@conference.jitsi.dc21.debconf.org/focus has joined the testcall@conference.jitsi.dc21.debcon
f.org chat room.
2021-08-21 23:21:47.595 INFO: [82] impl.protocol.jabber.IceUdpTransportManager.createIceAgent().347 End gathering harvester within 1306 ms
2021-08-21 23:21:47.803 INFO: [82] impl.protocol.jabber.CallPeerMediaHandlerJabberImpl.harvestCandidates().1198 End candidate harvest within 17 ms
2021-08-21 23:21:47.807 INFO: [82] org.jitsi.jigasi.JvbConference.incomingCallReceived().1419 [ctx=16295881061241058989745] Got invite from focus
2021-08-21 23:21:47.920 INFO: [91] service.protocol.media.MediaHandler.registerDynamicPTsWithStream().1003 Dynamic PT map: 101=rtpmap:-1 telephone-event/8000; 107=rtpmap:-1 opus/48000/2; 
2021-08-21 23:21:47.920 INFO: [91] service.protocol.media.MediaHandler.registerDynamicPTsWithStream().1020 PT overrides []
2021-08-21 23:21:47.926 INFO: [91] org.jitsi.jigasi.SipGatewaySession.peerStateChanged().1683 [ctx=16295881061241058989745] SIP peer state: Connecting*
2021-08-21 23:21:47.934 INFO: [100] org.jitsi.jigasi.SipGatewaySession.handleCallState().1600 [ctx=16295881061241058989745] Sip call IN_PROGRESS: Call: id=16295881060981347438778 peers=1
2021-08-21 23:21:47.934 INFO: [100] org.jitsi.jigasi.SipGatewaySession.handleCallState().1609 [ctx=16295881061241058989745] SIP call format used: rtpmap:-1 opus/48000/2
2021-08-21 23:21:47.935 INFO: [100] org.jitsi.jigasi.SipGatewaySession.peerStateChanged().1683 [ctx=16295881061241058989745] SIP peer state: Connected
2021-08-21 23:21:47.935 INFO: [91] service.protocol.media.MediaHandler.registerDynamicPTsWithStream().1003 Dynamic PT map: 126=rtpmap:-1 telephone-event/8000; 111=rtpmap:-1 opus/48000/2 fmtp:useinbandfec=1;minptime=10; 103=rtpmap:-1 unknown/90000; 
2021-08-21 23:21:47.936 INFO: [91] service.protocol.media.MediaHandler.registerDynamicPTsWithStream().1020 PT overrides [103->104 ]
2021-08-21 23:21:47.939 INFO: [100] service.protocol.media.CallPeerMediaHandler.start().1961 Starting
2021-08-21 23:21:47.973 INFO: [91] service.protocol.media.CallPeerMediaHandler.start().1961 Starting
2021-08-21 23:21:48.148 INFO: [108] org.jitsi.srtp.crypto.OpenSslWrapperLoader.log() jitsisrtp successfully loaded
2021-08-21 23:21:48.178 SEVERE: [154] net.sf.fmj.media.Log.error()   Unable to handle format: LINEAR, 48000.0 Hz, 16-bit, Mono, LittleEndian, Signed
2021-08-21 23:21:48.178 SEVERE: [154] net.sf.fmj.media.Log.error() Failed to prefetch: net.sf.fmj.media.ProcessEngine@1e5e4212
2021-08-21 23:21:48.179 SEVERE: [148] net.sf.fmj.media.Log.error() Error: Unable to prefetch net.sf.fmj.media.ProcessEngine@1e5e4212

2021-08-21 23:21:48.206 INFO: [100] service.protocol.media.TransportManager.sendHolePunchPacket().552 Send NAT hole punch packets
2021-08-21 23:21:48.224 INFO: [91] org.jitsi.jigasi.JvbConference.callStateChanged().1530 [ctx=16295881061241058989745] JVB conference call IN_PROGRESS.
2021-08-21 23:21:53.000 INFO: [195] org.jitsi.jigasi.SipGatewaySession.handleCallState().1617 [ctx=16295881061241058989745] SIP call ended: CallPeerChangeEvent: type=CallPeerStatusChange oldV=net.java.sip.communicator.service.protocol.CallPeerState:Connected newV=net.java.sip.communicator.service.protocol.CallPeerState:Disconnected for peer=Test Caller...1234 <415[REDACTED]@127.0.0.1>;status=Disconnected

Possible Workaround

Downgrade to OpenJDK 11.

Steps to reproduce

  1. Provision jitsi+jigasi+asterisk on Debian 11.
  2. Dial into jigasi.

Environment details

Debian 11 bullseye, amd64, OpenJDK 17

Ansible Config: https://salsa.debian.org/debconf-video-team/ansible/-/tree/master/roles/jitsi

created time in a month

push eventCTPUG/wafer

Reza Almanda

commit sha 3df62546eb83d1df02819dcd1c3055d3781305e7

Update translations for Indonesian (Weblate) Currently translated at 23.4% (69 of 294 strings) Translation: Wafer/wafer Translate-URL: https://hosted.weblate.org/projects/wafer/wafer/id/

view details

Stefano Rivera

commit sha 4b6a3cfbf42290627cc1146a0b7df83ea1657551

Merge pull request #616 from weblate/weblate-wafer-wafer Translations update from Weblate

view details

push time in a month

PR merged CTPUG/wafer

Translations update from Weblate

Translations update from Weblate for Wafer/wafer.

Current translation status:

Weblate translation status

+3 -3

0 comment

1 changed file

weblate

pr closed time in a month

push eventCTPUG/wafer

Stefano Rivera

commit sha de7b29654ba3cb8921fed34941e4187d6bfd01c6

Add tests for ScheduleItem GUID semantics

view details

push time in 2 months

issue commentCTPUG/wafer

Video flag for scheduled pages / bare schedule items

As you mentioned in #614, they probably aren't stable enough, but we could make them more stable.

stefanor

comment created time in 2 months

pull request commentCTPUG/wafer

Use static GUIDs in the frab schedule, when possible

Ideally we should have some tests for these, but since nothing is failing I assume we didn't have tests before either.

Yeah, would probably be good to test.

Perhaps a cleaner solution would be to have ScheduleItems be more firmly attached to the talk or pages they are connected to, so that ScheduleItems are not created and deleted all the time while modifying the schedule but only moved around.

That sounds like a pretty good idea. Make the ScheduleItem's slot be optional, so that we can keep it alive (but dormant) when something is unscheduled.

stefanor

comment created time in 2 months

issue commentCTPUG/wafer

Video flag for scheduled pages / bare schedule items

Hrm, probably a duplicate of #384, which I didn't find in my quick skim earlier.

stefanor

comment created time in 2 months

issue commentCTPUG/wafer

Talks with non-Latin titles generate empty slugs

Talks now have a language attribute. We could transliterate from that language.

andrewshadura

comment created time in 2 months

pull request commentCTPUG/wafer

Use static GUIDs in the frab schedule, when possible

@wouter: Another option would be to say that we fix #615, and then you can just import everything that doesn't have an opt-out, as a talk.

stefanor

comment created time in 2 months

issue openedCTPUG/wafer

Video flag for scheduled pages / bare schedule items

Currently in pentabarf.xml, the <event> for non-talk schedule items contains the static:

<recording>
    <optout>false</optout>
    <license>{{ WAFER_VIDEO_LICENSE }}</license>
</recording>

We should have some way to control this, so that video systems don't have to do heuristics.

Maybe a "no-video" boolean on scheduleitems, that overrides the default?

created time in 2 months

pull request commentCTPUG/wafer

Use static GUIDs in the frab schedule, when possible

SReview's schedule parser also assumes that if the conf_url is not a string of 3 elements separated by a /, that it then is not a talk and therefore will not be recorded, and will ignore those events. I don't know if this is something that is true for all Wafer schedules, but it happened to be true for past debconfs and so that worked.

It would be nice if there were an explicit attribute to state the type of event, so I can filter on that.

Yeah, I was thinking about that, too.

With the current implementation in wafer, the <type> tag will contain the talk type, or be an empty tag <type/> for a page/bare scheduleitem. This is an optional feature in wafer, so if no talk types are configured, the field would be empty. But we could default to "Talk" for talks in this situation, if that sounds preferable.

stefanor

comment created time in 2 months

pull request commentCTPUG/wafer

Use static GUIDs in the frab schedule, when possible

It is legal to schedule the same page into multiple schedule items (e.g. we do this in PyConZA for lunch and a few other recurring things), so the page pk may not be unique to an event. Not quite sure what to do about that, so just mentioning it for the moment.

That's handled, by using the scheduleitem's PK when a page is scheduled more than once.

stefanor

comment created time in 2 months

pull request commentCTPUG/wafer

Use static GUIDs in the frab schedule, when possible

@johnjohndoe: This probably doesn't help EventFahrplan, it looks like you use the id attribute, rather than the guid. Any thoughts on this approach?

stefanor

comment created time in 2 months

PR opened CTPUG/wafer

Use static GUIDs in the frab schedule, when possible

SReview is currently having to use the integer in the talk URL to track talks, as they move around in the schedule. There should be a better way. https://salsa.debian.org/debconf-video-team/sreview/-/blob/main/scripts/util/schedule_parsers/debconf#L82

The frab XSD defines <event>'s id attribute as being an integer, in a single namespace. To avoid duplicates, we've used the ScheduleItem's ID in the past. But these change when a talk gets rescheduled.

So, let's put more information into the GUID. There's enough room here to namespace kinds of schedule items from each other.

I could also imagine putting Talks, Pages, and other ScheduleItems in separate integer ranges (e.g. 0-10000 for talks, 10000-20000 for pages, etc.), but that gets somewhat hairy. This has the advantage of being simple.

Downside is that the consumer can't determine the talk's integer ID from the XML. There doesn't seem to be an appropriate attribute to share it in. Probably the best option will be to continue to parse the XML.

+14 -3

0 comment

2 changed files

pr created time in 2 months