• Welcome to the Chevereto user community!

    Here users from all over the world gather around to learn the latest about Chevereto and contribute with ideas to improve the software.

    Please keep in mind:

    • 😌 This community is user driven. Be polite with other users.
    • 👉 Is required to purchase a Chevereto license to participate in this community (doesn't apply to Pre-sales).
    • 💸 Purchase a Pro Subscription to get access to active software support and faster ticket response times.

Building the next-gen Chevereto (old topic)

Status
Not open for further replies.
Hi @Rodolfo

How about adding multi-domain support. Like we can add any domain in the backend with shorty URLs and people can choose the domain from the front end.

Thanks
 
Hello upgrade now payment plan for albums and join disk space.

Hello upgrade now payment gateway or plan for albums and join disk space sub categories.
It has been already planned, however is just a thought nothing concrete to talk about.

Hi @Rodolfo

How about adding multi-domain support. Like we can add any domain in the backend with shorty URLs and people can choose the domain from the front end.

Thanks
No word on that. Probably won't be added in the core.
 
2020-05-04

Documenting is ongoing, at this time I've already documented few components of the Chevere framework which I'm about to introduce in this post.

Keep in mind that Chevereto V4 will be built on top of the Chevere Framework, which is in charge of providing the elements needed to create and organize the application logic.

Controllers

https://github.com/chevere/docs/blob/master/controllers.md

Controllers in Chevere are classes which define how the application will handle incoming user input, which refers to any action that the application should address. Controllers will be used in any situation where the application needs to be instructed "to do" something.

Its application will be in HTTP routing (wiring HTTP requests to a Controller), service workers, commands, and any other place where the application will process direct user input.

Hooks

https://github.com/chevere/docs/blob/master/hooks.md

Hooks is the system which allows to define extensible code. Using hooks, any class can define hook sections where third-party logic will be allowed to be executed. Hooks will be used to provide the plugin system.

Str

https://github.com/chevere/docs/blob/master/str.md

Str is a collection of string related functions, offering string manipulation (Str), asserting (StrAssert) and bool (StrBool). Str components will be used to work with strings.

Message

https://github.com/chevere/docs/blob/master/message.md

Message is a component which allows to create rich system messages. Message will be used to offer a common standard for system messages, with the flexibly to cast the message string for console, HTML or text plain.

Filesystem

https://github.com/chevere/docs/blob/master/filesystem.md

Filesystem is a collection of classes that interact with the filesystem. It will be used to carry any filesystem related need like create a file, manipulate its contents, handle directories, etc.

Cache

https://github.com/chevere/docs/blob/master/cache.md

Cache is the system used to cache system files. It will be used to cache application states which will make applications works faster.

--

It seems that the documenting process will take about a month, I will keep you updated.
 
2020-05-12

Documenting is still on progress, I've added Filesystem, Introduction, and Routing, and last days I've been working in an improved plugs system.

(A plug is logic that it is injected on runtime, based on previously registered plugs).

The new plug system that I'm developing is all about allowing multiple plug types, not only hooks. At this time the plugs built-in are Hooks (allows to pass a variable to third-party logic) and EventListeners (notify to third-party logic that something happened). I've made the framework in such way that we could have countless plug types in the future to satisfy any given application architecture.

How plugs works?

Let's say that you have a concrete action, like signup an user for your website. Using the EventableInterface (defines an object which implements events) you can name "events" for the logic, like "onEmailSent", which will be broadcast to all EventListeners registered for that EventableInterface. That way, it notifies when something happens.

A event listener comes handy when you want to react to something, for a "onEmailSent" event it could also trigger an email to an admin, send a sms, log to a file, whatever.

On the other hand, in some cases you will need to fill-in missing arguments of perhaps alter an image after it has been validated (like applying a filter). Using the HookableInterface (defines an object with implements hooks) you can allow third-party logic to enhance the default functionality by altering the data.

Of course, these are just two types of plugs (built-in ones) and I hope to add more types as it gets needed.

Why should I care?

This is perhaps the most common thought when reading this topic, so I will try to tell you why this should matter to you.

Plugs are the base for plugins (did you see it coming?) which is the system that defines how Chevere applications will be extended. All the plugins, add-ons, or whatever you may want to add to Chevereto will be based on this system.

In other words, it will be the most used system for third-party developers.
 
2020-05-21

Hey there, I've another progress report.

The architecture is being documented, which basically outlines what is the thing.
There are some concepts still pending, like the request processing and the loop runner. Also I've to document the progressive approach of the framework.

Hope that you can get a better idea on what's this all about.

Cheers,
Rodolfo.
 
2020-05-28

Quality report


Hey there, I've just added sonarcloud stats on the chevere repo. This is just another quality measure tool that helps me to show the quality of my work. Here, check how it looks:

1590694587611.png

Coverage is also looking great:

1590694889434.png

Documenting report

Documentation is also ongoing, I prepared an index for easy navigation. There are new docs, like the provisioning of IDE resources at workspace, the testing spec. I still have to document all the components, which will take me some time.

How is the documentation going? You can collaborate with it like suggesting changes or improving my horrible English. Collaboration is appreciated and welcome.

Releasing

At this point is very evident that Chevere's first public release will be in June 2020. The progress has been incremental and I'm very happy with the outcome, the framework is state of the art stuff. Can't wait to have it ready to start working in Chevereto 4!
 
2020-06-11

Hey there,

Development is still on-going and now I'm finally writing the concrete examples on how to use the framework! I'm packing examples that goes from the basic "hello, world" and continue towards more complex applications. I've planned to add examples on controllers, hooks, events, routing and so on. I also want to provide examples in how to run it under every common implementation.

Why so many examples?

I want to show many examples because the framework greatest strength is that it is ridiculously flexible. Not only you can pluggable everything, the components are decoupled so with the same business logic you can rig a lot of different optimized application states.

For example, an HTTP web and a REST API could coexist in the same routing, but declare totally different registered plugs. At the same time, HTTP web could be resolving under Apache while the REST API could be under Swoole. In other words, you can craft complex implementations under a the same logic, is like bending the logic around the presentation layer.

🧔🏾 I believe that a detailed showcase with plenty examples will make the difference in how the framework gets adopted. While the documentation works as a reference point, actual code examples will allow developers to play directly with the code rather than having to dig all the documentation.

Note that Chevere is not a conventional framework and it doesn't follow the same mindset of other PHP frameworks. To start is not made around the web so I've to create a whole new niche here.

Improvements

While doing this process, I'm also making final improvements to the code base as having to explain something helps me to find all the awkward stuff I didn't noticed before. I hope to be clear on my way of explaining stuff, but please note that there's always room for improvement and that I can made a lot of mistakes that I'm eager to discover.

Release date

I'm not seeing a release date on my calendar yet, I still think that it could be within June. Let's see how it goes...
 
2020-06-14

Hey there, remember the examples? It is now a real thing, here: chevere/examples. To run each example simply run php <path>

For example:
Code:
php 00.HelloWorld/0.bare.php

Something that you will find is that examples goes from the most elemental up to more complex stuff. As the framework is progressive, it is just get better the more you use it.

Talking about better, there's a well known way to benchmark HTTP applications based on Apache Bench. Basically, you get how many request per second can be fulfilled. The more requests per second, the greater performance. There are several caveats when doing these checks, and it also
depends on the machine you use.

Benchmarking Chevere

At this stage, benchmarking the framework allows to determine how fast a Chevere application can run on a "vanilla" setup. From there, all extras added to the application like entities or file handling will add load to the application, making it slower just because it is doing more stuff.

Setup

I've used one of my development machines for this, the specs:
Ubuntu 20.04 LTS x86_64 5.4.0-37-generic Intel i7-2600K (8) @ 5.900GHz 16GB RAM SSD
^ As you may notice, this is not a server grade machine. It is way smaller (and a bit old).

The script is a cached router responding [hello <name>]. It accounts vendor bootstrapping, route cache resolving and controller running. You can check the scripts at 03.Http/.

Results

PHP built-in web server
: 548.29 [#/sec] (mean)
script
Code:
php -s localhost:8888 -t 03.Http/
chevere-php.png

RoadRunner: 8283.75 [#/sec] (mean)
script
Code:
./rr serve -v
chevere-roadrunner.png

Swoole: 11586.02 [#/sec] (mean)\
script
Code:
php 03.Http/03.router-resolve-swoole.php
chevere-swoole.png

Summary

Server type[#/sec] (mean)%gain vs built-in
PHP built-in web server548.29😕 0%
RoadRunner8283.75😲 +1410.83%
Swoole11586.02🤯 +2013.12%

As you can see, Chevere Framework is ridiculously fast under modern application runners being 20X faster under Swoole. I didn't even bother in test under Nginx 😂 as the application runners are way better.

1592147694467.png

I'm getting closer to release 😘
 
Who is building apps or plugins for the new version ? I would like to request a app / plugin for an album feature that you could embed

1592417999263.png
mix use
1592418043611.png
 
Who is building apps or plugins for the new version?
There's no application spec yet, so no one is doing plugins. I'm at the stage where I'm defining how the application will actually work, I'm very close from allowing third party plugins to be developed ;).
 
Please keep in mind that version 4 should not crop images in thumbnail of small or medium size.
It should keep the AR same as the images are without cropping it for resizing.
What we have seen on imgbox.com for thumbnails, they are good.

Also make some option to have a theme for it, which should also work after core code getting updapted.
 
2020-06-20

Hey guys,

I've created the application for the framework documentation, available at https://chevere.org

The documentation is a PWA, feeded with this repo. You can install it in your devices, I made it with VuePress.

While the documentation is still on-going, I thought that some of you might like to contribute or to get started into it. The framework is about to be released, it will be a good time to get into it if you plan to develop plugins for Chevereto.

🙏🏾 hope to open the documentation to translating once it's gets done.

P.S. The documentation is editable 😘
 
2020-06-30

Hey there,

Has you may have noticed, a lot of work spawn around so I haven't been able to write updates here in about a week. But I have been pretty busy around the Chevere project.

Reference documentation

I've added the reference documentation for Chevere, I made my own parser for it, with support for linking references.

You can see it working at CacheInterface. All the documents at /reference are automatically generated, from type declarations and throws are taken from docblocks.

The reference covers all the interfaces and exceptions introduced by the framework in a very friendly human-readable format (I've to still test how it will work with algolia) which should allow an easy digest of the documentation.

Lots of repos!

A lot of new stuff is coming up, pretty much everything is made with the help of the framework itself.

1593555461753.png

Release date

I'm sorry but I don't think that it will feasible to (officially) launch within June. It is very likely that July will be the month for releasing.
 
2020-07-11

Hey there, to be honest I don't have that many updates to report concerning the ongoing development. Sorry about that... But probably you have already checked the 13th anniversary announcement which basically, covers a lot of "what's going on". I ditch the bullet there! 😉

While the development is still in progress, I still enjoy to take 1-2 days off to explore new things. I've found that the worse I can do is to sit back and relax in my comfort zone so I'm always exploring new systems and methodologies. It helps me a lot to bring the best of every software into my own work and lately I've been busy with a lot of related projects: Documenting and Blogging.

The change in documentation was thanks to my incursion in VuePress and I take it a bit further now by running a new blog of mine at rodolfo.is. My intention is to have a better platform where I can showcase my stuff, sadly this forum/community is a little bit obscure for such process. At the blog I can use markdown, write code, and to have it automatically published (for free) at github with blazing fast performance (hehehe, try to beat it).

The thing with documenting and blogging is that I'm all in to make it replicable, that anyone can use my base. You see, my intention with Chevere is to provide a generic base for pluggable software and with Chevereto I will build an extensible API around media sharing. In other words, it is a distributed business model so stuff like documentation must be collaborative and I must encourage third-party devs to document much as possible. I won't get anywhere by just asking, so I'm preparing a couple of packages and norms that will allow to have literally 5-min setup away from starting writing docs/blog.

From now on I've more flexibility to document, and to show and tell. I hope to be able to feed you with more concise details about my work, there are several stuff that I just have to start talking about because I've made a ton of artifacts in these 2 years and I want to show you how to use it to cast the same spells.

Hope you like the update, if you don't understand some word at rodolfo.is (I speak Chilean Spanish, it has a lot of local terms) just ask.

Cheers,
Rodolfo.
 
I'm curious what static site generator you use to publish this?
Thanks!
I used Vuepress, it is explained here: https://rodolfo.is/2020/07/09/vuelvo-a-bloguear/#detalles-tecnicos

I made a repo that you can easily use it as a base for your own blog ;)

 
  • Like
Reactions: rdn
Saw some of the things your planning for 4.0 and I'm super excited! Definitely going to upgrade as soon as it's released.
 
Status
Not open for further replies.
Back
Top