Episode 4
· 47:34
00;11;18;00 - 00;11;45;07
Unknown
I think in 2026. The most important part is to interact with another human to make a good source contribution. The first step is to understand humans need. So you need to talk with your maintainer. It may be a AI generated, but you need to review this proposal yourself before submit it to another human. Writing code using AI is not a crime around doing.
00;11;45;10 - 00;12;10;07
Unknown
It's good if you are the core maintainer of the project, and you need to think a lot more than just a task. You need to think about a cadence of your work. What would you say is the biggest misconception that people have before getting into open source? I don't think open source is.
00;12;10;09 - 00;12;31;05
Unknown
Hello and welcome everyone to The Merge, our second episode of the podcast. My name is Hendrik. Today I'm super excited because I'm joined here by Harrington Dark Home. The creator of AST. Grab an open source framework that we use here extensively at Car Driver, and today we'll talk a little bit about what AST grab is. If you haven't heard about it.
00;12;31;07 - 00;12;53;20
Unknown
The journey of an open source developers and much more. So with that, Harrington, so great to have you here. Thank you for coming on. Hard to to being the again in San for Cisco and October. Average office hours views is awesome. Splendid. That's true. We got a good spot here right. Yeah. Well I want to start off with like a small introduction of yourself.
00;12;53;20 - 00;13;15;26
Unknown
So maybe for those people who haven't heard about you, can you tell us a little bit about yourself and then maybe also a little bit of background on Instagram? Sure, sure. My name is a harrington.com. I wrote a, software called as graph. So as you graph is, search tool that's based, instead of tags, it's based on, abstract syntax tree.
00;13;15;28 - 00;13;46;22
Unknown
So you can think about it as, a search tool. But like a regular expression tool, like a grab grab. However, it does not use text or characters as the basic unit instead to use a, the syntax tree, the structure of a program as a unit. Right. That's a very interesting concept. I think, a lot of people probably haven't heard about that type of, you know, search or structural search before.
00;13;46;22 - 00;14;14;02
Unknown
So can you maybe compare it to something similar that programmers might have used in the in the past? Sure. Of course. So structure search is something I can say. We see the code as so if we are using regular expression tools. So we see the code as a sequence of characters. So say like we have a function then, then you have like if you ate something and after that you will see, the function name.
00;14;14;04 - 00;14;41;21
Unknown
Right. So they are just a function, a sequence of characters. And they, you can also have, comments. You can have string, you can also have a that the true logic of a program which is which has the, the text, all of your program. However, in the, in the eyes of this say, regular expression based tools, comment string and, your program, they are all the same.
00;14;41;23 - 00;15;03;22
Unknown
You cannot differentiate them. Maybe you can buy, but it will be very, very hard to, to differentiate if it is a comment or not. In the eyes of compiler. So your compiler will read your source text into, into the, the a memory structure and the that structure is usually, a grows like a tree.
00;15;03;24 - 00;15;29;04
Unknown
Right. That the root of your program is, program. And then you have the some strings called statements. And each statements can be expanding to say, a function statement variable declaration and that these structures actually understand the of your program. So you can know that, oh this string it happened to be a comment on that, that piece of code as string.
00;15;29;06 - 00;15;56;22
Unknown
So you can, be more precise to, to match the part of your program. Right. Can you give us like, an explicit example of how you would use it? So suppose you want to say you want to find a function calling an Al program. Right. So if you are using say regular expression then you spell the function name, then add the left parenthesis and then you need to search.
00;15;56;24 - 00;16;23;01
Unknown
However, the regular expression tool will also, search something inside your comment and also search something inside the, your stream. Suppose you have you happen to have, a string that has the same name as your function and to a will confuse your results. And usually when your code base is large enough, then these rules will be nontrivial to to to distinguish.
00;16;23;04 - 00;16;44;17
Unknown
However, if you are using structural to or I guess they are syntax tree based. So you can no, this must be a, a function call instead of, say, a function definition, function and say, method definition. Right. Speaking about large code bases. Right. So I think you developed AST out of a specific purpose, right?
00;16;44;17 - 00;17;07;25
Unknown
That, that came out of, can you tell me a bit more about the particular applications, like the pain point that AST arose off? So I did I ask for, for several usage. So one of these is to search in, large codebases. So suppose you have say several million lines of code. Several thousand. There's a lot of files.
00;17;07;25 - 00;17;34;03
Unknown
Then you will get a lot of a false positive using the regular expression tools. So, you know, you need something to, narrow down your results. And, ast is to is, as what, one good usage for that you probably cannot use other tools to, to achieve the same, purpose. For example languages, server or will be a good candidate for that.
00;17;34;06 - 00;18;04;28
Unknown
However, there is a piece say they have, features that it is now, relatively limited. So you can only find, say, a reference to a symbol. And to get that symbol you have to find its location. So R is peace interface in the good for your cry usage. It's it's really good for your ID, but it's not necessary for, good for your, for, your, your crude oil, inside your, your your CI pipeline.
00;18;05;00 - 00;18;25;14
Unknown
Right. And I think you, you tested that really, really thoroughly when, you know, kind of dating back to your early days as a developer, right? So, I think when we are talking yesterday, you were telling me a bit about how that was when you first started contributing to open source. And, you know, I'm thinking especially about your time at Vue.js, how you had that big migration problem.
00;18;25;17 - 00;18;48;28
Unknown
And how ast I mean, basically became, you know, a search tool out of that demand that you saw during that migration. Maybe you can tell us a bit more about that time as well. Yeah. So actually, I, I'm not, computer science background. So, I studied psychology in my college, and I wrote some, say, some program for my experimentation.
00;18;49;03 - 00;19;13;05
Unknown
So I'm, I'm studying cognitive psychology. Wow. Yeah. So I need to write some program to to, to present some stimulus to it, to my, experiment to participants. And that's my first, introduction to to program, programing. Wasn't there like, a Google like a Chromebook moment as well that you mentioned to me as well.
00;19;13;05 - 00;19;37;20
Unknown
Oh yeah. So yeah. But as say as, as a self-taught programmer, I actually I know nothing about open source. Actually, I know nothing about the programing. Oh, one time I joined, Google say Google I o meeting meetup or something. Wow. Google just to present his, setup of Chromebook. He has programing using them.
00;19;37;22 - 00;20;10;03
Unknown
He's from a Chromebook. So back then, Chromebook is just, a dedicated hardware for web browsing, but, it's a suddenly become became a, a very fancy tool for, for programing using them. When you are, when you are using them, you can you can virtually program on any hardware. It's really amaze me. And then what made me more, more is that the, the goal of just, without any mouse, without any, trackpad, he just type type, type double click click, click, click.
00;20;10;06 - 00;20;35;22
Unknown
While in everything the program just flows out. Wow. It's a really amaze me. So so then I've spent my my time to learn man. So I learned oh there is Munich. There is a world of open source programing. Right. And the later I, when I learned how to use them, how to configure it. So, a lot of people helped me how, how long ago was that point?
00;20;35;24 - 00;20;38;09
Unknown
Oh, that's.
00;20;38;11 - 00;21;05;13
Unknown
13 or 15 years ago. Oh, that's, almost a decade ago. So psychologist turns programmer. Yeah. That's awesome. Well, I think that was also something else that you you told me that, you know, running, on a Chromebook kind of told you a lot about being memory efficient, right? And kind of thinking about optimizing, which maybe also leads to the fact that you wrote about grep in rust, right.
00;21;05;16 - 00;21;26;16
Unknown
Is that a tangent there, or was there a particular choice behind that language? Choosing rust is not related to my say, and you ran to the ten years ago, but but I did choose rust to be its first. It must be fast. Unfortunately I cannot use the as I interpreted the language argument with, just in time compiler.
00;21;26;19 - 00;21;50;08
Unknown
It's still, not, it's fast enough or it does not give me, stable performance. The second rust has, very good support for concurrency. So so, for a search, for search to, using multiple, CPU cores, it is critical, right, because you have a lot of, files and you need a parallel processing for them.
00;21;50;10 - 00;22;23;06
Unknown
And finally, I think this is the most important factor as rust has, say, a very good, community. And, it provides a lot of useful tools. And actually, as the graph builds upon ripple graph, infrastructure much, yeah, they share the same graph and they actually share the same, same infrastructure. I used, the ignore crate ignore is, library that you can, list, list your, your file systems files.
00;22;23;08 - 00;22;46;07
Unknown
So it's a very fast library to find files. Rip grab use that. And yes, scrap also used that. So the one of the, the origin of performance comes from, say, the rust library. I mean, it is blazing fast. I, I just tried it. Yeah. I actually just, recorded a little tutorial on it on YouTube because I'm so fascinating.
00;22;46;11 - 00;23;08;11
Unknown
Yeah. How you can use that. We'll link it in the after, video. I think one thing that I've also found quite interesting by exploring more of the documentation and how it works, was, how many languages you support in this. And if you compare it to other tools that try to do similar things, they always bound it to to kind of maybe if it's JavaScript or whatever.
00;23;08;11 - 00;23;31;25
Unknown
So can you expand a little bit on, why that is needed and, and why did you how did you build that infrastructure. Yeah. So one thing point of say of a previous tool, is that they use so most programing language tools, targeted to, to several languages like, okay, you have TypeScript compiler, you have something like a JS code shift.
00;23;31;27 - 00;24;03;13
Unknown
They have, coupled it to one language on other like JavaScript or TypeScript. However, the, the idea of ast manipulation is not just related to, to one language. Right. It's a general idea that you can use for across different languages. And, usually these languages, specific tools have their specific APIs, their specific usage pattern. Can you name some examples, like just code shift up, code shift.
00;24;03;13 - 00;24;35;02
Unknown
There will be the the most prominently one time. So you need to write, a piece of, JavaScript to traverse the, JavaScript AST and to use JS code to C, to run that JavaScript. And it will say it will allow your JavaScript, pauses the, the files and the past, parts of the JavaScript, JavaScript years to back to your, your program and then you can do some say some some manipulations or do, do some, some, searching something like that.
00;24;35;05 - 00;24;58;20
Unknown
However, it's, it's quite hard to write. It's really hard to write. So it assumes you in your understand the Java JavaScript groups, AST and more specifically, it's, just code shift choice of AST and the JavaScript itself has a lot of, say AST representation of S per month. One author has one, and they. Yes, three. Yes, yes.
00;24;58;20 - 00;25;23;22
Unknown
Prima hay and if I remember crack to jazz code shift is based on recast. So there are a lot of different ast presentation for, for one common language, at least for me, I want to build, a tool that can be used across different language because I myself is, polyglot, programmer.
00;25;23;24 - 00;25;44;07
Unknown
I use a lot of language and, I believe a lot of people are the same with me because we are in the say we are we are in the, we are in the era of, microservices. Now, now, maybe it's, I era, but we used to live in microservice era, so you you you actually, we use a lot of languages.
00;25;44;09 - 00;26;03;07
Unknown
My, I personally use Python, rust, JavaScript. And then from an architectural point of view, I think one of the key points that you mentioned previously as well, it's like the tree sitter being able as a core functional piece to enable that support of I think it's 20 different languages that you support. So yeah. Can you explain some.
00;26;03;08 - 00;26;35;17
Unknown
Of course. So given I want to build, a polyglot tool. So you have to support a list of programing language. So you need to find a good parser implementation for them. But usually it's very hard. And you need let's say a uniform, abstraction of, a these language. So tree cetera is very, very robust tools to pass the language to actually is used by Neil Van Sad and these, famous, programing editors.
00;26;35;19 - 00;27;04;27
Unknown
So it, so the quality of these, these is, is guaranteed after you, we have a tree set the community, maintaining this project. So as you have actually, enjoyed this, the maintainers. So based on that, I can use tree sitter as the posture and the these positives can produce, say, a relatively reliable subtrees, programing, source code.
00;27;04;29 - 00;27;23;09
Unknown
That's a that's a very good point. Yeah. I mean, I think that that really helps. You also wrote a book mastering AST graph, right. Can you explain a little bit more why this tool needs, explanation? Because I think it's, you know, we talked about this, right? The patterns are very simple. But then there's also the rules, right?
00;27;23;09 - 00;27;48;09
Unknown
Yes. So, yeah, maybe can you draw the picture of how they combine together and where do people need to pay attention when using AST grab. Oh yeah. So ask grab. You can start use as you have relative to say say simple. You can just write some pattern and in pattern you replace some say variable with, meta variable like you, you use some dollar meta or something.
00;27;48;12 - 00;28;14;12
Unknown
And, this will gives you an instant feedback. It makes you feel this graph, it is very simple to use. However, pattern is relatively limited and you cannot search. Some say complicated case for for using just the pattern. So you need some way to combine these logics. Combine these pattern logics together. And that is where provides a thing called rules.
00;28;14;14 - 00;28;40;27
Unknown
Right. And to learn from pattern to rules requires a quite a lot of effort. And the usually users need to dig into my, my documentation to learn these things. However, the documentation is it is a good material. However, it does not give you a storyline like a book to tell you, from the, the progressively from the simple one to the, to the more complicated one.
00;28;40;29 - 00;29;05;15
Unknown
So, so I wrote this book to, to answer a lot of the commonly say, ask question in the come from the community. That's one point. And the second point is, I added that a lot of, say design philosophies and, the rationale is behind the grabs, interface. And these things are usually usually does not fit in my token mentation.
00;29;05;15 - 00;29;21;05
Unknown
So I'll have to see in the book. So if you are interested you can you can read it. Yeah, I mean I, I recommend it. I took a look, but I also took a look into learning a bit more about the atomic rule, the relation, and yeah, all these that you put together. But, maybe to move along the line a little bit.
00;29;21;08 - 00;29;42;10
Unknown
Can you also explain, you know, we talked about when to best used AST, what would be a case when you'd say like okay, maybe there's another tool better for the use case. Yes. So if you are using say your exploring your codebase. So and you don't need to to be very specific, then you can you can just use the regular expression.
00;29;42;10 - 00;30;06;02
Unknown
But I said they're based the search to the faster. And they also give you a lot of same. Maybe it's a false positive match, but since you are exploring the code base, these things build your intuition over the overview of your your repo. So this is for exploration. I usually, recommend you using regular expression, tools.
00;30;06;04 - 00;30;36;17
Unknown
However, if you need to be more specific, you have a very specific structure. Like I don't want to use I want to just allow a using specific API inside, of specific to say, class or specific functions. Then this is usage of is grab and and we can expand this idea to because I already use the, a list of, a combination of root to find specific code.
00;30;36;17 - 00;31;07;05
Unknown
Right now, I can extend this, idea to to linting, because linting is just is hanging the most a simple term. It's find some code that, can have problems, all issues, then you report it. So it is the kind of search plus report. So linting is also another use case of a cigaret. I think this is a really good narrative into talking about what I think most people are very interested about, which is kind of the a genetic imperative of AST graph.
00;31;07;05 - 00;31;26;04
Unknown
And, you know, the work that we do here at Code Rabbit and using AST grab to to ground our agents and truth when doing code review. Can you tell us a little bit more about how important and valuable this tool is for, things like, for, for example, to be used by an agent for, for, for ground truth.
00;31;26;11 - 00;31;51;25
Unknown
So is crab, in its, nature that provides a two features. The first is search and the second is linting. So for search you are using agent to deploy your codebase. So usually regular expression is still good red carpet. However if you have very specific, use case of your of searching, then a scrub can be an issue.
00;31;51;25 - 00;32;18;09
Unknown
Fine. However, that's is scrap is is not that useful for for searching. Instead, it's very useful for linting for agents, usually in your team or in your project. You have, you know, your project specific knowledge, projects specific say, hey, code coded patterns. Best practice. You want to express this to to your code. Code agents.
00;32;18;12 - 00;32;43;24
Unknown
However, that that's that's not necessarily easy to do that you can put these rules inside that sound like say something like agency MD, cloud, MD. However, these agents are not guaranteed to love to read a of these rules, and they usually forget it because, yeah, you are you're finding a needle in a haystack and your agent's rules can be very long.
00;32;43;26 - 00;33;11;14
Unknown
All right. You can think about linting as a way to dynamically inject these rules into, the agents context. When you agents write a specific, pattern of code, then you have to work captured that and inject your, your team's knowledge into that, that context. For example, I don't say say we want to to disallow an agent to, to use say, dynamic theme party in your codebase.
00;33;11;16 - 00;33;35;05
Unknown
Say you should, prefer a static import as in JavaScript. Then you can write it in your agent MDP, but it can come forget it. However, if you are using some linting tools and when you, the agent writes these code and runs, link to test it to can very, must see that the arrows, it's external.
00;33;35;05 - 00;33;56;01
Unknown
It can reject the, the submission code of submission and also guided the agents to correctly use your, your code pattern. I think a lot of at least when I was reading through parts of your book, you also talked to about the comparison to rack systems, which I think a lot of people are kind of familiar with. So, how do you compare that?
00;33;56;01 - 00;34;20;14
Unknown
Well, in what cases? AST at a for structural search, then what many people use like similarity search, as I think part of a lot of a generic workflows for coding and as well for review. Can you draw the parallel there? So actually they for searching tool there, there are different to use it to be honest. So first, we have already talked about forced exploration using regular expression.
00;34;20;16 - 00;34;45;20
Unknown
Right. However, if you are doing something some fuzzy search or intention based search, then probably, semantic search, like similarity based, a vector search is a better choice because you don't have a precise structure. You can describe it for that code. You it's usually depends on the say that function name, the variable name or the comment.
00;34;45;22 - 00;35;15;11
Unknown
So, a vector based search is better for this case. However, if you have something like a, you are in a large codebase and you have a, you want to to say you want to deprecate, an older API. Right. So that old API is once one specific usage of a specific code pattern, a specific structure like a function call with the function name like like old API.
00;35;15;16 - 00;35;44;26
Unknown
And then you have say you have a specific sequence, the function call arguments. So this one is really hard to be describe the without AST. So AC grep is really good for this case. And also it is very good for code writing because it has it's, syntax tree based. So you can easily capture these, say function argument.
00;35;44;28 - 00;36;06;25
Unknown
You mean if they have some nested structure. However, if you are using say graph, regular expression, it is really hard to handle this nested structure. Yeah. Would you say if you would have had, ast grab for that, Vue.js migration to Vue.js free would have then been easier back then. Oh yeah, probably since I have some background.
00;36;06;25 - 00;36;32;08
Unknown
So I used to be, a maintainer of, component library called Adam in plus. So Adam Pearse, was born, when built, this is just released. So back down when we need to migrate. And old Vue two bit base to a component library called element to view three and the Adam into to classes for that purpose.
00;36;32;11 - 00;36;57;17
Unknown
And we spent a lot of time, migration. Adam. Plus as, volunteer to be based on program. So, so we spent, our night time, like, we, we have a meeting, on 9 p.m. or something. And then we, as we create a lot of tickets and assigned to our volunteers, and, and then we, we migrated, component one by one, manually.
00;36;57;19 - 00;37;24;24
Unknown
So it's not hard, but it's not it's also not funny. It's not an interesting, so to have these, repetitive works. So actually, based on writing can be very helpful, right? Because, you just need to do you think about you, you need to, to do a puzzle of, matching AST. And at the end, a rule can match all your cases, all the codes instance that match this structure.
00;37;25;01 - 00;37;47;11
Unknown
So it makes a boring job into, Yeah. Fast and easy. Yeah, yeah, it's, it's, it will be, more interesting puzzle over the AST. Yeah. Give us a number. How fast do you think you can, you know, operate on maybe, 100,000 line code base. If you don't want to do a search and replace.
00;37;47;13 - 00;38;11;29
Unknown
Oh, that's depends on the A rule. But usually if you are having, a not too complex rule like you have, several, 2 or 3 patterns, combined together, it will be done in one second or two seconds. Well, that's incredible. I think I want to stay on that tangent, that you just draw from bias.
00;38;12;01 - 00;38;32;05
Unknown
Some from. Yes. J sorry. And talk a little bit about your career and open source. I think that's really incredible. Like how much you contributed to the core team of you guys, and, can you draw a picture maybe for, other people who might be listening? What is it like to work as an open source maintainer in the larger project?
00;38;32;05 - 00;38;56;29
Unknown
As well as a solo entrepreneur, so to say, an open source? And, yeah. How did that come along and how does it feel today? Wow. So this is a great question. So I think the for for for open source, maintainers. So the first thing you need to think about is your, your role in that project. So is it your, your full time job or it is your, your your hobby project.
00;38;57;02 - 00;39;25;17
Unknown
So this can be very different. So if so ask where is my hobby project. So I treat it as a side project. So usually I will spend say some morning coffee time to, to read through the, new issues and look at and look at the, the discord and answering some questions so that usually that won't take too much time.
00;39;25;19 - 00;39;43;01
Unknown
But I mean, how does that look now? Because, I mean, you have a lot of larger companies also adopting. Can you, can you name some of the, the public logos that. Oh yeah. There's some public like, Microsoft, the gen AI script. And Coravin is a very big customer. I really appreciate it.
00;39;43;03 - 00;40;11;10
Unknown
Also Amazon, Amazon's, Amazon Q is using that, for, for Java migration. That's a huge that's great. But, fortunately, this customer did not raise a lot of questions toward me. So I think the I think the reason that, I scope the project as a side project. So I will try again, different features.
00;40;11;14 - 00;40;33;16
Unknown
Is it that maintainable for me? For me personally, because we also have a daytime job, right? People should know that if the, for example, is to prep, it is can be extensible to, can be extended to do semantic analysis. But that will be beyond my, my my yeah. Time versus scope that you can commit to this.
00;40;33;22 - 00;41;00;28
Unknown
So I would usually leave it as an open issue and then control it and, and and a certain scope so I can deliver the best things to my users and also, maintaining something with language, for example, writing a good documentation is a leverage because you need only write it once. However, this, that documentation can be read, say, several hundred times.
00;41;01;03 - 00;41;28;24
Unknown
Yeah, a thousand times in your case. Yeah. Well, yeah, I think, that to say, I mean, I think, oh, how many stars does SD grub have on GitHub right now? 12,000. Awesome. Yeah. Which is amazing for like a very, a quite niche tool. But, it's very, very impactful. So, you were you already talked about this a little bit, but I think it's also good to know from an experienced, successful open source maintainer, how do you balance your life on that?
00;41;28;24 - 00;41;42;23
Unknown
So you said you have the mornings where you take your coffee. Is there like set times that you take or say, okay, now I'm going to maintain. And then if I get any more questions on discord, even though I feel the urge to answer, yeah, I'm going to stop here, or how do you manage that? So that just cost too much.
00;41;42;23 - 00;42;14;11
Unknown
Yeah, yeah, yeah. So that's a good question. So I think the the time management is, is heavily is a person based. But for me I have some, some time during the morning or after the my way back, back home when I, taking transit. So I will spend time on these things and, during weekend when I have, more time that I can, sit down and, triaged these issues, designing, new, say, a new solution for, to use those requests.
00;42;14;13 - 00;42;37;20
Unknown
So that's will be be the, the life or the pace of, of, side project. And then how was that maybe different or how is that different today to compare to your time at Vue.js? Oh, Vue.js is is more like, I find it, interesting. Say, I find an interesting task. That's interest me.
00;42;37;23 - 00;43;05;08
Unknown
Oh. I find a opportunity to to to improve the performance of Vue.js. Now I can spend my time on it. It's heavily, task based. Because I'm not the, say, the major maintainer. All of that, of that project. However, if you are the, the core maintainer of that, of the project or the leader of that project, then you, you need to think, a lot more than just a task.
00;43;05;11 - 00;43;30;03
Unknown
You need to think about, say the, the cadence of your, your work, when to release, when to when to release, when to have a blog, when to, give it to show. Shout out on Twitter. So that's all you need to think about, right? Maybe speaking about that as well. Like what boardwalk and the community play in order to support open source.
00;43;30;03 - 00;43;51;20
Unknown
I mean, there's things like company sponsorship, of course, but, there are other also other ways, right? I mean, we saw the the band acquisition actually not too long ago. How do you see open source developing in 26? What do you think is important open source in 2026? It's a good question because we and we now have, we are we are now in the AI era, right.
00;43;51;20 - 00;44;26;24
Unknown
So so writing code probably is into the the bottleneck. However, you need to think you need to spend time, spend effort to design your software and to find it, the demand for yourself for software, in some cases, you need to design the community, decide how you want to grow the community, how you, how you to, demonstrate your, your software's capability, how you're, marketing your software and, most importantly, how you balance your.
00;44;26;27 - 00;44;47;03
Unknown
So as I said, project, how you balance your, your work, your life, your, your hobby. And also, if you are building a business upon to open source, then you need to think about, okay, what's the business model behind it, the open source project. Can you give an example of one of your your favorite open source projects that you think didn't did well?
00;44;47;03 - 00;45;15;20
Unknown
And combining these these, these things that you just mentioned, so generally I think, voice zero and, rough asked for this answer. My as I'm out on my favorite open source project. So they are building very fast tools for the community. And at the same time, they are finding a way to monetize it using, by by customize by customization for big customers.
00;45;15;22 - 00;45;39;05
Unknown
So that's a balance between, and a nonprofit project with the for profit, commercial. You know, that's I mean, so that's, that's one good path. And then I guess there's also the, the, the sponsorship path in general with like smaller contributions that you can, you can put on that context as well. Like how did you actually connect with, with Code Rabbit in that sense.
00;45;39;05 - 00;46;03;06
Unknown
Maybe that's I think also an interesting story I could tell. Oh, that's so that's about two years or three years ago. Controversy. Alejandro just dropped, a code issue in, scraps repo. Hey, code gravity is using ask Gravity. What do you want to tell you? Use the code rabbit for a code review as well. Oh, I found that.
00;46;03;06 - 00;46;24;11
Unknown
Wow. Cool. Thank you for for using this. You have let me try try trial product and I actually code rabbit quite amazed me back then. It's 2023, so I had GPT 3.5 just released and back to hey, I, it's not smart at all. They cannot reason. They, they don't have the, the, the thinking mode or all the fancy stuff.
00;46;24;13 - 00;46;53;05
Unknown
They are very good at face. Right. So for story, however, they do not, do. The reasoning, however corrupt back then can already do build some very fancy, very useful, two cores for, for AI agents. I back then, code Rabbit can already present the proof that all this code is used by by these places by using wrap.
00;46;53;05 - 00;47;16;05
Unknown
Grab all is wrap and I I'm quite amazing and I feel very. I felt very, surprising and amazing when when the code arrived to, attach to the proof. You know, it's the response. Oh, it says using ancyl. I'm very honored. Yeah. I mean, you're you're a big part of this. Took success, too. So thank you for being there.
00;47;16;05 - 00;47;40;20
Unknown
I thank you for all the work that you've done. And obviously, it's so great to have you here and be part of the journey. Speaking about this first PR that, sorry. Yeah, this first, issue that that Azure raised and, what would be what would you recommend for somebody, who wants to contribute to, smaller or larger open source project that has never contributed before to something?
00;47;40;20 - 00;48;04;26
Unknown
So maybe somebody is listening here and thinking about, okay, how can I start? What would be the first PR you would recommend, or how would you get into it if you were to do it again? I think in 2026, then the most important part to interact with another human is to be human. So contributing code is has never been easier before.
00;48;04;28 - 00;48;34;03
Unknown
I could you can you can easily grab an issue and ask your, your AI agent to, to to complete that for you. However how you communicate to to to to maintain a how you communicate your idea to the to the to another human is the most important part. So probably you can so to make a good open source contribution the the the the first step is to understand the human need.
00;48;34;05 - 00;48;59;11
Unknown
So you need to talk with the maintainer. Hey I want to grab this task. Is it okay I do that. I want to build, these steps, these statuses. It may be a AI generated, but you need to review these solution, proposal yourself before submitting to another human because that's review your your AI generated code before sending to another human is a good idea.
00;48;59;14 - 00;49;28;06
Unknown
Great. It's, it's try to do do that. And the second after get some say, consensus or get some alignment with the maintainer, you can start building the, writing code using AI is not a crime. Around doing. It's good. However, you need to ensure that code is working. So that's the important part. And then you can write some some summary, you know using AI or manually.
00;49;28;12 - 00;49;59;12
Unknown
But you also need to to guarantee to these summaries is of high quality and it is regrettable by another human instead a lawsuit generated by error. So is there maybe any what would you what would you say is the biggest misconception, that people have before getting into open source? I don't think open source is necessarily, a perk or an age for your job seeking.
00;49;59;14 - 00;50;26;23
Unknown
So a lot of people, submitting PRS in order to get another lie on their resume, the usually it doesn't work. Unfortunately, it it doesn't work, especially if you are applying for a big company. A big company has their own rubrics. The to say rate their their candidates open source project is not necessarily, a good way to impress the interviewer or candidate.
00;50;26;25 - 00;50;54;12
Unknown
Rather will be. Well, that's the one thing. And the second is even if the company, values open source contribution, it also depends on your quality of your contribution. If you are building something like, fixing some typos or, fixing some, some very easy these issues, then it's probably cannot help you. That's fair. So the I mean get in there, getting in there is easier than ever before.
00;50;54;15 - 00;51;15;08
Unknown
Yeah. Doing something valuable is important. Okay. Good. We'll we'll keep that in mind. Maybe to slowly start wrapping it up a little bit. What is what is next for you on on on ast. Grab on. Is there like, a roadmap that you can share with us? What we can expect next? Will be a feature that you are dying to build, but just haven't found the time yet.
00;51;15;11 - 00;51;45;27
Unknown
Well, I think the for AST graph I now, seeking a way to be to make it more extensible, be more language specific. For example, tree setters parser cannot handle some languages, but a specific constructs like, macros, special macros in CP because it cannot be expanded to to do the cracks problem. Instead it's just deposited either as a function call or a macro call.
00;51;45;27 - 00;52;21;21
Unknown
So you cannot do something deep inside the macro. So probably AST will grab will provide some hooks for pre-processing for source code file. That's one thing. And then the second is to, to make the ask wrapper more, more intelligent, I can incorporate to some semantic information, say provided of all by, by compiler. For example, you can use something like oxy or rough to provide a symbol information for for the AST.
00;52;21;23 - 00;52;40;19
Unknown
So that will be another way, way to, to reach the, the, the root system. And then another thing that we talked about that maybe it's not so much in your hands, but it's obviously also the agent make use of ast grep and the work that, we need to do another to have agents called AST grabs fix to flee.
00;52;40;22 - 00;53;00;17
Unknown
As a tool, can you comment on that? How do you do that best. Right now what do you think? What are you what are we hoping for? For the model provide us to to adopt? Yeah, yeah. The simple part of, script is it's pattern. So model can can write, pattern query relatively easily without any prior art training.
00;53;00;20 - 00;53;26;17
Unknown
Contact context. So that's, that's easy, but not that useful. The useful part is that, the agent to write a query, a rule for your, for your search, intention or your intention. That will be very helpful. So usually a writing rule isn't, easy, even for human. So you need a lot of trial and error.
00;53;26;17 - 00;53;57;19
Unknown
Looking at the. Is the tree output. So to do that, you will probably need to ascribe a skill. That skill will provide the, complete set of instructions for AI agents to use. AST grabs the AI to debug the the rule, debugger, the the parser output, and after some, some agent agent exploration, most intelligent models can figure out, cracks.
00;53;57;21 - 00;54;23;24
Unknown
And the in my experience, and they, they are very good at it. Even better than me. Nice. And then so that means maybe on the documentation problem, you'll launch your, your publisher first skill. Oh, we already have that. Okay. So using that skill will be very helpful. And, when you, when you write, write out a rule, then you can, integrate it into your, say your linting, linting or CI pipeline.
00;54;23;24 - 00;54;49;06
Unknown
And then you can use that as, as a dynamic, a context injection tool for you, for your or you can write, a set of rules that tell you, I do not write code like this. Write code, like that. And, this instruction never needs to go to your, your your precious agents. And instead, it can be dynamically injected just in time.
00;54;49;06 - 00;55;08;18
Unknown
Context. Yeah. That's interesting. Time context. Nice. Yeah. Very, very cool. I want to wrap it up with a couple of rapid fire questions. So I'm just going to ask you, I think maybe 3 or 5, and you can just respond with like one word or one sentence. All right. Favorite programing language. Oh, I think you're right for us.
00;55;08;20 - 00;55;36;20
Unknown
There we go. Cloud Codex or open code hybrid coding agent. Oh I use cloud code and open code. Which one. Which one do you like for which. Wow. That's good question. So I use different tools for different to say scenarios. So for a big, big project for a project from scratch, I use open code, because I use, all my open code.
00;55;36;27 - 00;56;04;26
Unknown
So it's had better prompting, say built in. So I needed to, I don't need, need to, to, to spend a lot of time, constructing my, my, my prompts to make a good, project plan, inside the. Oh, my open code. I can do that. Oh, yeah. It's a little red lamp. If for for some, small task, I usually use the cloud code because the context is, but the building tools, is fewer.
00;56;04;28 - 00;56;29;24
Unknown
So, the context is, much cleaner and end, open code. Great answer. I love that. Favorite model. I think it's kind of a curve at least for coding okay. All right. Going with anthropic. How does language programing language it should be C plus plus C plus plus not not playing C and C is okay.
00;56;29;25 - 00;56;53;28
Unknown
Let's see. Plus has a lot of wow constructs as you need to remember the rules. It's really hard. Okay, good. One open source myth that you'd like to kill. I think it should be this one. Open source should not make money. It's all for for love and sharing. That's not true. Unfortunately. Cool. Okay, good.
00;56;54;02 - 00;57;20;24
Unknown
I can expand on that, because open source, actually, if you want to build some, serious open source project for, for non-trivial big project. So you need to think a lot about the, the case, the use case and the design, different mechanism. And also the different to say feedback to community build, buildings. It, it takes for that.
00;57;21;00 - 00;57;48;00
Unknown
So they are actually full time jobs. If you cannot view that, in one day by one person, you need a full team, full day jobs then. So you have to find a way to make it, sustainable. Right. So, yeah. So you need a need to think about monetization for your open source project. Otherwise you can only build a small side project.
00;57;48;07 - 00;58;14;09
Unknown
You can never build something more serious. Linux kernel. Kubernetes. Actually, they they are all they all have their, their, business model. Either it's a sponsorship or, big companies endorsement or some individual endorsement. I think that's, that's a very, very good line to, to clean it up. Yeah. No. So with that, I think that I'm at the end here.
00;58;14;10 - 00;58;33;07
Unknown
Thank you so much for sharing your wisdom, your wisdom with us, so on. And, yeah, please, if you haven't, checked out as a graph, give it a star on GitHub. It's an amazing project. Check out the tutorials, check out the documentation, let your agents run on the, skills and see how good it is.
00;58;33;07 - 00;58;42;13
Unknown
And with that, we'll closing it for today. Thank you for tuning in. Thank you so much, Harrington, for coming by. And thank encoder for having me here. Yeah. See you now. Next time.
Listen to The Merge (by CodeRabbit) using one of many popular podcasting apps or directories.