Drupal Falling

Drupal Falling

It's really hard to believe a giant might fall someday. But actually the giant thing normally falls in a lot faster rate when it happens. And people gets away from it pretty devastatingly annoyingly fast.

How Microsoft, IBM survives so many years is a myth to me, I guess innovation has to play major roles there. Even when this scale of innovation is small, that 1% or 0.1% of contribution is what everyone is waiting for.

Innovation first

Content management isn't a concept that originates from Drupal, but it's Drupal who made it a big thing. However the market is always looking for new things, new ways of doing things, especially more efficient way of doing things in the management side.

Drupal isn't inventing or at least digesting the information fast enough on this fast-pace digital journey, partly due to its size, partly due to that the driving force behind it is always business, not technology.

And there's another reason, maybe more fundamental, the core isn't innovative for the past five years. I have been using Drupal from 6 to 8, there's no much innovative way of helping small business managing their content, the same way of doing CRUD, same way of storing data, same way of theming and deploying. It has been this same way of doing things for a long long time. 2-5 years can be what it takes to make history in web development. One of mentality behind the Drupal is that things can be very complicated, we just have to get used to it and see if we can get another add-on to facilitate this process.

But being not innovative on applying technology to business could lead to a suicide mission that costs resources with small return. People say don't re-invent the wheel, that's for established business, for emerging ideas, you should keep inventing until others find the new "dont re-invent the wheel" zone again.

Flexible architect

No one want to spend a lot of money making new idea happen, and no one want to spend a lot of money maintaining a website either. Architect is #1 important thing in building/running a long-lasting project/company. You want to keep it solid, and at the same time, you don't want to use a rigid approach. Rigid being everything in the same basket. The lesson learned in the past five years in web development is that new things, or better things happens every month if not days. In order to take advantage of the world creation, you don't want to settle down in an environment which gives you a false image that it'll make everything work, and everyone happy. Framework should be created to speed up certain aspect of the process, but not to dictate the process.

It's relatively cheaper to integrate un-related components together than tuning the internal mechanism of each component, especially when your tuning is not in this component's manual. Taking components as black boxes and then operating them according to their manuals creates more flexible architect, more usage coverage to each component and in turn more return for your investment. Not to mention, when the time comes that one component needs to be replaced, it does not bring down the whole system with it.

Business Unit

On the other hand, if a framework requires you to follow strict ways of doing certain task, and at the same time requires constant internal turning in order to meet the new requirement, it marks it as a rigid framework, because it lacks the mechanism to adjust itself to a state that corrects itself. Rigid things are breakable easier than flexible thing and normally against innovative ideas by design.

How can Drupal be not flexible? It has hundred of modules, handful of templates. But if you ever happen to use some of the modules, you'll eventually realize the module isn't designed as a programming component, instead it has business logic blended in. Initially you might find it easy to use, especially for user with less programming skills, but sooner or later you'll find out it breaks the pattern of re-usability.

In order to get things re-usable, you need to first find its key components and try to decouple them as much as possible. Afterwards, the components can be reborn to unite again to assemble the system. Here the wrong thing is to blend things together and try to assemble a larger mess.

Don't get me wrong, there are couple of modules in drupal that are designed as programming component, but majority of them are blended with business logic (and look) too early. This caused the framework to be an octopus with all its legs pointing to a fixed direction no matter how the ocean is moving.

Static vs Dynamic

There's an important step in making website, convert the designer's mockup into a static web file filled with HTML, CSS and Javascript.

Normally this step is pretty straight-forward, however with a sophisticated CMS system, like Drupal, due to the complexity of theme, additional step has been created to further convert the static web file into theme ready dynamic template.

This step is so intense that the industry has to create another job title "Drupal Themer". This actually reminds me a special front end programmer to deal with IE CSS issues, I'm just kidding, well not the "Drupal Themer" part.

This problem isn't caused by the dynamic template, because everyone has to do this if they want to turn their static HTML into dynamic web page. But the lack of the separation of the business logic and presentation layer, which normally referred as MVC, amplifies the chances of tight coupling between them. Therefore in practice, it requires the themer to be so talent that they know what's coming out of the engine and what needs to be displayed as well as the look and feel.

Let's face it, there's no such things as Themer, the market for themer is too small that they won't survive as that title for long. What we need is always a good Frontend developer who can dominate not only the static template generation process, but also generates dynamic template generation by themselves before blending in with too much business logic early on. They should be the king of "FRONT" not "BACK".

IMHO, blending frontend and backend development, or let's say put too much weight on the backend development when doing frontend design is such an over-kill. Not to mention large chunk of business logic has little to do with front-end work, they should be developed independently, ex. as an API or service.

All or nothing

Drupal reminds me Microsoft Word again, I still use Word everyday and it constantly reminds me how Monopoly does when it comes to software design. A basic idea behind it is that either you like me or you don't like me, because you have to like all of me if you choose me. It's like a bad marriage concept that you don't know how to justify it in the right way.

You should like what you like, and dislike what you dislike. That's the foundation how things can get improved. Whether you could be polite or impatient in delivering that message, that's your style.

In Drupal, if you happen to have an application with 30 modules installed, no matter what, you have to load all of them when launching any task, even when the task only cost you 5ms, you have to spend 500ms to bootstrap the whole thing. This "feature" ONLY caused it to be not suitable for the core of lot of business application, and it degrades itself to be a good candidate as a presentation layer application, which is referred as "Headless Mode".

A truly well designed plugin system is that it can manages itself completely including management of its memory and data storage. Therefore you can truly load and unload the plugin when you need it. Imaging if your computer only loads software but not recovers memory after using them, will it change the way you work? Absolutely, process changes ways of doing, but in the end the ways of doing has to be intuitive.

Summary

I'll summarize the parts that are not flexible, or not in clear separation in Drupal framework.

- Lack of support of current trend of web development, 3 years behind in technology
- Module designed as business unit instead of programming components
- Content and templates are blended together with no clear definition of MVC
- Hooking mechanism requires all modules to be loaded first

They are pretty fundamental in designing a good web development framework, without addressing them properly will cause it collapse.

Choosing a heavy framework is pretty risky move in general. Instead of picking a "can do all" foundation, sometimes to minimize risk, we could choose more light-weighted framework or even single component that takes care the responsibility of only one aspect. Along the way of making, adding more flavor to it when you have to. It's less investment, and it also increases the chance of success in blending things together, and more importantly, you don't have to feel bad in constantly "correcting" things which is not meant to be. In the end, what it matters is not the framework.

 




要查看或添加评论,请登录

金方的更多文章

  • Consequences of the Bailout

    Consequences of the Bailout

    There's nothing wrong to protect your people, your society or your finance. We should be thankful if someone is…

  • Angular, React and Commons

    Angular, React and Commons

    Web frameworks are marketing words to me these days. Everyone knows something about them.

  • Protection from big loss, sell yourself an insurance plan

    Protection from big loss, sell yourself an insurance plan

    An insurance plan prevents you from getting burned to the ground when an unanticipated thing happens. Before I get into…

  • "Perfect" Google map algorithm under emergency conditions

    "Perfect" Google map algorithm under emergency conditions

    I took a vacation to Cuba lately, and on the way there we'd been told the Irma is coming our way so we should head back…

  • Reusable components

    Reusable components

    Building UI with less tech burden Reusable components, when designed properly, can save us lot of trouble as well as…

  • New or Old, just can't have it all

    New or Old, just can't have it all

    I think it's our culture and life learning experience that taught us that we just can't have it all most of time. At…

  • Construct new and Build a system

    Construct new and Build a system

    I sometimes vomit if I get puzzled by certain process, especially after I realized there's nothing I can do to change…

  • "Zero framework"

    "Zero framework"

    I was born and raised in China, and watched a lot of movie as I grow up. There's always an old guy who can beat the…

  • Deployment chaos - Container to the rescue

    Deployment chaos - Container to the rescue

    In this article, the author describes the inconsistency between development and deployment, and explains that a good…

  • Being dependent - Crying baby in architect

    Being dependent - Crying baby in architect

    A friend of mine want to learn programming, I found it very hard to give him a direction. It's not that I'm not…

    3 条评论

社区洞察

其他会员也浏览了