Live data from Hacker News

Using a framework will harm the maintenance of your software

berk.es

271–280 of 550 posts

Re: Using a framework will harm the maintenance of your software

#271

Earlier quoted context omitted.

Are we using different Djangos? Let’s take it for granted you’re using it with HTTP since it’s a web framework (this would all apply with WS). You routes call your views. Your views load your models. These feed into your templates, which go into a response. You can tweak what’s going on at each step (DRF) but there’s definitely a way it’s all supposed to work together. It’s classic IOC.

I use Django with and without HTTP. All a Django View is is a function (or in the case of a class-based view, a method of the class) that takes a request object and returns a response object... this is pretty fundamental to HTTP, so any HTTP app will do this. Its not Django dictating it, its the nature of HTTP. You don't have to use any of those parts of Django if you don't want to. I often opt to use Jinja2 instead…

I second the mention that almost everything is replaceable in Django. And as a matter of fact DRF replaces the whole Request / Response handling with its own.

Re: Using a framework will harm the maintenance of your software

#272

Earlier quoted context omitted.

> 1. Every sufficiently complex framework-free application contains an ad hoc, informally-specified, bug-ridden, slow implementation of half of a framework. Of which you are the creator and expert, and have complete control and insight, and can change it in any way you want any time. It is in 100% alignment with your goals at all time. If you use a framework your organisation becomes incredibly complex, because you a…

> Of which you are the creator and expert, and have complete control and insight, and can change it in any way you want any time. It is in 100% alignment with your goals at all time. And then you change a job and you take 80% knowledge with you and your now-past project is in deep trouble.

This. And you’ll feel lost or sub-productive while you ramp up on the new company’s bespoke framework.

Re: Using a framework will harm the maintenance of your software

#273

Earlier quoted context omitted.

> Of which you are the creator and expert, and have complete control and insight, and can change it in any way you want any time. It is in 100% alignment with your goals at all time. And then you change a job and you take 80% knowledge with you and your now-past project is in deep trouble.

If knowledge is on a single person alone, then your ex-company has bigger issues than framework or no framework. Not to mention that the interesting parts of your app should be the domain logic and workarounds and solutions used in it for business issues and historical layers of bussiness logic choices. And that a single person can take with them whether there's a framework or not.

The advantage is that I wrote it and am the foremost expert on how it works.

If it's a matter of training up other people, we're just as well becoming experts in a framework

Re: Using a framework will harm the maintenance of your software

#274

Earlier quoted context omitted.

> 1. Every sufficiently complex framework-free application contains an ad hoc, informally-specified, bug-ridden, slow implementation of half of a framework. Of which you are the creator and expert, and have complete control and insight, and can change it in any way you want any time. It is in 100% alignment with your goals at all time. If you use a framework your organisation becomes incredibly complex, because you a…

That’s why I always start a new app by writing my own operating system for it first. Use frameworks, use libraries. They will save you time, make your code less buggy, make it easier to hire other people. Writing your own ball of mud is great for a hobby but not for business.

I started using a framework for a task at work, was immediately tripped up by an obvious stupid bug in the config files, reported it and it was closed because "too many people already depend on this behaviour". So now I've in-sourced other companies legacy and taken on a huge liability in depending on the evolution of undefined number of other organisations and their code bases.

And even worse when these frameworks are open source and don't even have any accountable people at all, and god knows how many people working professionally are suddenly held hostage by some dude who just felt like going backpacking in south america for 6 months without giving any notice to anyone.

Re: Using a framework will harm the maintenance of your software

#276

Earlier quoted context omitted.

I first thought to post some links to code bases that, in my eyes, aptly counter argue your claim. Then I realised that you have already solidly placed yourself in a corner and are bound to defend that corner no matter what I am going to post. Since there's no objective measure of what constitutes as a mess (in contrast to what is simply not perfect) it's also easy to convince yourself that the statement always remai…

"I really have proof for my argument, I swear, I'm just too petty to provide it, trust me bro". Are you serious?

[deleted]

Re: Using a framework will harm the maintenance of your software

#277
post #196

Earlier quoted context omitted.

Maybe common structure, not common parts. "Framework" is a good description: it gives you the shape, you fill it in.

Care to elaborate the difference? In both cases common code is extracted.

The article includes a crucial point about inversion of the flow of control. Somewhat exaggerated: You call into a library; a framework calls into your code.

The old archetype of a framework might be one which expects to control an overall event loop for your application.

In practice many things we would still recognise as frameworks allows you to undo that, but I still think it's a useful rule of thumb in that even many frameworks which technically allows you to remain in control of the overall flow tend to assume the framework will mostly dictate structure and flow.

Re: Using a framework will harm the maintenance of your software

#278

Earlier quoted context omitted.

I don't agree with this simplistic distinction between framework and library. There are plenty of libraries that call back into user code. A better definition might be that a framework imposes an entire 'application model' on you, and trying to step outside that predefined model is at your own risk, while a library is a much smaller and flexible building block (also a building block for frameworks). But there's a lar…

I think the last sentence is really true. And yes, there are libraries that call back into user code, which makes them framework-like in this regards. > A better definition might be that a framework imposes an entire 'application model' on you, and trying to step outside that predefined model is at your own risk This is the kind of definition were 50% will call something a framework and the other half will call it a…

This kinda suggests that most node modules are in fact frameworks, in that they accept callbacks.

Callback hell however, is not something I'd associate with a framwork

Re: Using a framework will harm the maintenance of your software

#279

Earlier quoted context omitted.

A framework is what happens when you write a ton of similar apps and factor out the common parts. The quote here is no more literally true than the original lisp quote, but (just like the original) that doesn't stop it from being true in spirit.

If that were true, what would be the difference between a library and a framework? Is a library not also factoring out common parts? Or is a framework just a bunch of libraries? No, this definition doesn't describe what people understand as frameworks.

I would say the difference is that you can put a shim interface between your code and a library, allowing you to switch it out safely if desired.

A framework is a library that is so pervasive that you cannot reasonably do so - your shim would just be a copy of the framework's API, and it would be exceptionally difficult to take a different framework and make it fit the shim.

E.g. if you need to work with time zones, you can easily write out the function signatures you need, then look up any number of date-time libraries and make any one of them fit your shim.

But if you need to 'manage data flow between backend and UI', and try to write out the function signatures you need, you're either going to be copying a particular framework's API or you're going to have a hell of a time implementing the same signatures for two different frameworks if one is one-way and the other is two-way.

Post reply on HN