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

The main issue I see with these frameworks is that they cannot match Rails' support ecosystem. The framework has around for a really long while and rails developers have made - and documented - every error, kink and detour it is possible to make when writing code. I have often been pleasantly surprised to google an esoteric problem I imagined could only arise from my own unique brand of kludginess, and find that the community had encountered and solved same in the past. This is of massive value especially to new developers.


I am pretty sure. If you developing the next Basecamp these are essential. However, I rarely see Rails succeeding in other aspects of web development. I spent some time on trying to make Rails work for use cases that are not the perfect match for this ecosystem and failed. Yet, it is quite possible that there are millions on web applications out there, running on Rails happily. It is just not a great fit for things I do.


And how, exactly, are you differentiating a "Basecamp-like" startup from a "non-Basecamp" startup?


Basecamp's problems seem particularly well suited to a batteries included CRUD framework. There are plenty of problems out there that aren't CRUD-centric


Exactly.


non-Basecamp startups:

- processing images

- providing API for warehouse fulfilment for online retailers (peak load is 100x of base load, latency goes out of the roof before Rails just crashes with OOM)

- real estate indexing with huge amount of data (we could not make the full text search work reliably with Rails)

These were pre 6.0 and I am pretty sure many things changed since, I am just saying it is easy to run into these situations. The bigger your framework the more assumptions are built in that are hard to come by. It is good for Basecamp startups not good for non-Basecamp startups.


Image processing: Spin up sidekiq workers and do your image processing in parallel in background processes.

Providing API for warehouse fulfilment with peak load 100x greater than base: Run your Rails APP in any number of possible auto-scaling configurations.

Real Estate Full Text Indexing: Use ElasticSearch alongside Rails to provide highly performant full text indexing/searching


Are you suggesting that there is more to it than just Rails and an amazing ecosystem? I agree.


I'd be interested in knowing what areas you found Rails lacking. Care to elaborate ?


I might be wrong but aren't real-time areas like WebSockets not really strong points in Rails? I do see that Action Cable appears to have improved, and I don't know at what point performance issues would get in the way, and I also probably don't know about some potential solutions. Should one choose Rails for an application with significant real-time / reactive functionality?


For me the most important one is performance and the lack of trust in my code (run time errors).

- https://blog.codinghorror.com/performance-is-a-feature/

- http://www.nicolas-hahn.com/python/go/rust/programming/2019/...


I totally agree that app performance is important.

But I really think there is a difference between framework/programming language performance and acceptance-level app performance.

It is possible to have a good performance app (Github, Shopify ) even if you don't believe that Ruby is good enough in this category.


It depends on what you need. If you're building chat and want presence features so you can see who's online (and with how many and what type of devices), Elixir + Phoenix gives it to you out of the box.

I agree with your point about a sparser number of libraries, and sometimes that slows me down. That said, Elixir's ergonomics and documentation is fantastic.


There’s kind of a middle ground where Rails is widely-used enough that it has this advantage over stuff like Elixir, but by the same token the Python, Java, and probably .Net ecosystems have the same advantage over Rails.


The place where Ruby really wins is speed of development. Despite massive ecosystems and many libraries, Python, .Net and especially Java all lag Ruby in terms of how long it takes to build a web app.

I'd say part of the reason is expressiveness of the language (since it's very easy to make DSLs with Ruby and Rails benefits greatly from them), but another part is cultural. Python, .Net and especially Java communities tend to suffer (and benefit!) from a strong emphasis on correctness and purity over speed and developer experience.


I'm not sure that Ruby is actually any faster or more expressive than Python. Having used both languages I consider them roughly equivalent.


Can you write DSL like the Rails router DSL in Python?

If so, how much work is involved?


Having a cute API and leaving the parentheses out of your function calls isn't a DSL, it's just a cute API where you leave the parentheses off. I know Ruby people call them "DSLs" all the time, but they aren't.

Python doesn't have an idiomatic equivalent to block arguments, but you could probably write an equally usable routing API. It just wouldn't look as cute because there would still be parentheses.

What you end up doing in e.g. Flask is decorating your controlle method with the path that routes to it. Turbogears controllers serve routes based on class and method names without the extra wiring that Rails has. Django has a Rails-style "URLconf" (https://docs.djangoproject.com/en/2.2/topics/http/urls/) that actually seems a lot more intuitive and explicit to me.




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

Search: