Hacker Newsnew | past | comments | ask | show | jobs | submitlogin

What do you mean by "heavyweight"? Also why is it a problem that something is "heavyweight"?

What problem are you trying to solve by asking these questions? What context is this question for? Are you curious how many people use a non-rails solutions for enterprise apps? Cloud apps? Personal projects? Apps you want users to pay for? A blog?

I'd suggest stating what problem you'd like to solve by asking this question so you can receive more detailed feedback. For example, if your company is spinning up a new app and you're evaluating choices, someone may respond that they used sinatra but found themselves reinventing rails so they wish they would have used rails. I'd say this is more insightful than "yea, we use sinatra". Alternatively, maybe someone used sinatra for a personal project and found the experience of reinventing rails rewarding and educational on their own time. Let us help you!



If I were the person asking the question- I'd get frustrated by this answer. Nothing against you, the response is accurate, sufficient, and true, but woo I was subconsciously leaning forward and covering my mouth while reading.


Why's that? Given the original question people can simply reply "me", but I assume they're looking for more than that.


The rest of this thread reads like plenty of posters had no trouble figuring out what was intended by the question.


> What do you mean by "heavyweight"?

Rails latest release (7.0.4) have 386,970 lines of code in total, 310,779 of it being Ruby code. 3000 files in total. Just the `lib` directory of `activerecord` has 33,036 lines of code, across 369 files.

By most metrics, RoR is pretty heavyweight, as their literal taglines are "Ruby on Rails scales from HELLO WORLD to IPO" and "A web-app framework that includes everything needed to create database-backed web applications according to the Model-View-Controller (MVC) pattern", so it needs to be pretty big to support those use cases.

Full `cloc` report in case someone is curious:

        4268 text files.
        3839 unique files.
         511 files ignored.
    
    github.com/AlDanial/cloc v 1.96  T=1.25 s (3079.1 files/s, 434339.6 lines/s)
    -------------------------------------------------------------------------------
    Language                     files          blank        comment           code
    -------------------------------------------------------------------------------
    Ruby                          3013          73152          54669         310779
    Markdown                        92          19324            388          45525
    JavaScript                      87           2974           2170          20955
    YAML                           171            406            350           3679
    CSS                             23            347            152           2409
    ERB                            386            303              9           2244
    CoffeeScript                    12             97            125            413
    JSON                            11              7              0            372
    HTML                            21             15              3            200
    Bourne Shell                     2             20             25            167
    Text                             7              0              0             51
    yacc                             1              4              0             46
    SQL                              1              6              0             43
    Dockerfile                       1              7              7             40
    SVG                              7              0              1             36
    builder                          3              1              0             10
    DTD                              1              0              0              1
    -------------------------------------------------------------------------------
    SUM:                          3839          96663          57899         386970
    -------------------------------------------------------------------------------


> By most metrics, RoR is pretty heavyweight, as their literal taglines are "Ruby on Rails scales from HELLO WORLD to IPO" and "A web-app framework that includes everything needed to create database-backed web applications according to the Model-View-Controller (MVC) pattern", so it needs to be pretty big to support those use cases.

Not sure what do you mean by "most metrics". Framework supporting features is not same as they being used all at once in every app.

PostgreSQL has more than 1.3M lines of code and it gets used by projects of all sizes, would you call it "heavyweight" too?


I’d call Postgres “heavyweight” compared to SQLite. Maintaining a SQLite db is as simple as a file, and then you can use litefs or litestream to back it up.

Maintaining a Postgres server or cluster is hard. But it offers way more functionality.

I agree that the term heavyweight can mean many things to people. I’ve take it as a generic mix of maintenance, complexity of project, ease of use for your purposes.


> PostgreSQL has more than 1.3M lines of code and it gets used by projects of all sizes, would you call it "heavyweight" too?

Yes. There’s not a definition of “lightweight” that could be applied to psql, at least without making the word useless.


yes is heavyweight, SQLite for example isn't , but is kind the point you want database to use multiple formats, have acid compliance, json support, parallelism, easy debuggability, scalability, fault tolerance. this are problems that you pay only little cost because 1 PostgreSQL database can scale to thousands or millions of users, and is more like a video editor you doesn't code directly in it, and data replication is difficult and expensive.

some people don't want have a server only for this and accept the drawbacks of not having a full database server, for example remoteok.


SQLite claims at least 180K LOC (~145K+25%, covering a substantial but incomplete part of the codebase), and the above report shows Rails at 386K LOC.

Suggesting that LOC does not support this argument, and perhaps is not a great metric in general, especially across different languages.

https://www.sqlite.org/amalgamation.html (as of Version 3.37.0 - 2021-11-27)


Compared to what? How about Django or Laravel?

And does ANYONE here want to compare Rails with the standard "enterprise" stack of Java and React, and all their implied dependencies (Spring, Lombok, etm.)?


I don't know why something with many LOC is a problem. Why does OP care about LOC?


More code, more liability. If you can get away with achieving the same with less code, things tend to be harder to turn into big messy piles of code.


I'm not a huge fan of rails but, you can generate apps that don't include active record example of all the flags you can pass to rails when initializing a projects.

    --skip-git            Skip git init, .gitignore, and .gitattributes
    --skip-keeps          Skip source control .keep files
    --skip-action-mailer  Skip Action Mailer files
    --skip-action-mailbox Skip Action Mailbox gem
    --skip-action-text    Skip Action Text gem
    --skip-active-record  Skip Active Record files
    --skip-active-job     Skip Active Job
    --skip-active-storage Skip Active Storage files
    --skip-action-cable   Skip Action Cable files
    --skip-asset-pipeline Skip Asset Pipeline
    --skip-javascript     Skip JavaScript files
    --skip-hotwire        Skip Hotwire integration
    --skip-jbuilder       Skip jbuilder gem
    --skip-test           Skip test files
    --skip-system-test    Skip system test files
    --skip-bootsnap       Skip bootsnap gem


Yeah and Rails is modular enough that you can easily pare it down even further - you don't need to `require` everything.


What does liability mean in the context of a batteries included app framework?

If you ever plan on becoming liable for the framework code you're doing something very wrong.


This is a real inexperienced take about a codebase with a huge number of contributors and users, with a lot of test coverage, that has a history of addressing P0/P1 issues quickly.

Do you have the same concerns about your compilers? Your web servers? "More code, more liability" is a very sloganeering/cargo-cult take.


It’s true, though. Code costs money. I looked into this years ago for a former employer and at the time it was broadly estimated that for each line of code that a company owns it costs at least $30 every time a developer has to look at a given LOC. This is true whether the dev is writing it, fixing a bug in it, or just looking at it to investigate something related. And that’s for every developer on the company. So if you have code that, for whatever reason, is constantly being looked at by developers, that cost rapidly jumps, even though no one is actually touching it.

I’m currently down with the Flu B, so don’t feel like looking up citations, and for that I apologize. My recollection is that this was, unsurprisingly, a fluid estimated, with lots of caveats attached to it. Regardless, it struck me as true, and something I’ve never failed to take into consideration when writing my own code.


Oh huh. I hadn't considered liability implications of using a framework. Thanks for the viewpoint.


The question was obviously in reference to something like Sinatra or Hanami, or simply using individual gems.


> Also why is it a problem that something is "heavyweight"?

One issue I could think of when a framework dominates a language is that it could steer changes in that language that benefit itself more than the language.




Guidelines | FAQ | Lists | API | Security | Legal | Apply to YC | Contact

Search: