Files
2026-10-15 09:50:58 +00:00

765 lines
44 KiB
JSON
Executable File

{
"schema_version": 1,
"note_id": "280BehgySpW8LynSS473nQ",
"title": "Apple Weekly Team Meeting - Zoom ID 2026-10-06 20:01(GMT+6:00)",
"meeting_date": "2026-10-06",
"source_url": "https://us01mynotes.zoom.us/280BehgySpW8LynSS473nQ",
"transcript": [
{
"time": "20:03:20",
"speaker": "Dan King",
"text": "Thank you, Jonathan. Appreciate the time. Uh, sorry if it is quiet because I'm here, new, uh, new guests and everything. Yeah! I got just a couple of slides to share. But. She go. fairly quickly, and then we can do some some Q&A at the end. If. I'm open for any any questions that you've got. And so, you know, we are getting into our performance review cycle, and so want to, give you a heads up on what to expect here."
},
{
"time": "20:03:58",
"speaker": "Dan King",
"text": "And so, for this review, uh, first, you know, who… who's gonna be in it? And so, everyone who joined on or before April 26th is gonna be eligible for the performance review process. If you joined after this date, you will still, you know, go through the continuous feedback process. But the performance review process, will not be, will not be for you. Uh, it is going to cover the period from February 1st of this year to October 25th. And so it's obviously a shorter period than usual, less than a year. And, you know, this is an adjustment, you know, moving forward for, you know, when we can expect a performance review each year, you know. One of the. One of the years, uh, when we made the change, it was gonna be short, and so, uh, you know, it is this one. If you have any questions, you know, at the end about that, you know, let me know. uh… Again, yeah, if uh… So I hit on who was not gonna be on this round, and so. What you can be expecting from the timeline of this year is we are gonna have training, uh, you know, a more in-depth training, uh, that Kiara is going to lead. That's gonna be October 15th, 16th, and the 22nd. Uh, each of those days is gonna be the same training, and so, you know, pick the day and time that fits best for you. Uh, self-assessments will be due October 26th, and then, uh, CA assessments will be due, you know, October 27th through the 29th. It'll then go through functional calibration October 30 to November 3. The calibration committee will meet on, November 4 to the 6th. And conversations, uh, will happen, you know, between yourself and your CA, uh, November 9th through November 13th. Uh, it's a shorter timeline than usual, uh, to help support that. If you have anything that is due on that timeline, it will. Uh, it will be your one must that day. I've gotten some questions like, does that mean you should be canceling meetings and things like that? I I don't personally think that's what it means. You know, I wouldn't go and, like, proactively cancel your meetings on those days. But, you know, treat it like you would, your one must for the day. So, you know, make sure that you have time for it. I think self assessments potentially like an, you know, couple hours or an hour or 2 for that ca assessments potentially up to like 3 h. So just make sure that you have time for that day. But but, you know, we're gonna leave it up to you on on how you make that time. So what can you do now? Uh, we are getting into our continuous feedback, like, the second round of it. Um, it should be around this week, uh, but any time before, uh, the performance reviews, um, we are going to look for an update for growth areas and shoutouts. uh, don't clo- remember, don't close the task. All you have to do is replace the text that's in there, and then it'll automatically get saved, um, you know, into the history. Uh, we're looking for two pieces of peer feedback, uh, for each person, and so that does include the feedback that you, uh, may or may not have received in August. Um, so make sure that you are aiming for having two pieces of feedback going into your performance review. And then, you know, just a heads up to keep your work summaries up to date. Uh, everything may not be captured in there. Uh, you know, it could be a quick win, or what have you, that doesn't get captured. Um, put it in the notes. Uh, the notes do not get over, uh, you know, they don't get overwritten. each day. Okay. So just to reiterate, you know, next step, sign up for one of the training sessions. Kiara is having open hours, on Thursdays from 11 to 12, Eastern. And so, great time to ask any questions if anything comes up after this session, or you go to a training, and uh… you know, you're thinking about it, and a question pops up, um, you know, those open hours are a great time to, uh, to ask her something. Um, I'm also available if, you know, any questions. Uh, pop up for you. If I don't have an answer, you know, I can… I can definitely get you the answer, or point you in the right direction. Okay, I'm gonna stop sharing, uh… And, uh… open it up for any… any questions that anybody may have, uh, around either performance reviews or the continuous feedback process. Obviously, you know, it was continuous development for a while there."
},
{
"time": "20:09:02",
"speaker": "Dan King",
"text": "Yep. Yeah, pre appreciate that question. So make sure that you have your. you put in your out-of-office, um, for those dates. Once you have your out-of-office in, uh, it should… it should trigger something on our side where we will, uh, adjust the dates for, um. For you, depending on who you are. So, uh, it could be your self-assessment, it could be your CA assessment. Uh, if it is a CA assessment. what that will trigger is for your advisees. We will also push that. Yeah, we'll push the self assessment for them forward a bit. Uh, as well."
},
{
"time": "20:09:41",
"speaker": "Elle Sullivan",
"text": "Купить?"
},
{
"time": "20:09:53",
"speaker": "Dan King",
"text": "I believe I believe everything should get pushed forward at that point. I know. Yeah, I know for sure. The Ca assessment and self assessment."
},
{
"time": "20:09:56",
"speaker": "Jonathan Jackson",
"text": "Какая история?"
},
{
"time": "20:10:02",
"speaker": "Dan King",
"text": "I I wanna say the functional calibration too. If for some reason that's not the case, I'll I'll get back. Yeah. Yeah. That makes sense. Uh, for sure."
},
{
"time": "20:10:25",
"speaker": "Jonathan Jackson",
"text": "And then, I just sort of… I think I know the answer to this question, but maybe not everybody does. For our own self-assessments… Sorry, there's a video that's nearby. I hope you can hear it. Um, for our own self-assessments. Should we be doing that work primarily in the work summary doc in the notes section or is there somewhere else we should be putting that? Because I think a lot of people are going to get started on that like basically now. I actually recommend everybody start basically now so they have plenty of time to get that in good shape."
},
{
"time": "20:10:46",
"speaker": "Dan King",
"text": "The, the self-assessment? Yeah, the self-assessments will be its own task. There'll be a self-assessment task. I would for sure leverage your work summaries for it."
},
{
"time": "20:10:58",
"speaker": "Jonathan Jackson",
"text": "Okay."
},
{
"time": "20:11:05",
"speaker": "Jonathan Jackson",
"text": "Okay."
},
{
"time": "20:11:06",
"speaker": "Dan King",
"text": "But there'll be a self-assessment task that's assigned to everybody."
},
{
"time": "20:11:09",
"speaker": "Jonathan Jackson",
"text": "Right, so anybody who wants to start now can just sort of keep their own notes somewhere and put it in that way."
},
{
"time": "20:11:14",
"speaker": "Dan King",
"text": "Yeah, and also, in the performance review AOR, there are the tasks available there. Um… and and looks like Brendi can can share, but also in the Aor you can. You can go there, and you can."
},
{
"time": "20:11:24",
"speaker": "Jonathan Jackson",
"text": "Sweet. Okay."
},
{
"time": "20:11:29",
"speaker": "Dan King",
"text": "Try to duplicate it."
},
{
"time": "20:11:30",
"speaker": "Jonathan Jackson",
"text": "Oh, awesome. Okay, thank you."
},
{
"time": "20:11:42",
"speaker": "Pikor",
"text": "Джастфорда, Рефренс?"
},
{
"time": "20:11:42",
"speaker": "Dan King",
"text": "Yep. Yeah. Absolutely. I can drop it into the, into your agenda task, so everybody has it."
},
{
"time": "20:11:44",
"speaker": "Pikor",
"text": "Клуб, танц? Тэнкс?"
},
{
"time": "20:11:50",
"speaker": "Dan King",
"text": "If that works."
},
{
"time": "20:11:55",
"speaker": "Jonathan Jackson",
"text": "Yeah, that'd be perfect. Thank."
},
{
"time": "20:11:57",
"speaker": "Dan King",
"text": "Okay. Any other any other questions? Definitely appreciate the ones I've got so far. Okay. I am gonna jump to, to the Android team meeting. So just give me a little bit of time, on dropping this into your agenda, but I'll I'll have definitely do, this morning."
},
{
"time": "20:12:19",
"speaker": "Jonathan Jackson",
"text": "Cool. Thank you, Dad. Appreciate it. It's him. All right. So welcome, everyone. We'll move on with the regular meeting from here. Remember that next week is our next team retrospective. A link to that task is at the top of the current meeting agenda if you need it and want to drop stuff into the early. Um, do please try to populate that before the meeting, so that we can spend our time together talking about what's in the input for that, rather than coming up with that input. Uh, we got another week to think about what's happened in the last… The last, um… Eight weeks together. Uh, quick review of rotations. Uh, Yacek, you are on iOS Triage this week, uh, followed by Anya next week, and then El the week after that. For macOS triage, Fernando is on this week. James is covering next week and then on the week after that. I think we did a swap there because of Canadian Thanksgiving. Thank you all for that. We did a swap on iOS as well. Thanks for the flexibility, everybody. Um, for iOS release, Hanyu is this week, uh, followed by Marius, you're up next week, and then Sam the week after that. And for macOS release, Alex is on this week, followed by Dominic, and then Diego. Um… A couple of you have reached out about holiday interrupts towards the end of the year. I'm still planning in the next week or so to put together another post about release schedules around the holidays, and then we'll use that to figure out how we want to adjust schedules based on people's. out of office and the releases that we're doing and how we change that schedule. So I know that's coming. Um… Oh, and I actually was looking for a possible swap over the December to January week stretch. If anybody's willing to hop into that now, that would be great. But we'll do more coordinating around the holidays as well. Um… I'm going to hop down. Jacek, do you want to talk about your other time sensitive topic and then we'll go back to announcements and everything else?"
},
{
"time": "20:14:45",
"speaker": "JŁ",
"text": "Yes, thank you. Uh… Yeah, so as you mentioned, I'm on triage this week. Sorry for bringing bad news, but we may have an incident on iOS. Uh, which is related to some changes to onboarding, and apparently you can now, uh. send a message to Duck AI, and then, like, run a fire over it, and it doesn't work, it keeps in the loop, so it sort of breaks trust in our firing capability, and also."
},
{
"time": "20:15:16",
"speaker": "JŁ",
"text": "yeah, it's a bit annoying, I guess. So I've run it over the severity matrix, and it's actually, like, for me, it was on the edge of the major incident. So I think we should actually like jump on it right away. a bit of context. Some more reports came today. like they they allowed me to to calculate it better. Yeah. So so probably the the next obvious question would be whether it's behind some feature flag, whether whether we can turn it off like immediately. And so would be good to like gather a few people, perhaps like. Switch a room, uh… Yeah, I don't know, like… I think Alex knows more. Apparently, there's a fix, too, for it, so maybe, Alex, sorry for putting you in the spotlight, but maybe you know more about, like, what's the issue, and if you could say anything."
},
{
"time": "20:16:18",
"speaker": "Bartek Waresiak",
"text": "Игнор. Инцидент?"
},
{
"time": "20:16:20",
"speaker": "JŁ",
"text": "Yeah. Okay."
},
{
"time": "20:16:44",
"speaker": "Alex Martemyanov",
"text": "Yeah, so, uh… Let me… let me bring this some clarity, uh, to try to be on the same page, so it's not, uh… the… FHIR loop, as may sound, at least as it is reproduced, it's a loop on a startup. So basically, we got a FHIR onboarding, and if you don't follow the next onboarding screen. Yeah, so the… onboarding page restoration would restore the same file onboarding on the next app relaunch. So it should not hopefully affect everybody, and just if you stay on that AI page and the app is relaunched. You will land to the fire onboarding and only in the case that you did not complete the onboarding normally. At least that's, uh, what… Uh, the fix is targeting."
},
{
"time": "20:17:43",
"speaker": "Bartek Waresiak",
"text": "And like, is it controllable with the feature flag?"
},
{
"time": "20:17:49",
"speaker": "Alex Martemyanov",
"text": "Oh. Sure. I think it should be controllable with the… Uh, onboarding, uh… The refined onboarding feature flag in the whole problem."
},
{
"time": "20:18:05",
"speaker": "Bartek Waresiak",
"text": "So, yeah, so I would double-check. If it's controllable and we can mitigate that with the feature flag, let's do this as soon as possible, and then we can, uh… Depending on the importance of that onboarding step, treat it as a hot fix, or just… merged into the release. The thing is to reduce the chance of this happening to people right now."
},
{
"time": "20:18:32",
"speaker": "Alex Martemyanov",
"text": "Yep, sounds good."
},
{
"time": "20:18:40",
"speaker": "Jonathan Jackson",
"text": "Okay, so it sounds like Jacek, Alex, and Bartek, you're the group who's taking this on at the moment?"
},
{
"time": "20:18:41",
"speaker": "JŁ",
"text": "So… Yeah, yeah, so do you all agree that we should, like, jump on it right away, like, skip the rest of the meeting, or should we, like, continue?"
},
{
"time": "20:18:55",
"speaker": "Jonathan Jackson",
"text": "I think it's fine. I think you should make sure you get this dealt with. So if you want to add something else, that'd be great."
},
{
"time": "20:18:57",
"speaker": "JŁ",
"text": "Okay. Okay, thank you."
},
{
"time": "20:19:01",
"speaker": "Jonathan Jackson",
"text": "We'll miss you. Thank you. Um… Back up to the announcements section of our agenda. Mariusz, looking for some helper feedback."
},
{
"time": "20:19:19",
"speaker": "M",
"text": "Yeah, thanks. I guess Jacek stole the show, so that's less important now. In a way, we are working on a new redesigned new tab page. And it's not yet in the internal… it's not yet enabled for internal users, but we'll… I'll be doing that in like a week. Um, and if you are working on some feature that is tangent to the new tab page, which is highly likely."
},
{
"time": "20:19:51",
"speaker": "M",
"text": "Um… Please enable the flag. And you can feel free to just put any feedback you have on this. If you spot anything that's off, that's behaving in the wrong way, or maybe looking… Uh, looking, um… Not good enough. Feel free to just drop a comment, some screenshot, maybe screen recording."
},
{
"time": "20:20:17",
"speaker": "Fernando Bunn",
"text": "Yes. Is the notepad page on iOS being done the same as macOS, or is it all native?"
},
{
"time": "20:20:26",
"speaker": "M",
"text": "It's native."
},
{
"time": "20:20:28",
"speaker": "Fernando Bunn",
"text": "Okay. Good to know. Is part of this project also adding the toggle for the KI and search?"
},
{
"time": "20:20:40",
"speaker": "M",
"text": "the… Yes, on the NewsHub, like, in the center of the NewsHub page, if that's what you're asking."
},
{
"time": "20:20:45",
"speaker": "Fernando Bunn",
"text": "Yep. Yeah. Yeah, because there's a lot of, uh, changes happening there. Small changes, but related to… Terms of services and warnings, other kind of boring stuff that we're working on. right now, and be good to validate if it's working there. So, yeah, I'll touch base with you."
},
{
"time": "20:21:03",
"speaker": "M",
"text": "Cool, thanks. Yeah, the current input, Duck AI input is, not Duck AI, the…"
},
{
"time": "20:21:11",
"speaker": "Fernando Bunn",
"text": "UTI."
},
{
"time": "20:21:12",
"speaker": "M",
"text": "The current address bar input basically is reused, so it should be working without issues."
},
{
"time": "20:21:17",
"speaker": "Fernando Bunn",
"text": "Cool."
},
{
"time": "20:21:21",
"speaker": "M",
"text": "Thanks."
},
{
"time": "20:21:29",
"speaker": "Jonathan Jackson",
"text": "Cool. Thank you. Uh… Is Alex still, no, Alex has dropped at this point. So Alex had the, oh, no, Alex is here."
},
{
"time": "20:21:39",
"speaker": "Alex Martemyanov",
"text": "Not yet."
},
{
"time": "20:21:40",
"speaker": "Jonathan Jackson",
"text": "Okay, do you want to, do you need to be working on the incident or is everything under control at this point?"
},
{
"time": "20:21:46",
"speaker": "Alex Martemyanov",
"text": "Yes, I'll be working on currently investigating the feature flag issue in parallel. Yeah, got it."
},
{
"time": "20:21:57",
"speaker": "Jonathan Jackson",
"text": "Um, you have the next two agenda items. Does it make sense for us to save those for next week? Do they need to have them this week? Like, where… how do you want to balance that?"
},
{
"time": "20:22:06",
"speaker": "Alex Martemyanov",
"text": "I think… Hopefully, you save them the future talk, and they… And the PR is up with the fix, so…"
},
{
"time": "20:22:15",
"speaker": "Jonathan Jackson",
"text": "All right, why don't we give you a few minutes?"
},
{
"time": "20:22:16",
"speaker": "Alex Martemyanov",
"text": "Shouldn't take much time, I think."
},
{
"time": "20:22:18",
"speaker": "Jonathan Jackson",
"text": "Anybody else have anything they'd like to discuss this week?"
},
{
"time": "20:22:31",
"speaker": "SS",
"text": "I could do, I'm literally talking about it with Dominic as we speak. Uh, that PR is approved, we…"
},
{
"time": "20:22:34",
"speaker": "Jonathan Jackson",
"text": "No, we can talk about 27.1 also."
},
{
"time": "20:22:37",
"speaker": "SS",
"text": "Yeah, yeah, that PR is approved. I have just merged in. Changes remain to simplify the CI stuff that I was working on. Once the PR is green, I think we can merge it. I think we're good. I will probably do that and send out an Apple Diary task."
},
{
"time": "20:22:51",
"speaker": "BA",
"text": "Is… Is this using new SDK, then, as well, presumably?"
},
{
"time": "20:22:59",
"speaker": "SS",
"text": "Yes."
},
{
"time": "20:23:00",
"speaker": "BA",
"text": "Is the experimental build already do it using this or?"
},
{
"time": "20:23:05",
"speaker": "SS",
"text": "That's been using 27 for weeks, months."
},
{
"time": "20:23:10",
"speaker": "BA",
"text": "All right, okay. I'll go test my shit there then. Thanks."
},
{
"time": "20:23:10",
"speaker": "SS",
"text": "I've been using it for ages."
},
{
"time": "20:23:15",
"speaker": "Dominik Kapusta",
"text": "Севен, Поинт, Оу, Райт, Эксперимент?"
},
{
"time": "20:23:17",
"speaker": "SS",
"text": "Yep. Yes, yeah, we're not touching 27.1. I mean, it's just coming into release candidate, but we will be blocked from updating all that until OAE has done some work."
},
{
"time": "20:23:20",
"speaker": "BA",
"text": "Right."
},
{
"time": "20:23:29",
"speaker": "SS",
"text": "Good luck, Brendan."
},
{
"time": "20:23:30",
"speaker": "BA",
"text": "Yeah. Yeah, thanks."
},
{
"time": "20:23:31",
"speaker": "Dominik Kapusta",
"text": "Яс?"
},
{
"time": "20:23:33",
"speaker": "BA",
"text": "Is that… you mean… is that related to the duo?"
},
{
"time": "20:23:34",
"speaker": "Jonathan Jackson",
"text": "Brenda, are you figuring out what the 27th?"
},
{
"time": "20:23:38",
"speaker": "BA",
"text": "All right. And do we have tests?"
},
{
"time": "20:23:39",
"speaker": "SS",
"text": "As related to the Duo, exactly. Yep."
},
{
"time": "20:23:40",
"speaker": "Jonathan Jackson",
"text": "Yes."
},
{
"time": "20:23:43",
"speaker": "BA",
"text": "I mean, there's probably the task that I created already, right? That's sort of…"
},
{
"time": "20:23:48",
"speaker": "BA",
"text": "I think my question really is, are people aware that there is actually some work that needs to be done for the Duo before we can upgrade to 27.1? I can make that clear in OA today. If it's not clear."
},
{
"time": "20:24:00",
"speaker": "SS",
"text": "Yeah, I did make a task with screenshots of like, here's 27.0, here's 27.1, like 27.1 clearly has issues, we clearly need to do some work. I don't know if that's clear enough though, so do make noise about that in OA, please. That'd be good."
},
{
"time": "20:24:11",
"speaker": "BA",
"text": "Yeah, alright, I can do that, yeah. Thanks."
},
{
"time": "20:24:15",
"speaker": "SS",
"text": "Like we will be blocked from updating to any like 27.1 or above until we have done something about this effectively."
},
{
"time": "20:24:16",
"speaker": "Fernando Bunn",
"text": "Okay."
},
{
"time": "20:24:21",
"speaker": "Jonathan Jackson",
"text": "Yep."
},
{
"time": "20:24:21",
"speaker": "BA",
"text": "Right."
},
{
"time": "20:24:23",
"speaker": "Fernando Bunn",
"text": "I think we do have some deadlines from Apple. Not entirely sure about the dates, but I think it's April. We're going to need to start supporting… At the very least, the App Store screenshots are mandatory."
},
{
"time": "20:24:35",
"speaker": "BA",
"text": "That's right. Yeah, I saw that today as well, yeah. So we've got no choice now but to deal with this stuff. The problem I'm having right now is like, I've got this task to try and measure Duo usage, and I wanted to fire a pixel."
},
{
"time": "20:24:39",
"speaker": "SS",
"text": "Yes. That's good to know."
},
{
"time": "20:24:43",
"speaker": "Fernando Bunn",
"text": "Yep."
},
{
"time": "20:24:50",
"speaker": "BA",
"text": "But I'm getting pushed back in privacy triage, because it's… because we don't fire those pixels related to the device name or something. So, I'm trying to work around that at the moment, but um… sounds like we just need to do some work anyway, so…"
},
{
"time": "20:25:07",
"speaker": "Jonathan Jackson",
"text": "Yeah, I think…"
},
{
"time": "20:25:07",
"speaker": "BA",
"text": "Yeah, no worries. I can… I'll make a noise about that."
},
{
"time": "20:25:10",
"speaker": "Jonathan Jackson",
"text": "Thank you. What I understand about the pixel piece is that. Chris basically wants to understand the adoption… the Duo adoption rate. 'Cause that will inform to what degree we invest more heavily in Duo support. But that I think is separate from the 27.1 puzzle of we have to be able to use 27.1 to be honest. So we have to do whatever the minimal set of work is to have our apps look good enough there, right? And that's the piece that we need to address and prioritize pretty quickly."
},
{
"time": "20:25:39",
"speaker": "BA",
"text": "Yes."
},
{
"time": "20:25:43",
"speaker": "Jonathan Jackson",
"text": "So I think both make sense."
},
{
"time": "20:25:48",
"speaker": "BA",
"text": "Yeah, perfect."
},
{
"time": "20:25:49",
"speaker": "Jonathan Jackson",
"text": "Cool. Thank you."
},
{
"time": "20:25:50",
"speaker": "BA",
"text": "I found that task, so I'll start making noise about it now. Thanks, Sam."
},
{
"time": "20:25:55",
"speaker": "Jonathan Jackson",
"text": "And yeah, thank you so much. Anybody else have anything they want to add or discuss here? While Alex is working on his pull request, it looks like."
},
{
"time": "20:26:16",
"speaker": "Alex Martemyanov",
"text": "Uh, yes, I think I'm ready. I should… Should disable the feature flags before we start."
},
{
"time": "20:26:24",
"speaker": "Jonathan Jackson",
"text": "Okay, if you're ready, that's great. If you need more time, that is also fine. Make sure you're giving the right time to the incident first."
},
{
"time": "20:26:34",
"speaker": "Alex Martemyanov",
"text": "Yeah, so currently the… While the pull requests have been opened, I wanted to present the WebKit to macOS version tables. I just made today, so it was a kind of research task to understand which versions of WebKit are fixing which bugs, because it's not always obvious if a bug in WebKit is fixed, in which. macOS or iOS release it actually gets. So, uh, yeah, I, um… Made some research and, uh, ended up. Oh. making the instructions, the step instruction, how to get it. And how to validate it. And in the task attached, you can find the list of current iOS and macOS releases with matching WebKit versions. I think it can be useful for somebody. So I decided to share it. Oh… Yep. We're good with PR. Yeah, the next one, uh, the next one, the status update about the RDS Code project, and uh… current state of the code base. refactoring thing. So if you head to the migration project, I've updated the description a little bit. Uh, and, uh, I wanted to, um, share the timeline and what was done in scope and what is the project about, because I noticed there is some tension about whether the migration is actually needed, where do we want. to support VS Code, uh, or whatever. And, uh, so, uh, my judging here is, uh, that we have technical debt, basically a lot of tech debt. And here I'm trying to. I don't know. to address it. So basically, there is this refactoring going on. Um, moving code files around, getting rid of storyboards, um… Making unit tests independent from the app delegate dependencies. And there is also some iOS work ahead. Uh, so current, uh, question is whether to migrate, uh, the main DuckDuckGo browser for macOS module to an SPM package, which seems a logical decision, uh, having all this common BSK and so on as, uh, SPM packages. And, uh, in the task, there is a little, uh, comparison table on build times on current main branch for export and export build, and, uh, the updated SPM target. And we chose… Pretty good increase in build speeds. And also there is Vs code example. And. faster. It makes the day to day debugging and development for exploit for those who. consider switching. But it's totally optional, and in fact, the VS Code change is aside from the manufacturing, so it only includes, basically, the VS Code workspace file. And a special build script for it, and if anybody doesn't want to use it or update it, it's not required 100%. So yeah, that's a short update. I'll be preparing a tech design later on on the roadmap for modularization to speed up the builds and to make the 1,700 files per target. A little bit smaller. And yeah, I'll let you know. Probably at this point, at this point, I'll drop off to the… Uh, during the meeting of the incident. Yep, thanks."
},
{
"time": "20:30:47",
"speaker": "Dominik Kapusta",
"text": "Thanks. Thanks, Alex. Thanks a lot. I just wanted to ask a clarifying question. Um, making the macOS app a Swift… module. That wouldn't change. how the binary is linked, right? Because the module would be a static library. linked with the update I got, I guess."
},
{
"time": "20:31:15",
"speaker": "Alex Martemyanov",
"text": "Uh, yes. Yes, exactly, so let me share the screen and show what changes, actually. Uh, if you look at the Xcode project, so it mostly looks exactly the same, but instead of the Darkdigger folder, uh. You can find the DuckDuckGo package. Can you see my screen?"
},
{
"time": "20:31:36",
"speaker": "Dominik Kapusta",
"text": "Yes."
},
{
"time": "20:31:38",
"speaker": "Alex Martemyanov",
"text": "So basically, all the files are in place, they are not moved anywhere, and in fact, it benefits… we won't have VBX project merge conflicts anymore with this kind of structure, and all the assets and everything stays in place, and localizable stays in place. It just changes how the build is done and so package defines. Uh, the assets, those are changed by… checked by input file checker, and, uh, won't let you miss anything if you add a resource. It defines product, dependencies, so on. So basically, all done in package.swift, and it prepares a static library and links it to the main package. There is a dynamic library as well, but it's used only for the. We had called target and, does not affect the main browser. As well, as I found out, it… can be built for the App Store builds, and it can be used for iOS builds as well, but only from Simulator. For the device, there is a little bit more complicated process. Yeah, and by the way, VS Code will also allow the remote debugging session not available in Xcode, allowing to debug directly on macOS virtual machines or all the hardware without installing Xcode directly there."
},
{
"time": "20:33:06",
"speaker": "Dominik Kapusta",
"text": "Great. And what's the… Yeah, just… was the DuckDuckGo browser dynamic? what's the…"
},
{
"time": "20:33:15",
"speaker": "Alex Martemyanov",
"text": "Dynamic is basically, it's like the executable, but it's used for a small launcher app that is prepared and signed, and it's for VS Code."
},
{
"time": "20:33:16",
"speaker": "Dominik Kapusta",
"text": "Good time. For the tests."
},
{
"time": "20:33:30",
"speaker": "Alex Martemyanov",
"text": "And, uh, for… no, for the test, it's not actually required, because tests are run as a part of SPM package, so unit tests are migrated to… to SPM structure, and basically faster for…"
},
{
"time": "20:33:31",
"speaker": "Dominik Kapusta",
"text": "Oh, okay. Okay. Right, of course. Hmm."
},
{
"time": "20:33:44",
"speaker": "Alex Martemyanov",
"text": "CI and can be parallelized as well. After some manufacturing, of course, because they are mostly bound to the abdeligate and main thread."
},
{
"time": "20:33:56",
"speaker": "Dominik Kapusta",
"text": "Okay, thanks. Juan had a question, right?"
},
{
"time": "20:33:56",
"speaker": "Alex Martemyanov",
"text": "It's all good."
},
{
"time": "20:33:59",
"speaker": "Juan Pereira",
"text": "No, my question is similar to what I… in the… in the project. Like, I understand some of the changes, but I… I don't… I do not understand the fully goal, because it's, like, migrating to VS Code, and it seems that only right now. Uh, for my… it's only you, Alex, using VS Code. I don't think anyone else is using VS Code. So, it's like, we're doing all these changes, you know, dropping storyboards that the other day we had an internal bug that was caused by it. Uh, we need to do, like, the project is not run with, uh."
},
{
"time": "20:34:33",
"speaker": "Juan Pereira",
"text": "I don't know, a project advisor or someone, like, it's not running in any objective, so I wonder if there's any risk. And how can we mitigate those risks by doing this project? And it's like, it's 100% necessary, right? Because for now it seems a project we want to run because we want to do it in VS Code. There's some gains that we have from it, but I don't think we measure like the gains versus the… Uh, the risks. So, that's my only concern, because, yeah, if we… if we… let's say… We win, like, 20% build time, but we introduce two incidents. like…"
},
{
"time": "20:35:07",
"speaker": "Alex Martemyanov",
"text": "Yep, that's a great question."
},
{
"time": "20:35:08",
"speaker": "Juan Pereira",
"text": "like… that's, like, when… yeah, that's something that I don't think we want, like… uh… so, yeah, that's… that's my only concern, like… At the end, I think we need to do it as a team, and yeah."
},
{
"time": "20:35:19",
"speaker": "Alex Martemyanov",
"text": "Yep. I understand the question and yeah, actually we had one tech design about this exact structure of the project, but yeah, I'm gonna run another one with extended roadmap and yeah, answering whether anybody would use VS Code. Or is it just Alex? So, first of all, I think that Alex is basically. Easy enough. Again, and it's already worth it. Uh, second, uh, we are not migrating to VS Code, so nobody's forced to use VS Code, and it's totally optional, and I really hope somebody would find some games for it, or Cursor, or whatever, or other build, uh, systems of their choice, so not only Xcode, so we're extending options here and not forcing anybody to change. Because for the one staying on Xcode, nothing changed, and you just keep building using Xcode. Uh, about the risks, so basically the app structure, the main app target, and the app build system, AI system, they all stay the same. Then the change is, uh, hitting our existing project about, uh, modularization that's been discussed on the. Uh, Apple Meetup that I, uh, unfortunately missed. Uh, but it's, yeah, kinda going… ongoing proposal and ongoing process, uh, because, uh, there is huge parts of browser requiring modularization, for example. Uh… E-I… AI kit, uh, adding… Hmm, where is it? Let me just see the numbers they were. They were… Right here. Yeah, AI chat, 24,000 and 0.7K lines. Tab and tab extension, 22,000K lines. Common, 18,000K, 80,000 lines. Navigation bar, 16,000 lines. Bookmarks, 14,000 lines. Preferences, 13,000 lines, and so on. So, it's a natural move to split those targets, and so the first step here is to make the browser main code target the SPM package itself. So, as Dominik pointed, we are. linking this SPM target as a static library, so basically it's code, uh, linked the same way it is now, and all the resources are bundled the same way they are bundled now, and localization, everything stays in place, and we are not even migrating the core data. managed object models, because Xcode 27 lets us just drop it into the Swift package, and they stay as they are. And nothing in the code changes here, it's just regular refactoring process, and handling the technical debt as. it should be. So, the VS Code is just two files that are made basically aside from this project, and they are 100% optional. So that's the reason of the change. If it answers the question, I'll probably drop off. And reason for the."
},
{
"time": "20:38:46",
"speaker": "Jonathan Jackson",
"text": "Looks like Brendi's got another question."
},
{
"time": "20:38:48",
"speaker": "Alex Martemyanov",
"text": "Thanks."
},
{
"time": "20:38:49",
"speaker": "BA",
"text": "I mean, it can wait if you want to go to the incident thing. I was going to ask about iOS, because, like."
},
{
"time": "20:38:50",
"speaker": "Alex Martemyanov",
"text": "Yep."
},
{
"time": "20:38:54",
"speaker": "Jonathan Jackson",
"text": "Yep."
},
{
"time": "20:38:56",
"speaker": "BA",
"text": "What's your plan there if you ever have to do any work on iOS? Who's gonna use Xcode? Basically. Or…"
},
{
"time": "20:39:04",
"speaker": "Alex Martemyanov",
"text": "Yeah, basically the plan for iOS is the same with a big correction that the current VS Code migration path took already one year, so it started a year ago on 25th of October. 2025, and, uh, yeah, the first natural step for iOS is, uh… Oh. migration to navigation framework, and I know that probably nobody but me that's going to migrate it."
},
{
"time": "20:39:35",
"speaker": "BA",
"text": "Yeah."
},
{
"time": "20:39:35",
"speaker": "Alex Martemyanov",
"text": "And, uh, there is a lot of shared code that also… you can basically find this, uh, AI-generated roadmap. I didn't modify any part of it, it's just one-shot Claude-generated report, but I heavily agree with it. Uh, so it… suggests it found heavy intersections between iOS and macOS code bases and it suggested step by step small changes, small PRs plan on how this could proceed. But of course, yeah, I would need some time to finish this project first."
},
{
"time": "20:40:11",
"speaker": "BA",
"text": "Well, I mean, I'm already migrating…"
},
{
"time": "20:40:12",
"speaker": "Alex Martemyanov",
"text": "Free from supplier to GitHub."
},
{
"time": "20:40:15",
"speaker": "BA",
"text": "I'm already working on migrating the storyboards away to code anyway, I'm just gradually doing that in the ground. I think these changes are good and welcome. It's just a shame you framed it as a VS Code thing. And, you know, if you'd framed it as just making things better. Maybe people wouldn't have been so bothered. I don't know."
},
{
"time": "20:40:35",
"speaker": "Alex Martemyanov",
"text": "Yeah, basically it's all about…"
},
{
"time": "20:40:35",
"speaker": "BA",
"text": "But I think they're good, so."
},
{
"time": "20:40:37",
"speaker": "Alex Martemyanov",
"text": "It's all about making the things better, and VS Code is a nice bonus, at least nice for me. I hope nice for somebody else, but it's, uh…"
},
{
"time": "20:40:37",
"speaker": "BA",
"text": "There."
},
{
"time": "20:40:47",
"speaker": "Alex Martemyanov",
"text": "Side project, let's say."
},
{
"time": "20:40:48",
"speaker": "Jonathan Jackson",
"text": "I mean, like, a couple of people pointed out that I don't… I think most people are not gonna end up using VS Code. Most people are trying to stop using an IDE, period, at this point. Um, if there are benefits here that really, you know, are benefiting the team in terms of build times, or…"
},
{
"time": "20:40:49",
"speaker": "Alex Martemyanov",
"text": "Just an opportunity."
},
{
"time": "20:41:02",
"speaker": "Jonathan Jackson",
"text": "architectural framing that makes us more reliable or makes the team more effective. I think those are the things to focus on. Kind of like what Bernie was saying. It's still not clear to me, to be perfectly honest, what… like, what alternatives we've considered here, and whether… like, what each of the steps are, and what the pros and cons for each piece are. Um, I'll leave some comments when I get a moment to… to sort of ask a few of those other questions. But I appreciate your sharing this with us, and. helping us to have a conversation about it. Diego, sorry to bump you there."
},
{
"time": "20:41:35",
"speaker": "DR",
"text": "Um, yeah, I was thinking, like, what is probably, at least for me, what's making me uncomfortable, uh, isn't that I don't want things to change. It's mostly that it's easy to get. kind of lost into the things that are good about a change, uh, and it's not clear to me what we're trading off here. Um, I have zero idea what we're losing with this change. So if we can do some work to help clarify that in a conversation, maybe somewhere we can document it and discuss."
},
{
"time": "20:42:09",
"speaker": "DR",
"text": "Oh. It would be great. I think it would help. Get people aligned on whether it's a good or bad change. That's all."
},
{
"time": "20:42:18",
"speaker": "Alex Martemyanov",
"text": "Let me answer it all as well. What we are losing, we're already lost. storyboards, uh, we've lost plugs for, uh, alpha review and CI, and I really believe it's making the product better and more. I'm predictable, in ways. We are losing the direct connection between CI flag and debug flag, but it's resolved already on CI side by setting an environment variable. Wow. What else?"
},
{
"time": "20:42:55",
"speaker": "DR",
"text": "I don't think… for what it's worth, I don't think we should discuss that here, because if anyone is not here, they're not gonna know. I think it would be great if we can lay this down somewhere that people can see. And I think…"
},
{
"time": "20:43:05",
"speaker": "Alex Martemyanov",
"text": "Yep."
},
{
"time": "20:43:07",
"speaker": "DR",
"text": "Uh, I don't wanna… As I understand it, there aren't a lot of things we're losing here, probably. I don't know. But I think it would be really good to really spend some time thinking about the things that may become more complicated for us. Like, I'm going to make something up. Maybe updates are going to be harder or whatever. Apple comes up with some new thing. So again. I don't know. I think it would be the kind of thing that if we can clarify, it's going to be so much easier."
},
{
"time": "20:43:39",
"speaker": "Alex Martemyanov",
"text": "Okay, yeah, I'm gonna prepare a tech design, spend in this, but at this point, uh, it's generally nothing lost anymore, so… What could be lost is not already lost. So, this is basically the point of just moving files between the targets, and yeah, we are losing this ability to include. To mix the targets and point them to files that nobody knows where they are located. So… That's the real trade-off, the only trade-off that's remaining."
},
{
"time": "20:44:18",
"speaker": "Jonathan Jackson",
"text": "All right, we'll watch for a tech design, and I hope everybody who has questions or other interests in this is going to be able to chime in."
},
{
"time": "20:44:19",
"speaker": "Alex Martemyanov",
"text": "Please."
},
{
"time": "20:44:26",
"speaker": "Jonathan Jackson",
"text": "the conversations that happened in Asana, and we can have further conversations in team meetings as we proceed, too, if we need real-time ones."
}
]
}