I know the basics of programming and making games using OpenGL, but I still don't know how you go about making “real” software. Drivers and compositors are a mystery to me, heck, I don't even know how I would go about making a text editor.I'm also very curious about how to get started contributing to open source. The codebases are massive and honestly quite confusing.
>>108868685Cute Miku!
Learn the rope structure. There. Now you know how to make a text editor.
>>108870316only someone who never made one would think that
>>108871140LOL, text editors are simple to make. Unless your definition of one is neovim competitor.
>>108868685read sources for software you're interested in.I was interested in filesystems and power IC drivers so I just started reading Linux sources for that. Found out some cool macros and programming techniques in there as well that i now adapted to my own programs.For text editor, you can look up FLTK, it's an old school GUI toolkit, not as bloated as GTK or Qt, but more capable than Tk, the documentation literally contains a tutorial on how to design and write a text editor with it: https://www.fltk.org/doc-1.4/editor.html
>>108868685>"to make an apple pie truly from scratch, you must first invent the universe" ~Science guy
>>108868685Drivers and compositors are pretty low level.If you know how to make games, you can easily make a basic text editor. Use a bitmap font and a grid.Unfortunately, a lot of people are under the false impression that this sort of learning by doing is effective. You'll reach a point where you realize that the way you've written and designed your software isn't good and you'll be stuck. Since you don't know the "right" way to do this, refactoring/starting from scratch are pointless. The hard part is knowing how to do it correctly.Some naysayers might argue that there is no such thing as "the right way", but I say that they are coping because of their own lack of knowledge. There's an objectively good way to write text editors, and the secret lies in the vim/vs code/etc. source code.Reading large code bases is really hard
>>108868685>Drivers and compositors are a mystery to me, heckhttps://tldp.org/LDP/lkmpg/2.6/html/lkmpg.htmlhttps://github.com/obiwac/x-compositing-wm>I'm also very curious about how to get started contributing to open sourceMost bigger projects will have some guide on how to contribute and maybe labels for good first issues to look into.
>>108868685read Petzold's book on Windows programming
>>108868685making software is about documenting what the fuck you actually want it to accomplish.and it's not even hard. write down the information which will come in and the information you need the program to output. then write down flowcharts of states the software will be in. then write functions which implement data transformations and state transitions.that's it, you have "professional" software.
Why not use AI (like codex) to plan and implement a project in small steps and learn that way?
>>108873606>use AINot OP but >picrelUsing AI is detrimental to your skills no matter how you use it.
>>108873606AI often does fundamental bad decisions and if you don't correct it, you will end up with retarded, broken architecture.Use AI only for things you've already done 100 times and know all ins and outs of the problem.
>>108873781>AI often does fundamental bad decisions and if you don't correct itThey do need babysitting but that is another topic. They are great for learning. A problem like "text editor" is absolutely heavily included in the model training. If I would like to learn to how to make one, I would use codex for it.
>>108874032>They are great for learning.If you just use them as a search engine with extra steps, not as in "hey Claude, I want to write a X11 compositor using JavaScript, prepare project structure"
>>108871704even sqlite amalgamation file is completely manageable with simple std::string/std::vector like growing buffer and you won't even notice the O(n) in-middle insertion. so yes, they are simple, and rope/gap-buffer/b-tree anything more advance won't really help you, so it's bullshit to claim that learning one automatically makes an editoryou need three core things: screen coord to text position mapping function, text position to screen coord mapping function, and word boundry detection. and that's literally 90% of simple editor
>>108868685>>108868685>I still don't know how you go about making “real” softwareRead SICP or watch the lessons on YouTube if you want to "get it".https://web.mit.edu/6.001/6.037/sicp.pdfhttps://www.youtube.com/playlist?list=PLE18841CABEA24090>I don't even know how I would go about making a text editorThat should be really simple personal project though, particularly if you already know some graphics (assuming you want to make it graphical-first in the first place), what do you think you don't know?>how to get started contributing to open sourceDon't bother it's a waste of your time, focus on your own projects.>>108873606>Why not use AIBecause it's not fun and you won't learn anything from it?You are allowed to use some use AI (in a smart way without losing understanding of your own code) only when you already know what you're doing.
>>108874089Yes I originally suggested planning with the agent and step by step implementation. The models are surprisingly good now. Much more reliable than they were not too long ago. Imo it is really bad advice at this point to say OP should avoid AI.
>>108868685Whatever you do ignore the vibesloppers.
>>108874649I don't know anything about making a text editor. How do i even capture key inputs, saving to file, selecting, making the cursor change when hovering over text... All things I have no idea on how to make without using a premade library.
>>108868685>I'm also very curious about how to get started contributing to open source.You want to provide your labor to corpos for free?
>>108876673> without using a premade libraryThen your objective is your own Qt/GTK/WinForms shit.
>>108868685there's no magic behind softwareto accoomplish something 99.9% of the time you just have to do what needs to be doneit's as simple as that
>>108876673For making an application I find it useful to not even think about the UI at first, try to think about the essence of what you're making, a text editor is a tool to modify text, you can reduce the whole thing to a buffer where you keep text in memory and a bunch of commands that do operations on that buffer (this what vim does), these commands may or may not be something users actually use it can also just be a internal API, but since any UI can be reduced to a series of commands once you have that you can build any frontend on top of that.You can load and save files using the operating systems API, or more likely whatever your language gives you in your standard library.Your cursor is just a position offset in the buffer, selecting text is just keeping a range from position A to position B (moving cursor and starting and ending a range selection should be commands in your API).If you're in terminal it's pretty straightforward you get keyboard input from standard input stream.If your're in a graphical window you should honestly use some library, like raylib or SDL, you use the library API.My advice is don't get lost in the useless details, focus on the essence of what you want to build.
>>108874649miku legs
>>108868685> how to get started contributing to open sourcedo you use free and open source software often? have you ever found any bugs or inconveniences in it? maybe just things you know you could improve? if the answer is "yes" to at least one of these questions, check out the bug tracker of this project. if there are no issues for your problem, just open one. write a detailed bug report if you can, because even if you can't really contribute with code, a good detailed bug report is a contribution too. then, if you actually know how to fix the issue, submit the patch, tooat least that's how i did it.
>>108877240What's the point when the project it's either full of power trippers that will never let you contribute or by insane trannies obsessed with politics which will ban you with CoC when you disagree with them or by aislop spam?Open source is dead.
>>108877803NTA.I contributed to bunch of projects so far and never had any problems like you are describing.
>>108877803> incomprehensible babbleanon i don't care, i've literally contributed to free software, and i will continue doing so for as long as i have something to contribute. i'm speaking from experience here
>>108872669>and you'll be stuckive never gotten stuck with improving on things. maybe youre just shit?
>>108877240>>108878189why even contribute to opensource? i just fork shit with the patches i write for the stuff i want. by having a fork i'm padding out my resume.>b-but the other users won't get your patches!ok, fuck them. why would i just give you my work? backport my work if you want to benefit from it, and credit me in your repo. if i didn't need shit on github for brownie points i wouldn't post my patches anywhere at all.contributing to someone else's repo is no different from being a paycuck.