Augur/8-Knot WG March 17, 2026

๐ **Source:** [Augur/8-Knot WG March 17, 2026](https://www.youtube.com/watch?v=hkejHxiCb5s)
> [!note]+ Document Notes
> tags: #augur #8knot #database #materialized-views #performance #hourly-processing #contributor-data #schema-normalization
> author: Augur/8-Knot WG
> source: Zoom Meeting
> reference: https://www.youtube.com/watch?v=hkejHxiCb5s
> date created: 2025-01-02 10:30
>
> # ๐ท๏ธ Title: Augur/8-Knot WG March 17, 2026 - Memory Fixes and Database Schema Discussion
>
<!-- deep-read:sections start -->
## ๐งฐ Action Inbox
- [H1] Fix hourly contributor processing memory leak โ production memory issues #performance
- [H2] Implement materialized views in Alembic migration system โ 8knot integration needs #database
- [H3] Develop automated data cleanup for collection bugs โ maintainer feedback #data-quality
## ๐งญ Table of Contents
- [[#๐ Summary]]
- [[#๐ Main Content]]
- [[#๐๏ธ Notes]]
- [[#๐ References]]
- [[#๐ฃ๏ธ Paraphrase]]
- [[#๐ฐ Newsletter]]
- [[#โ
Action Items]]
- [[#๐งช Hypotheses]]
- [[#๐ Methodology]]
- [[#โ Questions]]
- [[#๐ฎ Future Research]]
- [[#๐ก Implications]]
- [[#๐ง Learning Styles Assessment]]
- [[#๐ Accessibility Assessment]]
- [[#๐ DEIB Assessment]]
- [[#โ
Logical Validity]]
- [[#๐ก๏ธ DARVO Analysis]]
- [[#๐ฏ Conclusion]]
### ๐ References
- [Augur GitHub Repository](https://github.com/chaoss/augur)
- [8knot Project](https://github.com/augurlabs/8knot)
## ๐ Summary
- Augur production instance experiencing memory leaks from hourly contributor processing task
- Team discussing integration challenges between 8knot's materialized views and Augur's migration system
- Database schema normalization being considered to improve performance and reduce learning curve
- Contributors working on automated fixes for collection bugs and better telemetry
- Clone activity showing unusual spikes potentially from AI scrapers
## ๐ Main Content
The meeting focused on critical performance issues affecting Augur's production instance and long-term architectural improvements. The primary concern was an hourly task processing contributor data that was causing memory exhaustion by attempting to process 50,000+ contributors every hour without completion, leading to multiple copies accumulating in memory. A proposed fix limits processing to 500 contributors per hour, which would handle large instances over approximately one week.
The team also discussed challenges integrating 8knot's materialized views back into Augur's main database migration system. These views were previously disabled due to performance issues but are being re-enabled with improvements. The current migration system using Alembic doesn't handle materialized views well, requiring research into proper implementation approaches.
Longer-term discussions centered on database schema normalization, particularly around file handling across different contexts (pull requests, commits, repo analysis). The current approach stores duplicate file path information across multiple tables, with the repo_labor table being particularly large. Proposed solutions involve creating centralized file tables with foreign key relationships, though this introduces complexity around historical file tracking during refactoring events.
## ๐๏ธ Notes
#### โฑ๏ธ [00:00](https://youtu.be/hkejHxiCb5s?t=0) โ [H1] Hourly Processing Memory Issue
- Key idea: Production instance running out of memory from contributor processing task
- Evidence: "It's basically pulling in like 50,000 contributors every hour, not getting through all of them"
#### โฑ๏ธ [02:45](https://youtu.be/hkejHxiCb5s?t=165) โ [H2] Memory Leak Root Cause
- Key idea: Multiple copies of large datasets accumulating hourly without cleanup
- Evidence: "Memory usage would step down every hour basically consistently"
#### โฑ๏ธ [04:30](https://youtu.be/hkejHxiCb5s?t=270) โ [H2] Proposed 500 Limit Fix
- Key idea: Limiting to 500 contributors per hour prevents memory overload
- Evidence: "500 an hour is 12,000 a day. So like even for like 50,000 plus contributors"
#### โฑ๏ธ [08:15](https://youtu.be/hkejHxiCb5s?t=495) โ [H1] Automatic Fix Philosophy
- Key idea: If Augur breaks data automatically, it should fix it automatically
- Evidence: "If Augur broke it automatically, Augger should fix it automatically"
#### โฑ๏ธ [12:00](https://youtu.be/hkejHxiCb5s?t=720) โ [H3] Bandit Security Scanning
- Key idea: Adding security scanning to catch sensitive information in logs
- Evidence: "Remove the logging of like sensitive information in the log like censoring API keys"
#### โฑ๏ธ [18:30](https://youtu.be/hkejHxiCb5s?t=1110) โ [H2] Database Connection Labeling
- Key idea: Adding application identifiers to database connections for debugging
- Evidence: "Everything had no name except for the connections that DBaver itself was making"
#### โฑ๏ธ [22:00](https://youtu.be/hkejHxiCb5s?t=1320) โ [H2] GitHub Performance Issues
- Key idea: GitHub experiencing widespread performance problems affecting builds
- Evidence: "GitHub's like status page has been all the rainbow colors"
#### โฑ๏ธ [25:45](https://youtu.be/hkejHxiCb5s?t=1545) โ [H3] Unusual Clone Activity
- Key idea: Repository seeing hundreds of daily clones, possibly from AI scrapers
- Evidence: "We've just been getting like hundreds of clones a day"
#### โฑ๏ธ [32:15](https://youtu.be/hkejHxiCb5s?t=1935) โ [H2] 8knot Heat Map Reintegration
- Key idea: Re-enabling file touch heat maps to identify unmaintained code areas
- Evidence: "Files have been touched at what times sort of in a grid view"
#### โฑ๏ธ [35:00](https://youtu.be/hkejHxiCb5s?t=2100) โ [H1] Materialized Views Migration Challenge
- Key idea: Current Alembic setup cannot handle materialized view migrations
- Evidence: "Our current Olympic like database migration config is able to do uh materialized views"
#### โฑ๏ธ [42:30](https://youtu.be/hkejHxiCb5s?t=2550) โ [H1] Repo Labor Table Size Problem
- Key idea: Massive repo_labor table causing performance issues and disk usage
- Evidence: "That table is a huge percentage of the disk utilization"
#### โฑ๏ธ [48:15](https://youtu.be/hkejHxiCb5s?t=2895) โ [H2] File Normalization Challenges
- Key idea: Files exist differently across pull requests, commits, and analysis contexts
- Evidence: "Files are added and removed routinely. So there isn't actually in augur anything that is the canonical here are the files"
#### โฑ๏ธ [55:00](https://youtu.be/hkejHxiCb5s?t=3300) โ [H3] Materialized Views as API Layer
- Key idea: Using materialized views to provide stable API while refactoring underlying schema
- Evidence: "Use the materialized views as sort of like an outer castle wall"
#### โฑ๏ธ [58:30](https://youtu.be/hkejHxiCb5s?t=3510) โ [H3] Long-term Schema Normalization Goals
- Key idea: Moving toward normalized database structure for better maintainability
- Evidence: "Think about okay at least make sure that all the small changes we're making are at least taking steps either towards or not away from like these larger goals"
## ๐ References
- [Alembic Documentation](https://alembic.sqlalchemy.org/)
- [PostgreSQL Materialized Views](https://www.postgresql.org/docs/current/sql-creatematerializedview.html)
- [SQLAlchemy ORM](https://www.sqlalchemy.org/)
## ๐ฃ๏ธ Paraphrase
- Augur's production system is struggling with memory management due to an hourly task that processes too many contributor records simultaneously, requiring a rate-limiting fix to prevent system crashes
- The integration between 8knot's analytical features and Augur's core database presents migration challenges that need systematic solutions for materialized view management
- Long-term database architecture improvements focus on normalizing file storage patterns while maintaining historical data integrity across different analysis contexts
## ๐ฐ Newsletter
The Augur development team tackled critical performance issues affecting production deployments this week. A memory leak in contributor data processing has been identified and addressed with rate-limiting improvements, ensuring stable operation for large-scale instances.
Looking ahead, the team is working on better integration between Augur and 8knot analytics, including improved database migration tools and schema normalization. These improvements will make Augur more maintainable and reduce the learning curve for new contributors and data scientists.
For developers running Augur instances, keep an eye out for the upcoming release with memory management fixes and consider the new materialized view features being developed for enhanced analytics capabilities.
Resources: [Learn WordPress](https://learn.wordpress.org/), [Developer Docs](https://developer.wordpress.org/), [WP-CLI](https://wp-cli.org/)
## โ
Action Items
#### DevRel
- Developer experience: Document materialized view setup process for 8knot integration
- Education: Create guidelines for database schema changes and migration best practices
#### OSPO
- Software Inventory: Monitor clone activity patterns to distinguish legitimate usage from scraping
- Security Management: Implement bandit security scanning for sensitive data detection
#### Community
- Maintainers: Establish automated data cleanup processes for collection errors
- Contributors: Research Alembic materialized view support and implementation patterns
## ๐งช Hypotheses
- Rate-limiting contributor processing to 500 records per hour will prevent memory exhaustion while maintaining data completeness over time
- Materializing database views can provide stable APIs while allowing underlying schema refactoring without breaking downstream applications
- Normalizing file storage across different analysis contexts will reduce database size and improve query performance
- AI scrapers are responsible for unusual repository clone patterns rather than legitimate user growth
### ๐ Methodology
- Memory usage monitoring during contributor processing with rate limits
- Performance benchmarking of materialized view refresh operations
- Database size analysis before and after schema normalization
- Clone pattern analysis correlation with merge activity
### โ Questions
- How can Alembic be extended to properly handle materialized view migrations in production environments?
- What is the optimal balance between data normalization and query performance for large-scale repositories?
- How can automated data cleanup be implemented without risking data integrity?
### ๐ฎ Future Research
- Investigation of semantic layer tools for data engineering improvements
- Analysis of file history tracking during major refactoring events
- Development of telemetry systems for better instance monitoring
### ๐ก Implications
- Practice: Production instances need careful memory management and rate limiting for background tasks
- Policy: Automated fixes should be prioritized over manual intervention for data consistency issues
- Security: Regular scanning for sensitive information in logs and code is essential
- Education: Database migration patterns need documentation for complex features like materialized views
### ๐ง Learning Styles Assessment
Reading level estimate: 14th Grade (technical discussion with domain-specific terminology)
#### ๐ Visual learners
- Present: Database schema discussions, table relationships mentioned
- Improve: Add entity-relationship diagrams for proposed schema changes
#### ๐ Aural learners
- Present: Full meeting recording available with detailed technical discussion
- Improve: Provide chapter markers for different topic segments
#### ๐ฃ๏ธ Verbal learners
- Present: Technical terms explained in context, analogies used for complex concepts
- Improve: Add glossary for database and performance terminology
#### ๐งฉ Kinesthetic learners
- Present: Code examples and practical implementation discussed
- Improve: Provide hands-on migration examples and testing procedures
#### ๐ง Logical learners
- Present: Clear cause-and-effect relationships for memory issues and solutions
- Improve: Add decision trees for schema design choices
#### ๐งโ๐คโ๐ง Social learners
- Present: Collaborative discussion format with multiple perspectives
- Improve: Add structured feedback mechanisms for proposed changes
#### ๐งโโ๏ธ Solitary learners
- Present: Detailed technical discussion allows for individual analysis
- Improve: Provide self-assessment questions for understanding
#### ๐ฟ Naturalistic learners
- Present: System health and sustainability considerations discussed
- Improve: Connect performance optimization to resource conservation
### ๐ Accessibility Assessment
#### Screen reader semantics
- Present: Meeting transcript provides full context
- Improve: Add structured headings and topic markers
#### Keyboard navigation
- Present: Standard video controls available
- Improve: Add keyboard shortcuts for topic navigation
#### Contrast and readability
- Present: Text transcript meets contrast requirements
- Improve: Provide high-contrast video player options
#### Text resizing and reflow
- Present: Transcript text scales appropriately
- Improve: Ensure technical diagrams remain readable when enlarged
#### Media and captions
- Present: Full transcript available
- Improve: Add synchronized captions to video
#### Forms and interactions
- Present: Basic video controls accessible
- Improve: Add accessible feedback forms for meeting content
### ๐ DEIB Assessment
#### Cultural breadth
- Present: Technical discussion accessible across cultural contexts
- Improve: Consider time zone impacts for global participation
#### Inclusive language
- Present: Technical terminology used appropriately
- Improve: Define acronyms and technical terms consistently
#### Neurodiversity support
- Present: Structured agenda and clear topic transitions
- Improve: Provide advance materials and clear time expectations
#### Representation
- Present: Multiple team members contributing to discussion
- Improve: Ensure balanced speaking time and participation opportunities
#### Psychological safety
- Present: Respectful technical disagreement and collaborative problem-solving
- Improve: Establish clear guidelines for technical critique and feedback
### โ
Logical Validity
#### Strong reasoning
- Deductive strength: Memory leak analysis follows clear cause-effect logic
- Inductive strength: Clone pattern analysis based on observed data trends
- Causal reasoning: Direct correlation established between hourly tasks and memory issues
- Analogical strength: Database normalization compared to established patterns
#### Fallacies
- False dilemma: Assumption that materialized views must be either manual or fully automated, missing hybrid approaches
- Appeal to authority: Relying on "John's comments" without fully exploring alternative perspectives
#### Tone of voice
- Overall tone: Collaborative and problem-solving focused with appropriate technical detail and mutual respect
### ๐ก๏ธ DARVO Analysis
- Deny: No denial patterns observed in technical discussion
- Attack: No attacks on individuals or groups
- Reverse victim/offender: No victim/offender dynamics present
- Emotional cues and rhetoric: Professional technical discussion without manipulation
## ๐ฏ Conclusion
The meeting successfully identified and addressed critical performance issues affecting Augur's production deployment while laying groundwork for significant architectural improvements. The rate-limiting solution for contributor processing provides immediate relief, while the longer-term schema normalization and materialized view integration efforts will enhance system maintainability and performance. The collaborative approach to problem-solving demonstrates effective technical leadership and community coordination.
## ๐งฑ Refactor Appendix
### ๐ Literature Split Pad
Purpose: Stage CEE units that become Literature notes.
Split level: H3
### [H1] Memory management requires rate limiting for background tasks
> [!quote] [Augur/8-Knot WG March 17, 2026](https://youtu.be/hkejHxiCb5s) by Augur/8-Knot WG via Zoom Meeting. Published 2026-03-17. Accessed 2025-01-02.
> "It's basically pulling in like 50,000 contributors every hour, not getting through all of them"
Demonstrates how unbounded background processing can exhaust system resources in production environments.
[view highlight](https://youtu.be/hkejHxiCb5s?t=165#H1) #performance #memory-management ID:rw_001
### [H2] Materialized views provide stable APIs during schema migration
> [!quote] [Augur/8-Knot WG March 17, 2026](https://youtu.be/hkejHxiCb5s)
> "Use the materialized views as sort of like an outer castle wall"
Strategic approach to maintaining API compatibility while refactoring underlying database structure.
[
---
## Full Transcript
[00:00] All<br>[00:01] right, welcome to the Auger meeting for<br>[00:04] March 17th, St. Patrick's Day,<br>[00:07] 26th.<br>[00:10] Um, so this is the one that you the<br>[00:13] limit hourly processing for.<br>[00:15] >> Yeah, that's so that's something I<br>[00:16] noticed. So I I noticed our prod over<br>[00:19] the weekend<br>[00:21] slash my week off last week um wasn't<br>[00:25] behaving great. I think the first one<br>[00:27] first issue was the just the large fi<br>[00:29] large large file downloads from<br>[00:32] scorecard which is a different issue but<br>[00:34] then it also had an issue where it was<br>[00:36] just running out of memory and I was<br>[00:38] like hang on I thought we fixed all the<br>[00:39] memory problems and I looked into it and<br>[00:41] it turns out that yeah it's basically I<br>[00:43] noticed that the after I restarted it<br>[00:46] the graph in graphana of the memory<br>[00:48] usage would step down every hour<br>[00:50] basically consistently and that was like<br>[00:52] huh we just enabled an hourly task I<br>[00:54] wonder if that's the task And so it I it<br>[00:57] did seem like it was exactly the issue<br>[00:59] we discussed in the maintainers call<br>[01:01] last week, which is for large instances<br>[01:03] with tens of thousands of contributors,<br>[01:06] many of them may or may not have the two<br>[01:10] date fields that this job is looking for<br>[01:13] to decide like, hey, has this been<br>[01:15] filled in with profile data?<br>[01:17] >> So it was basically pulling in like<br>[01:19] 50,000 contributors every hour, not<br>[01:21] getting through all of them, and just<br>[01:23] like it's going to continue. And then<br>[01:25] the ne the next time the next hour a new<br>[01:26] one starts. And so it was just making<br>[01:28] copies and copies and copies of<br>[01:31] >> those 50,000. I think I think this task<br>[01:33] has two copies of the 50k of all the<br>[01:35] records in memory.<br>[01:36] >> Yeah.<br>[01:37] >> And it was starting a new one every hour<br>[01:40] and not finishing. So it was just like<br>[01:41] eating it had eaten like huge amounts of<br>[01:44] memory. Um this one's still being<br>[01:46] tested.<br>[01:47] >> So okay,<br>[01:48] >> I'm still running it in our prod. Um,<br>[01:50] it's I don't see why it would go wrong.<br>[01:52] If you feel like just yolo merging it,<br>[01:55] if you wait a little bit, I can confirm.<br>[01:57] >> The only thing I see difference is, and<br>[02:00] tell me if I'm getting this wrong, the<br>[02:01] only real difference I see<br>[02:04] is that you've made the syntax a little<br>[02:07] bit neater and you've put a limit of 500<br>[02:10] items per query on it. But<br>[02:13] >> yeah, so that that's basically 500 per<br>[02:15] hour effectively.<br>[02:16] >> Yeah. Which just seems like an<br>[02:18] appropriate<br>[02:19] Yeah, that I so as I noted in the in the<br>[02:22] PR description, that might be a little<br>[02:24] bit low because I I think I initial when<br>[02:26] I was thinking of it, I was thinking of<br>[02:28] the 5,000<br>[02:30] >> limit on REST API calls and I was like,<br>[02:32] okay, 500's reasonable relative to that,<br>[02:34] but I wasn't I was this was me like at 6<br>[02:37] p.m. last night, tired brain. Um,<br>[02:40] >> wow.<br>[02:41] >> I was thinking that big instances are<br>[02:43] going to have multiple keys and so we a<br>[02:45] thousand might be a little bit more<br>[02:46] reasonable, but this will do the 500 an<br>[02:48] hour is 12,000 a day.<br>[02:50] >> So like even for like 50 50,000 plus<br>[02:53] contributors that haven't had profile<br>[02:55] data, this will like over a week this<br>[02:57] should this should get to full<br>[02:59] population.<br>[03:00] >> Yeah, it's going to tick through<br>[03:01] everything. And yeah, I mean I this is<br>[03:05] another one where I think it's pretty<br>[03:07] straightforward what you're doing here.<br>[03:09] And if it didn't fail on execution, the<br>[03:11] logic is<br>[03:13] simple and straightforward. You really<br>[03:16] haven't changed it other than<br>[03:18] there's there's really no there's no<br>[03:20] change in logic other than a a better<br>[03:22] syntax<br>[03:24] really. You just kind of laid it out<br>[03:25] better and this limit. That's it, right?<br>[03:27] >> Yep.<br>[03:29] Am<br>[03:32] I seeing that right?<br>[03:33] >> Yeah, that's that's the two commits that<br>[03:35] >> Yeah, I think the uh the third commit I<br>[03:38] think there might have been a third<br>[03:38] commit for something, but yeah, I think<br>[03:39] it was all just basically the formatting<br>[03:41] and the<br>[03:44] Yeah.<br>[03:47] Um,<br>[03:54] and then I think one thing if we're<br>[03:55] looking at things that we need for this<br>[03:57] coming release, um, I think it's also<br>[04:00] given that given John's comments in the<br>[04:02] the maintainers call last week, um, like<br>[04:05] since we had an error with how we were<br>[04:09] doing various parts of facade collection<br>[04:11] and contributor resolution that was<br>[04:13] causing data to be bad, like because it<br>[04:15] was kind of an automatic error in in<br>[04:17] augur. It should kind of be an automatic<br>[04:19] solution ideally. I don't know. I think<br>[04:23] Cali Callie's also been kind of<br>[04:24] brainstorming on things. It seems like<br>[04:26] you maybe had some items later in the<br>[04:27] agenda, but um I think that's going to<br>[04:31] be something that's important to include<br>[04:33] in<br>[04:35] >> which which John said which piece that<br>[04:37] John said.<br>[04:39] just just like he just I think he was<br>[04:42] just promoting the concept of<br>[04:44] >> if Augur broke it automatically, Augger<br>[04:46] should fix it automatically,<br>[04:48] >> right? Like I don't like it it<br>[04:50] >> as much as like<br>[04:51] >> I agree with that philosophy.<br>[04:52] >> Previous issues we've had like we've<br>[04:54] just been like hey like for the<br>[04:55] duplicate whatever duplicate repos issue<br>[04:58] >> it's just like hey Cali go run this<br>[05:00] giant script. Um, and it's like that<br>[05:02] that I mean I guess if we make the<br>[05:04] script nice and easy to use and put it<br>[05:05] in the release notes, like maybe we can<br>[05:07] rely on people to run it, but that's<br>[05:09] just another point of failure of like,<br>[05:10] oh crap, someone didn't read all the<br>[05:13] release notes from they upgraded from an<br>[05:14] old version and didn't see it<br>[05:16] >> and now they're on a new instance that<br>[05:18] has duplicate or like something's broken<br>[05:20] because<br>[05:21] >> that happen. Whereas if we if we have it<br>[05:24] sort of somehow automatic<br>[05:27] >> then we we can kind of be more sure that<br>[05:29] everyone's in a a known consistent<br>[05:30] state.<br>[05:33] >> I think that makes sense. Um so on the<br>[05:36] contributor fixing I've been testing a<br>[05:39] set of scripts that would need to be<br>[05:41] then rolled into augur. Um<br>[05:45] not quite done testing them yet.<br>[05:49] And so I think that based on what you're<br>[05:52] saying, I think that's I think that's<br>[05:53] what you're saying.<br>[05:56] >> Yeah, I think I think we'd eventually<br>[05:57] want to roll them into Auger. I'd want<br>[05:58] to make sure that they're like obviously<br>[06:00] robust and good good quality. Um<br>[06:03] >> I think Callie's also been sharing some<br>[06:04] notes with me like just we've got<br>[06:06] obviously we've got our own internal<br>[06:07] task tracking of what do we do about our<br>[06:10] instance. So I think I think um once<br>[06:12] Callie is kind of back from<br>[06:15] whatever she's working on um she'll<br>[06:17] probably like have some idea like there.<br>[06:19] I think<br>[06:21] we're kind of taking advantage of like<br>[06:23] the the the mental space of being out on<br>[06:26] break and then being able to sort of<br>[06:28] ruminate on things in the background. Um<br>[06:30] so hopefully there's maybe some<br>[06:31] interesting ideas that come from that<br>[06:32] that we can merge with your scripts and<br>[06:34] and just kind of come to a solution<br>[06:35] that's like<br>[06:37] >> sorry reliable for everyone.<br>[06:38] >> You're on break. What<br>[06:40] >> So Cali and I were both on PTO last week<br>[06:42] and I think Callie's taking a fair few<br>[06:44] days.<br>[06:45] >> Oh, okay. I didn't realize that. Yeah,<br>[06:48] >> because you were on a call last You were<br>[06:49] on a maintainer call last week.<br>[06:50] >> I Yeah, I I sometimes I'll try and pop<br>[06:52] in because the maintainers call the it's<br>[06:54] just regularly scheduled call like<br>[06:56] that's I usually try and pop into those<br>[06:58] regardless. But<br>[06:59] >> if you take PTO, you should take PTO as<br>[07:02] this is a life lesson from a person who<br>[07:04] hasn't always done that.<br>[07:07] Um you do burn out if you don't take<br>[07:10] your PTO.<br>[07:12] >> Yeah. I know generally I was I was<br>[07:13] generally doing it all but um<br>[07:15] >> I'm not yeah I'm not my intent my<br>[07:17] intention is only to provide<br>[07:20] uh the less the purpose of my life may<br>[07:22] be to serve as a warning to others<br>[07:25] and I have I have uh done work on PTO in<br>[07:28] fact I wrote a good deal of augur<br>[07:31] um the augur schema in um bise in uh<br>[07:36] 2018<br>[07:45] So is this band this bandit thing this<br>[07:48] is probably in response to my<br>[07:51] observation that bandit was just<br>[07:53] littering the security tab.<br>[07:55] >> Um that that and also I noticed that I<br>[07:58] think there was a PR that got filed. I<br>[08:01] forget which one. It's probably linked<br>[08:02] in the underlying issue, but um there it<br>[08:05] was also<br>[08:07] uh do kind of spamming some of the PR<br>[08:09] reviews with unit test things.<br>[08:12] >> That's what I thought. I saw that too.<br>[08:15] >> I sort of just grabbed I think I just<br>[08:17] grabbed that line of PI project tommo<br>[08:19] from the I think from the bandit docs.<br>[08:21] So it should work. Um given that we also<br>[08:23] have the R directory is also called<br>[08:24] tests. But<br>[08:28] um yeah, that would that's probably<br>[08:29] going to help cut through it. I I did I<br>[08:31] did sort of add Bandit as sort of a<br>[08:33] redundant because I think I know GitHub<br>[08:34] already does their own they've got their<br>[08:36] own code scanning thing,<br>[08:37] >> but I'm not I wasn't sure it was<br>[08:39] necessarily catching because I know I<br>[08:41] know there's probably a lot of just like<br>[08:43] I've I've made PRs just in the last<br>[08:47] maybe not last few months but like re<br>[08:49] some relatively recently since Docker<br>[08:51] started working in Augur to like remove<br>[08:55] the logging of like sensitive<br>[08:57] information in the log like censoring<br>[08:59] API keys and stuff like just easy stuff<br>[09:02] like that. So I just was thinking like<br>[09:04] hey maybe this is another layer to to<br>[09:05] catch more of that kind of thing just so<br>[09:07] that people don't look at Augur and like<br>[09:10] oh my god is this a security nightmare.<br>[09:12] Um,<br>[09:13] >> yeah.<br>[09:14] >> I mean, I just<br>[09:15] >> making something that easy so broken.<br>[09:17] Like, what else is broken, right?<br>[09:21] >> But I threw that in the milestone 9 like<br>[09:23] that's um Oh, that this is a different<br>[09:26] Yeah, this is we're<br>[09:27] >> Yeah, I already<br>[09:29] that was so straightforward. I<br>[09:32] >> saw no reason not to.<br>[09:35] >> Um,<br>[09:37] >> this is effectively<br>[09:40] sort of a logging change anyway. So this<br>[09:42] isn't any<br>[09:43] >> and version. When you say version, that<br>[09:46] made me think version of augur.<br>[09:49] >> Yeah, version of augur. I the PR has<br>[09:52] actually changed from that now because I<br>[09:53] was trying to import the version number<br>[09:55] of augur from that uh metadata file,<br>[09:59] >> but it was it was causing issues because<br>[10:01] I think that's not technically part of<br>[10:02] the augur like project tree like augur<br>[10:06] module. So it couldn't import it. And so<br>[10:08] I just I think I just defaulted to like<br>[10:10] I think there's one place where we<br>[10:11] already import the version number. So I<br>[10:13] was able to reuse that. All the other<br>[10:15] places I just have augur and then like a<br>[10:17] little piece of text of like oh this is<br>[10:19] coming from the CLI, this is coming from<br>[10:21] the API, this is coming from whatever.<br>[10:24] Um<br>[10:26] I'm going to double check to see if I<br>[10:27] actually<br>[10:28] >> So what is what is setting the augur<br>[10:29] version? Um,<br>[10:32] what's it? I just I just<br>[10:34] >> No, the the version is this. So, this<br>[10:35] this is just setting a string that<br>[10:36] basically identifies which application<br>[10:38] the database connections are coming from<br>[10:40] cuz I like I've been I was looking in<br>[10:42] DBver just to see the list of<br>[10:44] connections and like I saw some that<br>[10:47] were obviously from the user account I<br>[10:49] created for for Graphfana access.<br>[10:52] >> Um, and then there was a couple, but<br>[10:54] basically everything had no name except<br>[10:56] for the connections that DBaver itself<br>[10:57] was making. And I guess they they've set<br>[10:59] it up to to set their like set like hey<br>[11:02] this is dbaver whatever. Um so that you<br>[11:06] know like this connection is like which<br>[11:08] application like where this connection<br>[11:09] is coming from basically.<br>[11:11] >> Um so I was just like this is sort of<br>[11:13] just a like nice to have quality of life<br>[11:15] like<br>[11:17] >> almost no one's probably going to even<br>[11:18] notice this but it might help with<br>[11:20] dugging of<br>[11:21] >> connections. Yeah. like um because I<br>[11:24] have my 8 knot server on a different IP<br>[11:28] than Augur, I can now tell the<br>[11:32] difference in the connections, but<br>[11:33] before that I really couldn't. So, I<br>[11:37] think this would be pretty helpful.<br>[11:42] I don't know. probably wait for someone<br>[11:44] else to look at it just because<br>[11:46] >> yeah this is this is I think this was I<br>[11:47] like I mentioned this um if you look at<br>[11:49] the milestone of this PR it's I put it<br>[11:52] in 0.94 like I was like okay not this<br>[11:54] next release but the one after just<br>[11:56] >> this.93<br>[11:57] >> this isn't that important it's just it<br>[11:59] like I I think I'll usually maintain two<br>[12:02] milestones open at any given time is the<br>[12:04] the next release and the release after<br>[12:06] so I can kind of like okay this is more<br>[12:07] immediate priority than and this is like<br>[12:10] we get there when we get there kind of<br>[12:13] Yeah.<br>[12:14] >> So,<br>[12:16] um<br>[12:22] I don't<br>[12:22] >> And I'm guessing these builds are just a<br>[12:24] timeout crap.<br>[12:26] >> Um both of them failing is interesting.<br>[12:30] I need to I would probably that might be<br>[12:32] worth looking into. Uh, let me rerun<br>[12:35] them before you do that.<br>[12:37] Just because like depending on I' I've<br>[12:41] seen the<br>[12:43] I've seen it fail when<br>[12:47] GitHub gets busy, right?<br>[12:49] >> Oh, GitHub. Yeah. No, GitHub has I think<br>[12:52] GitHub's like status page has been all<br>[12:56] the rainbow colors in the last<br>[12:58] >> Yeah.<br>[12:58] >> I think they've been getting it pretty<br>[13:00] pretty hard with the AI scrapers. Um,<br>[13:02] >> yeah. I mean, I know<br>[13:05] Oh,<br>[13:05] >> during our maintainer call last week, my<br>[13:08] GitHub was extremely slow.<br>[13:10] >> Yeah, it was I think it was glitching<br>[13:12] out pretty hard for me as well. Um I<br>[13:14] also I bet I bet our that observation<br>[13:18] you made on our insights tab about how<br>[13:20] um we've just been getting like hundreds<br>[13:22] of clones a day.<br>[13:23] >> Oh, you think that's probably AI<br>[13:25] scrapers? That would make sense. Well, I<br>[13:27] don't but the thing the thing that is<br>[13:28] quite is making me wonder more is like<br>[13:30] if it wasn't AI scrapers and it's people<br>[13:32] actually using Augur then<br>[13:34] >> what do we hear from<br>[13:35] >> people more people using Augur means<br>[13:37] potentially exponentially more calls<br>[13:40] made to GitHub's API which they might I<br>[13:43] don't know if they'll be a like which is<br>[13:45] probably going to look a little bit like<br>[13:46] a scraper and so it's like I feel like<br>[13:49] we're almost contributing to GitHub's<br>[13:51] downtime problems<br>[13:53] not in a like bad way just in a like,<br>[13:56] hm, we we have an application that<br>[13:58] hammers their API pretty hard.<br>[14:02] >> Yeah. I just I mean, I still don't<br>[14:04] understand where who are all these<br>[14:06] people using Augur<br>[14:09] >> or who are all these people cloning<br>[14:10] Augur. I think it's bots. I love I love<br>[14:12] the visual clones in the last 14 days,<br>[14:15] too. It's like it looks like it just<br>[14:16] goes through the roof. I love that. Hang<br>[14:18] on, let me take a screenshot of that.<br>[14:20] >> That was yesterday. Like that's just<br>[14:21] because yesterday it was uh 470,<br>[14:25] but the day before that was a small<br>[14:27] number.<br>[14:28] >> That's just hilarious. I I just love the<br>[14:30] meme of that image.<br>[14:35] >> Yeah.<br>[14:37] So like, yeah, I don't know. Unique<br>[14:39] visitors seems pretty normal.<br>[14:43] Total views seems like these seem like<br>[14:46] normal numbers. It's the clone numbers<br>[14:48] that seem whack. It it's I bet you it's<br>[14:51] AI scrapers.<br>[14:53] >> Yeah. And I looked I looked and I've<br>[14:56] looked around the GitHub API and there's<br>[14:58] really no way to get any information<br>[15:00] about who's cloning it.<br>[15:02] >> You you you really can't like I don't<br>[15:04] you wouldn't you wouldn't be able to<br>[15:05] know. I don't think<br>[15:08] >> the best GitHub could probably give you<br>[15:10] is an IP address, but then they're not<br>[15:11] going to be that's like technically PII<br>[15:13] and they're not going to share that. Um,<br>[15:16] >> yeah, I thought about putting in an<br>[15:18] optional telemetry<br>[15:20] um<br>[15:22] snippet, but just because I'm curious,<br>[15:27] >> it might be I wonder if it's worth like<br>[15:29] because I wonder if we could do that<br>[15:30] kind of diagnostic script idea of like,<br>[15:33] hey, like do a little selfch check on<br>[15:34] your augur instance and then that can be<br>[15:37] kind of like we we can have it generate<br>[15:38] a little like text file format that's<br>[15:40] like, hey, here's a report like here's a<br>[15:42] little debugging report that you can<br>[15:43] submit if if you have an issue and then<br>[15:46] just encourage people to contact us with<br>[15:47] it or maybe I know places like Pi like<br>[15:50] applications like Pi Hole will have an<br>[15:51] option in their little debug like their<br>[15:54] little like self test menu like hey<br>[15:55] upload this report and make like it'll<br>[15:57] upload it to like a paste bin site or<br>[15:59] something or their own version of that<br>[16:02] >> and then give you a link that you can<br>[16:03] share in your issue or something. So<br>[16:05] maybe maybe we can do that. I don't<br>[16:07] know.<br>[16:09] I want to be careful not to like turn<br>[16:11] too many people away with with<br>[16:12] telemetry, but<br>[16:13] >> Yeah. No, exactly. It would have to be<br>[16:15] optional. I actually like your idea<br>[16:17] better because we're offering to help.<br>[16:20] And honestly, if you're running augur,<br>[16:22] you're going to want to check it and<br>[16:23] you're probably going to have something<br>[16:24] to submit if you've been running it for<br>[16:26] any period of time. And if nobody sends<br>[16:29] us anything and we've still got all<br>[16:30] these cloners, then I know there's some<br>[16:32] kind of odd bot activity happening. I<br>[16:35] also wonder too if this clones graph is<br>[16:38] it counting fresh clones or is it<br>[16:40] counting pull like pulls of new commits<br>[16:43] because if we've got like this almost<br>[16:45] looks like it could just be like a bunch<br>[16:49] of people<br>[16:51] who just have auger cloned already and<br>[16:53] are just periodically pulling for<br>[16:55] updates like if and so like I because I<br>[16:57] wonder so when were the dates that we<br>[16:59] last<br>[17:01] merged stuff to main because I know we<br>[17:04] did just now<br>[17:05] >> two months since since we um Oh, since<br>[17:09] we merged Yeah, we actually been merging<br>[17:11] stuff to Maine with pretty regrettity,<br>[17:15] >> right?<br>[17:16] >> Yeah. So, well, I'm curious if I'm<br>[17:17] curious if some of those dates line up<br>[17:18] with some of those big spikes on that<br>[17:20] graph because the LA So, the last one I<br>[17:22] see is March 12th. What was the What was<br>[17:24] the graph again?<br>[17:26] Uh,<br>[17:29] we only get two weeks, but let me<br>[17:32] >> Yeah, we can't I don't know if we can go<br>[17:33] back too far, but I'm like<br>[17:35] >> we can only go back two weeks unless<br>[17:37] we're pulling the data regular.<br>[17:38] >> Okay, March. So, March 12th. So, that<br>[17:40] doesn't really line up with that spike,<br>[17:41] but was it what was the<br>[17:43] >> like Okay, the 12th to the 16th, that's<br>[17:45] four days, and today's a Tuesday.<br>[17:49] >> So, March 10th March 10th was a a day we<br>[17:52] merged. There was some stuff on Maine.<br>[17:54] And that does line up with that big<br>[17:56] spike<br>[17:58] uh with the that sort of middle spike.<br>[18:00] >> Actually, we merged we merged a couple<br>[18:02] things. We merged quite a few things on<br>[18:04] March 10th.<br>[18:06] >> Yeah, that that would be the maintainers<br>[18:08] meeting. So,<br>[18:09] >> and then March 4th was the one before<br>[18:10] that which does line which lines up with<br>[18:12] the previous spike. So, I I I do sus I<br>[18:14] suspect it's I I wonder if that could<br>[18:16] just be I mean I imagine some amount of<br>[18:19] it is AI scrapers.<br>[18:21] I some of it is probably also just<br>[18:23] people like who have Auger cloned are<br>[18:25] like updating their clones which I guess<br>[18:27] is a good sign that people are keeping<br>[18:28] their instances up to date.<br>[18:30] >> Yeah. I mean anybody restarting Docker<br>[18:32] is going to pull this.<br>[18:35] >> Uh restarting yeah if you update your<br>[18:38] Docker install it'll you'll do that but<br>[18:39] I that's not necessarily an automatic<br>[18:41] thing.<br>[18:42] >> Okay. Um<br>[18:44] anyway is so I also wanted to I know uh<br>[18:47] there was kind of some efforts to<br>[18:48] include more 8not in these meetings as<br>[18:50] well. So I had I I think I know Kaio's<br>[18:52] Kyle's out today like he mentioned on<br>[18:54] Slack but<br>[18:55] >> um I did have some kind of updates that<br>[18:57] I think might be relevant to sort of<br>[18:58] bring<br>[19:00] >> you it's just in the agenda if you want<br>[19:02] to if you wanted to pull that up. Um<br>[19:04] >> but it's basically just um so we<br>[19:07] recently we're working on currently is<br>[19:10] reenabling the heat there are some heat<br>[19:12] map diagrams to kind of like which files<br>[19:15] have been touched at what times sort of<br>[19:17] in a in a grid view to help help you<br>[19:20] kind of see is a particular group of<br>[19:23] files or a particular subset of the repo<br>[19:24] like missing a maintainer and not been<br>[19:26] touched in a long time. I.e. I imagine<br>[19:28] you'd see something like jump start in<br>[19:30] our repository to that because that<br>[19:31] folder hasn't been touched in two years.<br>[19:33] Um, but it's just kind of another health<br>[19:35] metric. I think we disabled it because<br>[19:36] the queries were taking a really long<br>[19:38] time to run and we recently I think<br>[19:40] since we disabled it. Um, we we there's<br>[19:44] been other improvements to augur like<br>[19:46] ignoring being able to ignore repos. And<br>[19:49] so it's we're we're slowly bringing back<br>[19:52] we're trying to maintain we're trying to<br>[19:53] bring that back into 8 and re like<br>[19:55] reenable the queries move them into<br>[19:57] materialized views things like that. So<br>[20:00] there, so the first point with this is<br>[20:01] that there's now that we have some<br>[20:03] additional materialized to use to bring<br>[20:05] into auger upstream.<br>[20:06] >> Um,<br>[20:08] >> yeah,<br>[20:09] >> I'm not sure. I don't know<br>[20:10] >> especially if they're in especially if<br>[20:12] eight's expecting them.<br>[20:14] >> Yeah. So the problem with that is though<br>[20:16] I don't think our current Olympic like<br>[20:18] database migration config<br>[20:21] is able to do<br>[20:24] uh materialized views. I think a lot of<br>[20:26] our materialized views have just existed<br>[20:28] forever and that like they're in some of<br>[20:30] the old SQL scripts that are like the<br>[20:32] legacy migrations.<br>[20:33] >> I think Kelly and I created most of the<br>[20:35] materialized views like four years ago,<br>[20:38] maybe five year five years ago.<br>[20:40] >> Yeah. So do you think that was<br>[20:41] potentially before we added Olympic?<br>[20:47] it we were using. So it was it was kind<br>[20:49] of the state that you saw when you<br>[20:51] started working on augur where we had<br>[20:52] that giant script that created<br>[20:54] everything up to a point and then<br>[20:56] everything after that was Olympic but I<br>[20:59] guess no it was yeah so you know how we<br>[21:02] >> it sounds like<br>[21:04] >> yes I I think it was possibly before<br>[21:06] Olympic. Yeah, because it sounds like it<br>[21:09] sounds like a lot of like some of the<br>[21:10] stuff that Cali was referencing in that<br>[21:11] issue for bringing these data migration<br>[21:14] these uh materialized views in was<br>[21:17] looking at some of those older SQL files<br>[21:18] and I'm like we shouldn't edit those<br>[21:20] because a they're for older migrations<br>[21:22] and only apply to people upgrading from<br>[21:24] that old versions of augur and also like<br>[21:27] that's not going to apply to people<br>[21:29] upgrading their instance from this last<br>[21:32] version to this version. So I think we<br>[21:34] need to figure out a better way like a<br>[21:36] figure out a way to get Olympic to see<br>[21:38] materialized views and be able to define<br>[21:41] those in<br>[21:43] I don't know how we would do that like<br>[21:45] define them in maybe a Python model in<br>[21:48] our<br>[21:50] um in SQL Alchemy or something just<br>[21:52] because I like I think we definitely<br>[21:53] need to we need to have those versioned<br>[21:56] and controlled the same way we do our<br>[21:58] regular schema. Um<br>[22:00] >> yeah I'm just where are those scripts?<br>[22:03] >> Uh they are in application DB. It's in<br>[22:06] the it's alongside I think some of them<br>[22:09] are alongside all the other if you go to<br>[22:11] schema. No not sorry I lied. I said DB.<br>[22:14] Uh<br>[22:14] >> if you go to schema<br>[22:16] >> I think YIC there's there's a like some<br>[22:19] of the legacy migrations there's some<br>[22:21] files in there. I think there's several<br>[22:23] SQL files everywhere and<br>[22:26] I don't remember uh<br>[22:29] actually<br>[22:30] >> materialized view update. So yeah,<br>[22:31] explore materialized view update. This<br>[22:33] is three years ago.<br>[22:34] >> What's in that? Is that Oh, is no that's<br>[22:37] an Olympic file. What's what's in that?<br>[22:39] Um<br>[22:42] number four. Can you open that one?<br>[22:44] >> Yeah.<br>[22:45] >> Explore the one you were just looking<br>[22:46] at.<br>[22:47] >> Yeah.<br>[22:47] >> I love the um lexical graphic ordering.<br>[22:51] >> Yeah. I mean<br>[22:52] >> add material. So what's that function<br>[22:53] do? Add materialized views 15. Oh,<br>[22:56] that's just<br>[22:58] >> that's just raw. Okay. So I guess we<br>[22:59] could do it the raw SQL way. That's I<br>[23:02] don't like that.<br>[23:05] But<br>[23:08] it would be nice if we could get Olympic<br>[23:10] to like generate migrations to<br>[23:14] an app.<br>[23:14] >> I mean syntactically syntactically views<br>[23:17] are queries, right? materialized views<br>[23:20] are just physically persisted queries<br>[23:23] because that's a lot faster.<br>[23:26] Um,<br>[23:27] >> yeah,<br>[23:28] >> like logically for what a limbic does, I<br>[23:32] would wonder if<br>[23:34] it could support all the things that we<br>[23:36] need in a materialized view. Like um one<br>[23:40] of the things you may or may not know<br>[23:41] this that you want to make sure to have<br>[23:42] in any materialized view, you want to<br>[23:44] have a primary key because without a<br>[23:47] primary key, you can't refresh data<br>[23:49] concurrently. And if you can't refresh<br>[23:52] data concurrently, that locks that<br>[23:54] materialized view from any connection or<br>[23:57] use while it's being refreshed.<br>[24:03] Yeah, I mean that that's less of a<br>[24:04] problem for 8 because we we just<br>[24:06] regenerate all the materialized views<br>[24:07] when we clone the DB, but that's that's<br>[24:10] a very not typical setup because we're<br>[24:14] operating in such a scale that we can't<br>[24:16] have augur collection and 8 not running<br>[24:19] off the same DB or at least that was<br>[24:22] when we were behind on collection. So I<br>[24:24] think now it might be better now that<br>[24:25] we're caught we're relatively caught up.<br>[24:27] But<br>[24:27] >> yeah,<br>[24:28] >> I I'd like to make some more performance<br>[24:30] fixes before we try and remerge those<br>[24:31] two. Um, but speaking of performance<br>[24:33] too, I think one of the other things<br>[24:34] that this materialized view conversation<br>[24:36] brought up was I I was I was kind of<br>[24:39] poking around and I noticed<br>[24:41] >> I I filed an issue a little while ago<br>[24:43] about just the sheer size of the repo<br>[24:45] labor table and I realized<br>[24:49] >> that a lot of the queries for this a lot<br>[24:51] of the materialized views for this heat<br>[24:52] map join on that table. So I I suspect<br>[24:56] that the the bulk of that table is<br>[24:59] potentially what was causing this query<br>[25:01] to be so slow in the first place that we<br>[25:03] disabled it in 8 knot to begin with.<br>[25:06] >> Yeah. Um<br>[25:06] >> I that table is a huge percentage of the<br>[25:10] disk utilization<br>[25:12] >> because it's persisting the analysis<br>[25:15] from all time.<br>[25:17] um that's been extremely useful in uh<br>[25:21] I'm we're working my research group is<br>[25:24] working on understanding the evolution<br>[25:26] of complexity of software uh with the<br>[25:29] dawn of AI and having that history has<br>[25:32] been of phenomenal use to us. Uh however<br>[25:36] it is a giant table and the things that<br>[25:39] are useful could in could almost<br>[25:42] certainly be summarized down into a<br>[25:44] smaller table.<br>[25:46] So what I'm not even saying like remove<br>[25:48] the like I think having that history is<br>[25:50] useful. I'm just thinking that there's a<br>[25:52] lot of duplication between what we're<br>[25:54] storing in this table and what's<br>[25:55] existing in other places. Like I think<br>[25:58] we already have like PR files commit the<br>[26:01] commits table is already effectively<br>[26:02] commit files. We just need to rename<br>[26:05] that and fix that. But I think it might<br>[26:08] make sense to move towards Marie having<br>[26:10] a table that's like files that is<br>[26:12] referenced in other from all the other<br>[26:14] places that we can have files and then<br>[26:17] because then the repo labor is<br>[26:18] essentially just sort of analysis of<br>[26:20] those files, right? like it's looking at<br>[26:21] how many lines of this code is comments<br>[26:24] versus code versus I I forget exactly<br>[26:26] what it looks at,<br>[26:27] >> but it's got those like like the B the<br>[26:29] core of that table is like five columns<br>[26:31] that are just small integers.<br>[26:33] >> So,<br>[26:34] >> so I think if we can dduplicate storing<br>[26:36] like the file paths and the file names<br>[26:38] and things and put those in a different<br>[26:40] table and have that be a foreign key<br>[26:42] reference. So we did try that initially<br>[26:47] and the reason that we we sort of<br>[26:50] evolved away from it and I'm not saying<br>[26:53] that this is an unsolvable problem. I'm<br>[26:54] saying that we decided not to try to<br>[26:56] solve it.<br>[26:58] The when you're analyzing the pull<br>[27:00] requests and the files that's the files<br>[27:02] in that pull request at that point in<br>[27:04] time. When you're analyzing repo labor,<br>[27:08] those are the files in that repo at that<br>[27:11] point in time. Files are added and<br>[27:14] removed routinely. So<br>[27:18] there isn't actually in augur anything<br>[27:21] that is the canonical here are the files<br>[27:24] in this repo except for the most recent<br>[27:27] uh commit files. But but we don't<br>[27:30] actually have a a like a file reference<br>[27:34] that is independent from some analysis<br>[27:38] of the file whether it's pull request<br>[27:40] files uh commit files or the repo labor<br>[27:44] files.<br>[27:46] So there is no there is no list of files<br>[27:49] historically and I think we would need<br>[27:51] something like that to have a central<br>[27:53] files table because those three entities<br>[27:56] are going to be they'll have different<br>[27:58] inventories of files at any moment in<br>[28:01] time. There'll be one or two files that<br>[28:04] are new in one of them and one or two<br>[28:06] files that are missing in one of them.<br>[28:08] Do you see what I'm saying?<br>[28:09] >> Yeah. I think that would still be um you<br>[28:13] could still have that even with sort of<br>[28:15] centralizing the files table cuz like<br>[28:17] the files table could essentially like<br>[28:18] if any of like whether it comes from a<br>[28:20] PR or a commit or whatever like there's<br>[28:23] information that is the same across all<br>[28:25] of those sources where it's like what<br>[28:27] file is it like some of the some of the<br>[28:30] basic there's things that are common to<br>[28:31] the concept of a file I think<br>[28:35] >> like how putting those in one table<br>[28:36] would we might be able to do some<br>[28:38] dduplication but that's a a issue, but I<br>[28:42] think we'd still be able to look at it<br>[28:43] from the different views because it'll<br>[28:45] all be foreign key. Like we could do<br>[28:47] okay pull requests like we could have a<br>[28:51] table that links pull requests and the<br>[28:52] files that are in that pull request and<br>[28:54] you could do a join through that.<br>[28:57] >> What about<br>[28:59] So I'm just I'm just like thinking<br>[29:00] through the problems that we had when we<br>[29:02] tried to do this.<br>[29:05] What about when<br>[29:09] like I have a centralized list of files<br>[29:12] when there's a significant refactoring?<br>[29:15] Sometimes nearly every file moves<br>[29:18] around. So now what do we do with the<br>[29:21] history of the file?<br>[29:23] Do we keep that in a table? Because if<br>[29:26] we're using a centralized files<br>[29:28] inventory, the pull request files and<br>[29:32] the repo labor files path, they both<br>[29:35] need the history. They need to see the<br>[29:37] files at the moment in time that those<br>[29:40] analyses ran.<br>[29:42] Yeah, we don't need like I don't think<br>[29:45] we need to necessarily be trying to like<br>[29:48] like we could still store<br>[29:51] like multiple records for like if if<br>[29:53] you're looking at a particular like set<br>[29:57] of rows that are like for for this repo<br>[29:59] and like what like you you could like<br>[30:01] for example if you were to query this<br>[30:03] hypothetical future files table for a<br>[30:06] given repo I think it would be<br>[30:08] reasonable for you to see like okay<br>[30:10] here's like a thousand entries for<br>[30:13] basically the same file path all with<br>[30:16] different collection dates like okay<br>[30:17] this file was seen at all these<br>[30:19] different times maybe half of them are<br>[30:21] from a PR half of them are from a commit<br>[30:24] like several of them are like you could<br>[30:26] kind of<br>[30:29] I I don't I mean and then you could get<br>[30:31] into some of dduplication where like<br>[30:32] okay maybe it's one file and then but<br>[30:35] you could access it from from either a<br>[30:37] foreign key from the like pull request s<br>[30:41] or you could do a foreign key from the<br>[30:42] repo labor like multiple things looking<br>[30:45] at that one file but you'd still have<br>[30:47] several entries for that file path as<br>[30:50] it's like over time like every time it<br>[30:52] changes bas or something like<br>[30:54] >> okay<br>[30:55] >> uh you it it sort of depends on how you<br>[30:57] lay out the tables but I think we you'd<br>[30:59] still have the history I think I think<br>[31:00] it's entirely possible to still keep<br>[31:02] like okay this file like this file got<br>[31:05] added here<br>[31:08] and and to be able to find ways of like<br>[31:10] where it's where it was last seen and<br>[31:12] stuff. Um,<br>[31:14] >> okay. I mean,<br>[31:15] >> it's definitely going to require a lot<br>[31:16] of thinking through and planning, but I<br>[31:17] I think that's definitely a<br>[31:20] worthy direction to try and go in. Like,<br>[31:22] so I think I think a database should<br>[31:23] really be trying to map these concepts<br>[31:26] of like, okay, here is a file, here is a<br>[31:28] pull request, here is the relationship<br>[31:30] between the two, like, okay, here's how<br>[31:32] a file relates to a commit. um<br>[31:37] and try and kind of move towards<br>[31:38] normalizing things a little bit.<br>[31:40] >> So I have so one question I will have I<br>[31:43] have for Cali who's not here I<br>[31:45] understand but is the foreign analytical<br>[31:49] utility of that which I think what I'm<br>[31:52] hearing is it would lower the learning<br>[31:53] curve basically like a lot of these<br>[31:55] changes would reduce the learning curve<br>[31:57] for data scientists leveraging augur<br>[32:00] right?<br>[32:03] Yeah, that sounds that I think that's a<br>[32:06] yeah, that would probably be a benefit.<br>[32:07] Like that's I think that's just a<br>[32:08] benefit to helping kind of normalize the<br>[32:11] tables a little bit in like maybe don't<br>[32:13] go too overboard, but like yeah, having<br>[32:16] like having just a one place where you<br>[32:18] can look at files.<br>[32:20] Um, and then you can you can get<br>[32:23] different views of that depending on<br>[32:24] whether you're sort of joining into that<br>[32:26] table from a poll request or a commit or<br>[32:29] a repo labor or something. So then the<br>[32:32] then another question becomes is<br>[32:35] does the cost of doing all of this<br>[32:39] coordination when we're collecting data<br>[32:42] make sense or is this an example of a<br>[32:46] place where perhaps we need some kind of<br>[32:50] analytical version that we extract data<br>[32:53] from augur into.<br>[32:57] Um, I think that I think the costs<br>[32:59] during collection are probably<br>[33:00] relatively negligible. I know we could<br>[33:02] probably rely on I mean we can like SQL<br>[33:05] Alchemy does have pretty strong support<br>[33:08] for like doing relationships and things<br>[33:09] and and we could we could kind of<br>[33:12] rely on it a little bit more to like<br>[33:15] handle. Okay, we're going to just create<br>[33:17] this object and populate this like files<br>[33:22] files thing with whatever. And then it<br>[33:24] just sort of figures out where that<br>[33:25] table where that goes in the table. Um<br>[33:30] I I think I was thinking of something<br>[33:32] else too. Um<br>[33:34] we another one of the approaches I was<br>[33:36] also thinking of as far as like moving<br>[33:37] towards sort of trying to normalize our<br>[33:39] database is yeah taking advantage of<br>[33:41] things like materialized views to sort<br>[33:45] of since since 8n's already basically<br>[33:48] relying on the API the database schema<br>[33:50] anyway largely through materialized<br>[33:52] views I think we can kind of take<br>[33:54] advantage of that and use the<br>[33:55] materialized views as sort of like an<br>[33:56] outer castle wall of here is our sort of<br>[34:01] suggested like we'd rather you query<br>[34:03] these. Um, and then so then we if we<br>[34:07] need to shuffle other tables around, we<br>[34:10] can like if we we make a change to the<br>[34:12] schema for like some of the like PR<br>[34:15] files or something, we can make that<br>[34:18] change both in the in the core schema<br>[34:20] and in the materialized view such that<br>[34:22] the output of the materialized view<br>[34:24] doesn't change and so downstream<br>[34:26] applications don't like really have to<br>[34:28] worry about it. same with if we slightly<br>[34:30] tweak how we're processing the data in<br>[34:32] one of our REST endpoints, but the<br>[34:34] output JSON is still the same. Like I<br>[34:36] think we can kind of move towards that<br>[34:39] with materialized views or or I think<br>[34:41] even some of the um<br>[34:42] >> I think Michael in in the data<br>[34:44] engineering channel was trying to start<br>[34:46] a discussion on some like semantic<br>[34:47] layers and more sort of data tools for<br>[34:51] what it sounds like is doing a very<br>[34:52] similar thing. Um, so I think maybe we<br>[34:55] could do that and we could just sort of<br>[34:57] maybe define what our ideal perfect<br>[34:59] schema is, make materialized views for<br>[35:02] all those tables and then figure out how<br>[35:04] to cram whatever jank tables we have now<br>[35:07] into that and have that be sort of our<br>[35:10] defined public API. And then that'll<br>[35:12] build us some space so that we can<br>[35:14] internally take whatever time we need to<br>[35:16] migrate our core tables such that it's<br>[35:19] maybe a better like the queries that<br>[35:22] convert to those materialized views<br>[35:23] aren't as horrible and crusty and like<br>[35:27] terrible.<br>[35:28] >> Yeah.<br>[35:28] >> Um<br>[35:31] >> that makes I mean okay that that seems<br>[35:33] like a logical<br>[35:34] >> Yeah. It's it's it's a large effort. I<br>[35:36] don't think it's necessarily in the<br>[35:37] cards for this year, but I think like<br>[35:39] >> a lot of this stuff is like long like I<br>[35:41] I think I've been definitely trying to<br>[35:42] kind of look at issues of like okay<br>[35:44] what's like are there these big<br>[35:46] long-term goals that we can just sort of<br>[35:48] think about like every time we do a data<br>[35:50] migration can we just think about okay<br>[35:52] at least make sure that all the small<br>[35:54] changes we're making are at least taking<br>[35:56] steps either towards or not away from<br>[36:01] like these larger goals of normalizing<br>[36:04] the table like I think some of the<br>[36:05] smaller changes that I think we were<br>[36:07] talking about in previous weeks as far<br>[36:09] as potentially like using the um<br>[36:14] using like the the contributor aliases<br>[36:16] as sort of just the canonical source of<br>[36:17] emails instead of having an email in the<br>[36:20] contributors table and also a list of<br>[36:21] aliases like just having that all like<br>[36:24] here is a table that just lists the many<br>[36:26] emails that one contributor can have<br>[36:28] like just a simple many to one table<br>[36:30] structure. Um,<br>[36:34] I feel like I've been talking for a long<br>[36:35] time. Just I know SH just joined. So, is<br>[36:37] anyone else got other things to add to<br>[36:39] the agenda?<br>[36:40] >> Yeah. Hey, Schlock, we see you come in.<br>[36:43] We've just been looking at PRs and<br>[36:45] >> Hey guys. Yeah, I've I've been seeing I<br>[36:48] get those GitHub emails. It's just that<br>[36:51] I've been really busy with sort of<br>[36:52] interviews and everything. Uh, I haven't<br>[36:54] had a chance to do much, but I have my<br>[36:58] final Red Hat interview in like 15<br>[37:00] minutes. So hoping that I'll be done<br>[37:03] with everything by the end of this week<br>[37:04] and then, you know, actually get back to<br>[37:06] order because<br>[37:07] >> I really don't have anything else to do<br>[37:09] recent. Uh I've, you know, defended my<br>[37:11] thesis. I'm I've submitted a couple of<br>[37:14] papers. So sort of like a prelude now.<br>[37:17] Just wrapping up all of the stuff and<br>[37:19] then get back to order.<br>[37:21] >> Yeah.<br>[37:21] >> Well, that's awesome. Congrats on the<br>[37:23] final round.<br>[37:24] >> Yeah. Thank you. Yeah. Let's see. Uh but<br>[37:27] yeah, other than that, I don't think I<br>[37:28] really have much to add. I'm just trying<br>[37:30] to, you know, listen more and see, you<br>[37:34] know, what are the biggest pain points<br>[37:36] and if there's something that I could<br>[37:37] contribute back.<br>[37:39] >> Yeah, if if you've got time. I think um<br>[37:41] I don't really have much like I my focus<br>[37:44] this week is mostly going to be on<br>[37:45] working with Cali on figuring out how do<br>[37:47] we clean up our data from some of the<br>[37:49] the collection bugs of the last few<br>[37:51] weeks. Um, if you really wanted<br>[37:53] something to do, I think getting started<br>[37:55] maybe on figuring out how how we can get<br>[37:58] to to like how how we can sort of bring<br>[38:00] in the materialized views into our<br>[38:02] database sort of versioning process with<br>[38:04] YIC I think would be helpful. I think I<br>[38:06] dro I think I found a couple of links to<br>[38:08] to sort of start the research process in<br>[38:10] whatever relevant issue is in this in<br>[38:13] these notes. Um, but I haven't really<br>[38:16] looked into it more than just a cursory<br>[38:18] click the first stock overflow link I<br>[38:20] found.<br>[38:20] >> Um,<br>[38:22] So if that's something that you've got<br>[38:24] you've got time for like towards the end<br>[38:25] of this week like it's not super high<br>[38:27] priority but it's like<br>[38:28] >> eight nod is starting to kind of<br>[38:30] introduce its own materialized views and<br>[38:32] that's not a very good user experience<br>[38:33] for someone who's just expecting docker<br>[38:35] compose up on two stacks and having it<br>[38:37] work.<br>[38:38] >> Yep. Yep. Yep. Obviously. Yeah. All<br>[38:40] right. Yeah, that makes sense. I'm not<br>[38:42] sure if<br>[38:44] supports materialize views. I think<br>[38:46] there's like a plugin or like a third<br>[38:48] party thing is what? Okay.<br>[38:50] >> What branch would I have? What branch of<br>[38:52] 8 are those materialized views required<br>[38:55] for Adrian?<br>[38:56] >> So right now that would be I'm worried<br>[38:58] that would be a breaking change for my 8<br>[39:00] knot instance when I pull it the next<br>[39:02] time.<br>[39:02] >> So we we just released a new version<br>[39:05] just to pull in mostly performance like<br>[39:07] a particular sort of performance fix for<br>[39:09] the search bar. the the reenabling the<br>[39:11] it's reenabling the heat maps that's the<br>[39:13] thing that's gonna sort of cause a lot<br>[39:15] of this that has technically not been<br>[39:17] merged yet I think it's it's pretty<br>[39:19] close I'm probably going to be looking<br>[39:20] at it today and or this week um<br>[39:23] >> is it in dev<br>[39:24] >> it's just a feature PR it's just a PR<br>[39:27] feature branch<br>[39:28] >> um<br>[39:29] >> but yeah those feature branches do merge<br>[39:30] into dev so dev is equivalent to our<br>[39:32] main and then release and then main and<br>[39:35] 8 knot is equivalent to our release the<br>[39:37] naming is a little bit backwards but<br>[39:38] it's conceptually the same process of<br>[39:41] PRs go into a dev branch, go into a<br>[39:44] release branch.<br>[39:45] >> Yeah, I know. I think yours is a little<br>[39:47] bit easier for people to understand that<br>[39:48] they're working with a dev branch when<br>[39:50] they hit the repo. Honestly, like if I<br>[39:52] go back in time, I might rename our<br>[39:53] branches following your pattern. In<br>[39:56] fact, we can do that,<br>[39:59] but I'm not suggesting we do that right<br>[40:01] now. Just<br>[40:02] >> Yeah,<br>[40:03] >> it might make sense if the two projects<br>[40:05] were consistent<br>[40:07] as I think about that.<br>[40:09] So yeah, I mean I think if if it gets<br>[40:11] into dev if there would be a way that<br>[40:14] you could at least I don't know<br>[40:17] I think we should put something into<br>[40:19] augur to indicate that even if we don't<br>[40:21] have it automated it would be helpful to<br>[40:23] know that you have to create that<br>[40:25] materialized view or those materialized<br>[40:27] views whatever they were and have a<br>[40:28] script for it. Yeah, I know. I know.<br>[40:31] I've definitely I I think for our most<br>[40:32] recent sort of release of 8 knot I I did<br>[40:35] sort of push for having like a tagged<br>[40:37] version number and I think that was sort<br>[40:39] of moving towards the idea of putting in<br>[40:41] the eight not read me like okay here are<br>[40:44] the versions of augur that these<br>[40:45] versions of 8 knot was sort of designed<br>[40:48] alongside<br>[40:50] um<br>[40:50] >> right<br>[40:50] >> so that like if you're just trying to<br>[40:52] run an old version you know okay I need<br>[40:55] to be using one of these versions of<br>[40:56] augur with this version of 8not it as I<br>[40:59] don't really wanna<br>[41:00] necessarily have to like be super strict<br>[41:03] about that. Like I'd like the<br>[41:04] compatibility to be pretty open, but I<br>[41:07] think<br>[41:08] >> like especially if we've got things like<br>[41:10] this where like we're like there's new<br>[41:13] materialized views and new new things<br>[41:15] happening like that's why I think this<br>[41:16] process of being able to bring the<br>[41:18] materialized views in upstream because<br>[41:21] basically what's happened is our process<br>[41:23] for versioning DB has changed since we<br>[41:26] last realistically looked at bringing<br>[41:28] materialized views in. So we need to<br>[41:30] figure out okay how does that new<br>[41:32] Olympic process<br>[41:34] >> handle materialized views like I'd like<br>[41:37] to use Olympic if we at all can but like<br>[41:39] >> utter worst case is like we just have a<br>[41:41] folder of SQL files that is like the<br>[41:43] current materialized views and every<br>[41:46] time you upgrade augur we just wipe them<br>[41:47] and regenerate them which is going to be<br>[41:50] a royal pain for huge instances like<br>[41:52] ours but for the majority of the smaller<br>[41:55] instances it shouldn't be that impactful<br>[41:58] I don't know<br>[41:58] >> yeah Um,<br>[41:59] >> I mean I think I mean I'm just I'm<br>[42:01] thinking of myself right now. I I just<br>[42:03] don't want my 8 knot instances to break<br>[42:06] the next time I upgrade update 8 knot<br>[42:10] >> and I think most people are like that.<br>[42:12] >> Adrian Adrian quick question. Is there<br>[42:14] an existing issue that's tracking this<br>[42:16] materialized views uh issue?<br>[42:19] >> Yeah. So I think I put it it should be<br>[42:21] in<br>[42:22] >> this one here I think.<br>[42:23] >> Yeah. So there I think there's an issue<br>[42:24] on the a side and there's an issue on<br>[42:26] the eight knot side.<br>[42:28] >> Um Yeah,<br>[42:28] >> I think I made an eight not one that was<br>[42:30] like, "Hey, we should probably upstream<br>[42:32] these." And then I think Callie made<br>[42:34] this issue that was like,<br>[42:35] >> "Got it.<br>[42:36] >> Here's the upstream side of this<br>[42:37] conversation."<br>[42:38] >> Yeah.<br>[42:38] >> Um,<br>[42:39] >> gotcha. Gotcha. Okay.<br>[42:42] Okay. All right. Sounds good. I'll go<br>[42:44] through read through that conversation.<br>[42:45] Okay. I also see a Stack Overflow link<br>[42:47] as well. I'll read through that as well.<br>[42:49] Okay. Sounds good.<br>[42:55] Yeah, I think other than that my my<br>[42:56] focus in the sort of slightly more<br>[42:59] distant future is like okay starting to<br>[43:02] landing more like sort of more of those<br>[43:04] kinds of PRs Sean that we were merging<br>[43:06] last week as far as just like okay let's<br>[43:09] start moving like moving some of the<br>[43:11] functions we have to generate URLs into<br>[43:14] our actual GitHub API class and sort of<br>[43:17] starting to reorganize some code so that<br>[43:19] things<br>[43:20] >> we can sort of be like okay now Let's<br>[43:22] take this GitHub class and swap it out<br>[43:24] for a 4Jo1 or something and hopefully<br>[43:27] things work.<br>[43:29] >> Yeah, there's one other PR that Adrian<br>[43:32] did that I just wanted another set of<br>[43:33] eyes on before<br>[43:35] >> we it's this one. I'm looking for my<br>[43:38] chat window in Zoom as we run out of<br>[43:40] time in this meeting.<br>[43:41] >> This is I think this was actually this<br>[43:42] wasn't in the notes, but yeah, this is<br>[43:43] this is relatively recent. Uh it's a<br>[43:45] it's just a small quality of life. It<br>[43:48] just has augur basically assign its own<br>[43:51] name to connections that it's making<br>[43:54] into the database so that when you're in<br>[43:56] the like um sessions view whatever it's<br>[43:59] called in DB or your other tool of<br>[44:00] choice like if you're looking at just<br>[44:02] the list of all the sessions of that are<br>[44:03] connected to the database you can see<br>[44:05] which ones are from augur and which ones<br>[44:07] might be unnamed from other places. Um<br>[44:15] >> yeah, if you have a chance to review<br>[44:16] that schlock, but we're out of time now,<br>[44:18] so<br>[44:18] >> y<br>[44:19] >> we'll um let everybody go and um thank<br>[44:23] you both for all of the work that you do<br>[44:26] and making augur so much better than it<br>[44:29] was six months ago.<br>[44:32] >> Yeah, thank you guys for helping helping<br>[44:34] review all the PRs. Like I know we're<br>[44:36] still got a huge backlog, but I think<br>[44:37] we're working through it. hopefully do<br>[44:39] five or so small ones for for the big<br>[44:42] for each release and hopefully get<br>[44:44] through it eventually.<br>[44:45] >> Yeah.<br>[44:45] >> Yeah. And Yeah. Yeah. Yeah. We could go<br>[44:48] We should get at some point we should<br>[44:50] decide how to get rid of the ones that<br>[44:51] are stale and that the people aren't<br>[44:53] coming back to.<br>[44:53] >> I've been I've been starting to close<br>[44:55] some of those and just kind of like I'<br>[44:57] I'm trying to I think I tend to leave<br>[44:58] open the ones that like have maybe a<br>[45:00] kernel of being potentially<br>[45:02] like it might be worthy of someone like<br>[45:05] hey there's there's a kernel of good<br>[45:07] stuff here. Maybe maybe someone can take<br>[45:08] it over and and clean it up.<br>[45:10] >> Yeah,<br>[45:11] >> but I I might need to start being a<br>[45:13] little bit less friendly on that just<br>[45:15] because there's so many of them and it's<br>[45:17] just like I think I need to start<br>[45:18] learning the power of saying no by<br>[45:20] default.<br>[45:21] >> Yeah. Yeah. All right. Thank you both. I<br>[45:25] will see you see you online.
<!-- deep-read:sections end -->
๐ **Full text:** ![[Full Document Contents/Articles/Augur8-Knot WG March 17, 2026.md|Augur/8-Knot WG March 17, 2026 by YouTube]]
## Highlights
- >> saw no reason not to. >> Um, >> this is effectively sort of a logging change anyway. So this isn't any >> and version. When you say version, that made me think version of augur. >> Yeah, version of augur. I the PR has actually changed from that now because I was trying to import the version number of augur from that uh metadata file, >> but it was it was causing issues because ([View Highlight](https://read.readwise.io/read/01kpb540dkjw57y2rwcz3g72dp))
- Tags: ๐ป ai highlighted
- >> Actually, we merged we merged a couple things. We merged quite a few things on March 10th. >> Yeah, that that would be the maintainers meeting. So, >> and then March 4th was the one before that which does line which lines up with the previous spike. So, I I I do sus I suspect it's I I wonder if that could just be I mean I imagine some amount of it is AI scrapers. I some of it is probably also just people like who have Auger cloned are like updating their clones which I guess is a good sign that people are keeping their instances up to date. ([View Highlight](https://read.readwise.io/read/01kpb540fbkcpsm57zpcvrj7x5))
- Tags: ๐ป ai highlighted
- >> you it's just in the agenda if you want to if you wanted to pull that up. Um >> but it's basically just um so we recently we're working on currently is reenabling the heat there are some heat map diagrams to kind of like which files have been touched at what times sort of in a in a grid view to help help you kind of see is a particular group of files or a particular subset of the repo like missing a maintainer and not been touched in a long time. I.e. I imagine you'd see something like jump start in ([View Highlight](https://read.readwise.io/read/01kpb540h80pms03jehm78es8p))
- Tags: ๐ป ai highlighted
- our repository to that because that folder hasn't been touched in two years. Um, but it's just kind of another health metric. I think we disabled it because the queries were taking a really long time to run and we recently I think since we disabled it. Um, we we there's been other improvements to augur like ignoring being able to ignore repos. And so it's we're we're slowly bringing back we're trying to maintain we're trying to bring that back into 8 and re like reenable the queries move them into materialized views things like that. So there, so the first point with this is ([View Highlight](https://read.readwise.io/read/01kpb540mvxpn6wykfspvdr4bz))
- Tags: ๐ป ai highlighted
- that there's now that we have some additional materialized to use to bring into auger upstream. >> Um, >> yeah, >> I'm not sure. I don't know >> especially if they're in especially if eight's expecting them. >> Yeah. So the problem with that is though I don't think our current Olympic like database migration config is able to do uh materialized views. I think a lot of our materialized views have just existed forever and that like they're in some of ([View Highlight](https://read.readwise.io/read/01kpb540rycfzbvfz02zeg15z7))
- Tags: ๐ป ai highlighted
- Yeah, I mean that that's less of a problem for 8 because we we just regenerate all the materialized views when we clone the DB, but that's that's a very not typical setup because we're operating in such a scale that we can't have augur collection and 8 not running off the same DB or at least that was when we were behind on collection. So I think now it might be better now that we're caught we're relatively caught up. But >> yeah, >> I I'd like to make some more performance fixes before we try and remerge those ([View Highlight](https://read.readwise.io/read/01kpb540v0ss6edeg6zm6dbt7a))
- Tags: ๐ป ai highlighted
- now. Just >> Yeah, >> it might make sense if the two projects were consistent as I think about that. So yeah, I mean I think if if it gets into dev if there would be a way that you could at least I don't know I think we should put something into augur to indicate that even if we don't have it automated it would be helpful to know that you have to create that materialized view or those materialized views whatever they were and have a script for it. Yeah, I know. I know. ([View Highlight](https://read.readwise.io/read/01kpb54151xhfeyy66k668kv57))
- Tags: ๐ป ai highlighted