Chevereto 4

Introducing the all-new Chevereto V4.

Eight years ago I was introducing Chevereto 3 and everything wrote in that post applies today. The fourth loop for the outstanding image sharing software.

# What's the buzz?

Chevereto V4 features a complete code rewrite, redefined user interface, improved security and exciting new features. It is the best build by all means:

  • 😀 Distributed under a public beta available for all customers.
  • 😏 CI driven builds (software and infra).
  • 😘 Built-in xrDebug, VarDump and many other PHP packages thanks to Chevere.
  • 🥰 Three layers of documentation (software, admin and user).
  • 🥳 Own infra provisioning (Docker, any VPS).
  • 🤩 Twelve-factor app.

# Rodolfo's feature highlight

Chevereto V4 includes a ton of new features. Here's my top on the features I like the most and why (no particular order).

# ⌨️ Keyboard shortcuts

With the years I've become attached to keyboard shortcuts, it makes me productive and feels rewarding. With Chevereto V4 I added shortcuts for all buttons, actions and listing events.

It is great to use shortcuts with Chevereto V4, and I added a notorious visual feedback for the typed keys which was intended to be used for captioning our marketing videos, but I liked enough to keep it on the user land.

# 🚅 Native lazy load listings

Before web browsers supported lazy loading I had to craft a custom integration to get that fancy masonry effect on listings. The effect looks neat, but it drives slow listings when delivering media content within the same origin.

When I heard that all modern web browsers were supporting native lazy load I wanted to refactor the implementation and the outcome has been remarkable: Listings are faster in Chevereto V4 and there's no need for a loading indicator.

What I liked about this one is that while edgy features always need custom coding, the more we pursue these the bigger chance to get these natively implemented by web browsers. I'm crossing my fingers to get broad native support for Masonry layout!

# 🐞 Overkill debug experience

Users trend to panic and get frustrated when something happens in the software and it requires to debug. To try to explain that they need to take the time to read and understand the debug documentation while their production website is down is futile.

I found out that the pain came from two sources: The roughness of the messages and the lack of more debug alternatives. I keep the same message content, but I crafted a more friendly display with clear hierarchy to don't intimidate users. I added a lot of debug software, enabling the user to go for a better alternative for their own context.

Chevereto V4 uses ThrowableHandler to format and log errors in a user friendly way, xrDebug for live debugging goodness and VarDump for the good old die('pico'); development driven experience, but prettier to the eye.

What I like about these packages is that everything started about 10 years ago with a custom made G\debug() function. Now I own a remote debugger, an error handler and a var_dump replacement. Heck, I own a PHP organization for gods sake. Overkill code luxury.

# 💫 REPL

When improving the debug experience I stumbled with the concept of a REPL and the power of exploratory programming as it enables developers to call application code directly. With a REPL you can run any code and get the output auto printed. It enables developers to understand better a software system and Chevereto V4 supports two REPL software alternatives with Tinkerwell (ui based) and PsySH (cli).

What I liked is that users of Chevereto V4 can now play with application code directly.

# 🚧 Root level maximum limits

This one is for Chevereto SaaS as it enables to define caps for service plans. With this I can limit the number of users, albums and images by using environment variables that affect the entire system.

Chevereto SaaS was the obvious evolution for the system and I've been busy adding settings and tweaks that will enable me to deliver a software better suited to the context of a software as a service provisioning.

# 🎨 Theme palettes

With the years I've confirmed the existence of this axiom:

Visual changes are the only "true changes" and new major versions must offer "true changes".

V4.0.0.beta.1 got a backlash from the user community. The complain was that V4.0 looked same as V3.20 and users were expecting significative user interface upgrades. This was unexpected for me considering that V3.20 was published about one month before and it carried a major user interface upgrade.

I shouldn't ship the user interface upgrade in V3.20, but the damage was made. That's where theme palettes came in as provides a bunch of new looks by toggling the theme with pre-made color presets. We added a myriad of looks for Chevereto V4 including dark mode, solarized and purple shades, also palettes based on popular services like Flickr, Imgur and DeviantArt.

This was cheaper than crafting a new theme and the outcome filled the the need of a "true change". If you do software keep this in mind: Major version equals user interface upgrade and don't ship major user interface upgrades without shifting your major version.

# 💅 User interface tweaks

This is similar to what happened at theme palettes as I needed an extra push as there's another axiom:

A new major version won't worth the upgrade if there's no "true changes".

I use quotes at "true changes" because it is a fallacy. There are always true changes in any software, but is the user interface which gets all attention as is the system that is more exposed to users.

New user interface effects got added like blurred menus and background modal boxes a la macOS Monterey. Fine tuned all menus, added icons to all buttons, improved tabs for mobile, etc. I spent a while making it look prettier than ever.

What I liked about these is that I realized how much CSS has evolved. It feels like magic when something that you hack a lot back in the day now is part of the common CSS base.

# See it on action

We made a couple videos to showcase Chevereto V4. Look at it, is gorgeous. Chevereto V4 is macanudo.

# Timeframe

Chevereto V4 development started amid 2017. Its development carried the creation of Chevere. To reach distribution for Chevereto V4.0 (betas) it took long 4 years and the first public beta was released on 2021-09-30.

The beta period was planned for 3 months, but it took longer. Chevereto V4 beta window was between 2021-09-30 and 2022-09-30. During about one year the V4.0.0-beta cycle delivered 11 releases (1 release per month!) and the final beta was published on 2022-08-29.

Chevereto V4.0.0 will be released on 2022-09-30.

Rodolfo blogging since 2012.