[HN Gopher] The Architecture of Open Source Applications
       ___________________________________________________________________
        
       The Architecture of Open Source Applications
        
       Author : letientai299
       Score  : 260 points
       Date   : 2020-08-31 15:34 UTC (7 hours ago)
        
 (HTM) web link (aosabook.org)
 (TXT) w3m dump (aosabook.org)
        
       | chubot wrote:
       | FWIW the Oil project was partly (negatively) inspired by the very
       | helpful description of bash's architecture:
       | 
       | https://aosabook.org/en/bash.html
       | 
       | The maintainer expresses some regret about the parser
       | architecture. I referenced this in several 2016-2017 blog posts:
       | 
       |  _OSH Parses Shell Scripts Up Front in a Single Pass. Other
       | Shells Don 't_ - http://www.oilshell.org/blog/2016/10/13.html
       | 
       |  _OSH Can Be Parsed With Two Tokens of Lookahead_ -
       | http://www.oilshell.org/blog/2016/11/17.html
       | 
       |  _The Thinner Waist of the Interpreter_ -
       | http://www.oilshell.org/blog/2017/01/26.html
       | 
       |  _Word Evaluation_ - http://www.oilshell.org/blog/2017/03/09.html
       | 
       | ----
       | 
       | This principled architecture ended up paying off in a couple
       | unexpected ways, which I wrote about earlier this year:
       | 
       |  _Oil Uses Its Parser For History And Completion_ -
       | http://www.oilshell.org/blog/2020/01/history-and-completion....
       | 
       |  _Oil 's Parser Doesn't Worry About Aliases and Prompts_ -
       | http://www.oilshell.org/blog/2020/01/alias-and-prompt.html
       | 
       | Summary: in addition to the regrets expressed by the maintainer
       | in the article, bash actually has multiple ad hoc, incorrect
       | parsers for its own language! They are incorrect to the point
       | that a separate project (bash-completion) has code to paper over
       | the errors.
       | 
       | Oil uses the same parser for all use cases. Moreover, its parser
       | isn't littered with orthogonal concerns like the interactive
       | prompt and expanding aliases.
       | 
       | ----
       | 
       | However I still need help finishing the project -- see what I've
       | cut here: http://www.oilshell.org/blog/2020/08/risks.html
       | 
       | And feel free to contact me (address on home page and in profile)
        
       | dllthomas wrote:
       | I've been working through the first volume in a reading group
       | with a few friends. Some chapters are definitely better than
       | others, and it often requires awareness that it captures a
       | snapshot of thinking from ~10 years ago, but it's been a good
       | experience.
        
       | astatine wrote:
       | I was inspired by the AOSA many years ago and I had studied (and
       | held out) as an example the Apache architecture (about 18-20
       | years ago). It is indeed a pity that so many younger software
       | engineers really have no idea of how heavily used real-world
       | systems get built. Nor do they understand all the various
       | tradeoffs and corner cases that need to get handled to make
       | products work well in real life.
       | 
       | Building Apache from source (including a few key addon modules)
       | and configuring it to work for a small set of tests was step 1 at
       | my organization then. Those successful at this would then get
       | into the source itself. Fun times!
        
         | fizwhiz wrote:
         | > It is indeed a pity that so many younger software engineers
         | really have no idea of how heavily used real-world systems get
         | built. Nor do they understand all the various tradeoffs and
         | corner cases that need to get handled to make products work
         | well in real life.
         | 
         | Isn't that a hallmark of a junior engineer :) ? If you're
         | trying to achieve deeper technical depth (which takes time), it
         | helps to be a part of an organization that _rewards_ said
         | technical depth.
        
           | mesaframe wrote:
           | > it helps to be a part of an organization that rewards said
           | technical depth.
           | 
           | I agree. My previous job wanted to employees to finish work
           | ASAP. There were no incentives for quality. Performance was
           | judged on the basis of how fast one can push things out
           | irrespective of quality. As a result there was lack of
           | engineering.
        
             | pault wrote:
             | Not only that, but those types of organizations are also
             | the ones that are likely to tell experienced engineers that
             | they are "overqualified" for the job because they want more
             | juniors that won't push back against harmful practices.
        
         | krisgenre wrote:
         | Unfortunately deep technical depth is unwarranted and
         | unwelcomed in many organizations. In fact you repeatedly get
         | told that "the customer doesn't care about your code". At the
         | end of the day adding yet another 'if' condition to patch up
         | things is what is usually appreciated.
        
           | non-entity wrote:
           | > I once worked at a place where we had an endpoint on an
           | application taking a long time because of a weird DB query,
           | like 12+ seconds to query a few hundred rows. Was pretty much
           | told if we didn't figure it out today it doesn't matter,
           | we'll ship it like that.
        
       | eatonphil wrote:
       | I've had the idea for a while to start a club to read through
       | open source projects, compile them, extend them, note
       | architectures and design decisions, look at documentation and
       | CI/testing organization, etc.
       | 
       | Do something like one project per month with one topic among the
       | above per week. Haven't found the right group of folks to
       | experiment on with this yet.
       | 
       | Edit: Send me an email if you'd like and I'll think about hosting
       | this virtually.
        
         | nandhinianand wrote:
         | Me too.. I've not found the trigger to keep doing it on my
         | own.. So a group might work..
        
         | mathieubordere wrote:
         | email sent!
        
         | Jarwain wrote:
         | Sounds like fun! If you end up putting this together, I'd
         | definitely be interested
        
         | tobylane wrote:
         | Are you looking for a book club like group to hop around with
         | or some projects eager to have you?
        
         | serial_dev wrote:
         | That would be really cool. Maybe live streaming the content?
        
         | [deleted]
        
         | MoroCode wrote:
         | This sounds really interesting !
        
         | jooz wrote:
         | To understand large codebases is my biggest weakness. I would
         | be definitively interested.
        
         | di1eep wrote:
         | Very much interested. Email sent.
        
         | phkahler wrote:
         | Do it yourself on youtube. Have a patreon page. Go over the
         | code yourself to get your impressions and then interview the
         | main contributors about the project.
         | 
         | Done right I think that may go somewhere.
        
           | danbmil99 wrote:
           | I would definitely subscribe
        
             | Cognitron wrote:
             | Same
        
               | dwoot wrote:
               | samesies
        
         | dzink wrote:
         | I'd love to join as well. Email sent.
        
         | iandinwoodie wrote:
         | I'm interested; email sent!
        
         | jcranmer wrote:
         | On a similar note, I've thought about putting together a
         | presentation on debugging and understanding large codebases by
         | fixing a bug on a large project whose source code I've
         | literally never seen before. I figure that by picking a
         | codebase I have 0 experience with, there's less risk of
         | skipping over steps.
         | 
         | The biggest hurdle for me has been actually finding a project
         | I'm interested in where I haven't yet gone poking around the
         | source code for some reason or another.
        
           | eatonphil wrote:
           | Yeah, I've also been interested in writing more about
           | orienting yourself in novel codebases. I don't think it's
           | explored very much.
           | 
           | It's a pain to write about because you have to find some
           | contrived error (real or not) in a contrived app. I've got a
           | draft of a post but without the examples filled in.
           | 
           | Would like to read (and share) what you've got.
        
             | monksy wrote:
             | It's not explored very much because most new developers try
             | to push for greenfield development and they're trying to
             | split everything up even when it doesn't need it.
             | 
             | Now we're having multiples of codebases to comb through.
        
         | spirobel wrote:
         | me too. I actually did this with the discourse.org codebase. I
         | can make a youtube video about it if someone is interested. I
         | spent over a year digging into it.
        
           | EGreg wrote:
           | Ooh can you do ours? It's a fair bit more complex mand
           | general-purpose than Discourse, though.
           | 
           | Would be great to see your impressions as you dig into it and
           | maybe record yourself on youtube. Any way I can be of
           | assistance, let me know.
           | 
           | https://github.com/Qbix/Platform
        
           | farias0 wrote:
           | I'm definitely interested!
        
         | badrchoubai wrote:
         | I'm interested in this
        
           | faustocarva wrote:
           | Sure i'm also interested
        
         | sali0 wrote:
         | Very interested, would love to be a part of this.
        
       | dang wrote:
       | If curious see also
       | 
       | 2019 https://news.ycombinator.com/item?id=20731206
       | 
       | 2015 https://news.ycombinator.com/item?id=9418788
       | 
       | 2013 https://news.ycombinator.com/item?id=6404929
       | 
       | 2013 https://news.ycombinator.com/item?id=6613748
       | 
       | 2011 https://news.ycombinator.com/item?id=2904425
       | 
       | 2011 https://news.ycombinator.com/item?id=2598643
       | 
       | 2011 (a bit) https://news.ycombinator.com/item?id=2578071
       | 
       | There have been many other submissions
       | (https://news.ycombinator.com/from?site=aosabook.org), but those
       | seem to be the nontrivial threads about the book itself.
        
       | amelius wrote:
       | I'd like to see Kicad, Freecad and Inkscape covered.
        
       ___________________________________________________________________
       (page generated 2020-08-31 23:00 UTC)