Must read Building the next-gen Chevereto (old topic)

Status
Not open for further replies.

Rodolfo

Α & Ω
Chevereto Staff
Administrator
I dont post often but i follow this forum time to time and the reason i asked this is because here at Can anyone make Video Plugin? | Chevereto Community Tomsit mentioned that v4 was on its way in october 2018
and its 2021 almost
So i think i have the right to ask and know about the progress
The one that should calm down is you
You can follow development here https://github.com/Chevereto/chevereto/commits/master and here https://github.com/chevere/chevere/commits/master

Thanks for your warm support.
 

Rodolfo

Α & Ω
Chevereto Staff
Administrator
2020-12-10

Development keeps ongoing and at this time I'm actually re-doing the documentation for Chevere, catching up with all the new changes and improvements since "I released it" earlier in May. The framework is quickly reaching maturity, and its documentation shows many sweet new components like Parameter, Action and Workflow.

As Chevereto V4 is entirely based on Chevere, the documenting of the framework is fundamental to enable sane third-party development and as you may guess, learning to do Chevereto plugins will allow you to quickly scale up and easily learn how to code your own Chevere applications. Is that serious my work and commitment with the base framework and my investment here has been remarkable, two years already.

Hopefully the production grade release will be available anytime from now. At this time the framework is just getting better while I keep working with V4, so is just matter of time for both projects to became production-able. I know that development has taken ages, but also acknowledge how cheap the ride has been for all customers.

The outcome is formidable, I really doubt that you can find any other project matching the same quality standards and low maintenance costs that I've here. I'm really looking forward to make 2021 the year of V4 release, but although I'm putting the best I got, I'm just one person doing this. Imagine how fast I could deliver if I can get more helping hands, perhaps that is something to think about.

Hope you like the heads up,
Rodolfo.
 

Rodolfo

Α & Ω
Chevereto Staff
Administrator
2020-12-21

Dear users,

Development is ongoing and some of you may have already checked the Shown and Tell for ThrowableHandler, Tests and Workflows. I will keep showing more stuff once it gets ready. For this post I want to address how the organization is being improved by defining some required project-level optimizations.

Admin API will be another application​


Up to now, admin and user actions have co-existed in the same application. For V4, the admin will be completely decoupled from the user API. This enables a myriad of optimizations, like more security as now it will be trivial to lock the administration to a restricted network or implement stronger authorization protocols to protect the administration of your valuable content.

This also means that the admin API will have its own plugins and addons, so if you are into using Chevereto as the base from your project you will find very useful to be able to craft your own admin experience. As some of you may need better control for conflicting users, others perhaps need methods to engage users. With this change the admin panel can now freely improve just as the front-end application.

GitHub issues​


I'm on a stage on development where I've enough work todo so I've started to open issues on the on-going stuff. You can check the chevereto issues and chevere issues. Feel free to contribute if you want to help me or just because you want to learn, both are Open Source projects where one of the goals is that anyone can learn by just looking the code that others do.

I learned to make software by looking at others, I hope my stuff can help someone to get into this. Being honest, I'm not used to GitHub as I would like to be so I'm about to drive most of the dev chatter to GitHub to force myself to get used to it.

Container oriented​


As I'm adding more complex server requirements (Swoole, FFmpeg, command bus, etc) to support multiple application environments will be too costly for me. Long ago I settled with containers, specially Docker and at this time I'm building the application to get the most out of Docker and eventually Kubernetes. My intention is that you can easily run the app on top of cloud providers already available, so you can skip all the caveats and knowledge required to do it the spartan way by just paying for it.

A milestone for this is to be able to run V4 on Heroku, so if it works there it will do in all the container-driven service providers making it easier for those who are already using V3 on old legacy environments like cPanel or Plesk.
 

mkerala

Network license
V3 Beta tester
Big Chevereto
I came across this small site https://streamgif.now.sh/ which is basically a video/image to GIF converter. Unlike other sites the video is not actually uploaded to server for conversion. It use JavaScript to convert locally on the browser itself. I think this is very efficient as no server resource is used and saves a ton of time in typical upload-convert-download process.

The developer also has posted this on Github https://github.com/haikelfazzani/img-video-to-gif. I know V4 will add support for video and gif conversion, so thought this might be helpful.

PS: Tried to post this in collaboration section. But seems to be closed.
 

Rodolfo

Α & Ω
Chevereto Staff
Administrator
The developer also has posted this on Github https://github.com/haikelfazzani/img-video-to-gif. I know V4 will add support for video and gif conversion, so thought this might be helpful.

Indeed leveraging processing in the client device is something that we must consider as every saved CPU cycle is money that you can spend for something else. However, the linked library lacks of testing so I won't implement. In any case I'm sure that there should be more robust libs for doing this.

Regarding collaboration, I've the intention to move all development organization to github so it will remain closed. I started moving the existing RFCs and now I have to actually start using github community tools for V4, hope to do it soon to start getting feedback for V4.
 

Rodolfo

Α & Ω
Chevereto Staff
Administrator
2020-12-31

Hey there,

I've added the showcase for Pluggable which is the functionality that will make Chevereto V4 pluggable. If you are into modify/extend Chevereto take a look to it. During the past days I've been organizing the project and manifested my interest in other software projects, if you want to get into my projects (even not Chevereto related) take a look and get in touch.

Regarding Chevereto V4, I've started a new project packaging by separating the software in 4 different repos:

RepoDescription
chevereto/apiChevereto V4 User API (previously known as chevereto/chevereto)
chevereto/api-adminChevereto V4 Admin API
chevereto/peafowlChevereto V4 User API web interface
chevereto/dashboardChevereto V4 Admin API web interface

The repo at chevereto/api provides the user API that plugs to chevereto/peafowl and chevereto/api-admin does the same but for chevereto/dashboard. This is what headless means, the application is an API that can be commanded from anywhere, specially HTTP, but not limited to other protocols. This means that both chevereto/api and chevereto/api-admin could be plugged to *any* other user interface, making possible to use Chevereto V4 just as the base of your next media related project, regardless of how you plan to display it to users.

This is great for separation of concepts as it allows to define smaller repositories with limited scopes rather than just squish everything into just "one thing". Now, don't get me wrong the software will also have its chevereto/chevereto default distribution that will orchestrate those. It also enables to perform easier optimization and bring more reliability as one repo failing won't compromise others.

V3 to V4 routing​


At this time I'm, carrying the process of converting V3 routing to V4, this is a relatively easy process but the software does so many different things in so many different places that it is just slow. For example, let me show you V3 language dashboard settings:

1609418479131.png
The above section allows you to control language in your Chevereto V3 installation. It works by posting the form to /dashboard and using route.dashboard.php to process the language. That's the only interface you get to tweak those values, otherwise you have to edit the database directly.

In V4 this is way more granular and all options are accesible via API:

1609418753871.png

Up there you have that you can toggle a language {id} to be enabled/disabled, you get a /api/language/all/ that returns a list of the application languages enabled and at /api/language/default you can either get or change the default language. The same options, but presented in a modular way that allows anything on top of it.

This is just the case for the dashboard language, I'm doing exactly the same for all the existing system features and existing user actions because V4 is being made for the existing Chevereto user base. While V4 does "the same things", it does it in a way in which you can extend on top of it, and make it uniquely yours. The level of customization and granularity is unmatched and not only in image hosting, this software is bringing many new stuff to the table and at some point I will show you how fast it spins and how fast it builds.

2021​


I hope to launch V4 in 2021, but please note that I won't label this as released until I'm sure that the software is ready for your existing websites. There will be V4 betas going on but due to the size of the software I doubt that all V3 features get matched for V4 in 2021 (honestly, V3 is beast feature-wise).

Many thanks for following the updates & my work, hope to keep delivering in 2021 💪🏽
 

Rodolfo

Α & Ω
Chevereto Staff
Administrator
2020-01-17

Translator​


During this time I've came up with the translator component, which works similar to the one at V3, but way better. Is uses the same concept (gettext), but the component is now wrapped in more efficient matter as V4 will adhere to many different message domains, not just one global domain for everything. This means that there will be stuff like buttons.po and email.po rather than just one file for everything which always help to keep things in more context.

This will also allow me to add the language file generation to a console command / CI pipeline, so eventually it can get automatically deployed.

Translatable Routing​


V3 already supports to override /image and /album to anything of your liking and V4 takes this to the next level as the entire routing will now be translatable. This means that you will be able to fully customize all routes, either for language concerns or just to change it to something of your liking.

For example, the route at /settings could be changed to /config, /ajustes or even emoji routes like /⚙, /🖼/<id>. This could be used not only to override the base routing, but to provide lang-context URLs like zh-TW.domain.com/探索 and es-CL.domain.com/explorar.

With this system you won't have to touch (hence, break) the base routing at all! Just define/pick the routing dictionary you want to use and done, the Chevere way 😜.

RFC are back!​


You may have noticed that RFC are back, which I did because is about time to get the community involved on the ongoing V4 development. If you are into getting new features then go and vote, go and purpose changes. You opinion matters, let me know what you like/dislike to craft a better software for you.

Community improves​


There are other community improvements like the new Big Chevereto section or the new Dev section which is what I will use to show more details about the new stuff. The intention is that those more into Chevereto can help others towards achieving the same and to drive development based on their experiences a use cases. Feedback of these big website owners is priceless, and I believe we need to learn from it for the better of us all.

What now?​


At this time I've to pause V4 development to attend the requirements of Chevereto v3.18 which will add support for ImageMagick. Once I get that release ready I will come back to V4 to start the process of modeling the data for the application.

Hope you like the update,
Rodolfo.
 
Last edited:

lovedigit

Network license
V3 Beta tester
Big Chevereto
I am sorry, I searched for beta testing thread, but couldn't find it.
I would love to enroll for beta testing for v4. If migration is ready, I can create a replica of my website, and test it on big data set.
 

Rodolfo

Α & Ω
Chevereto Staff
Administrator
I am sorry, I searched for beta testing thread, but couldn't find it.
I would love to enroll for beta testing for v4. If migration is ready, I can create a replica of my website, and test it on big data set.
V4 beta will be open, no need to signup to anything 😉.

I will disclose more details shortly, I'm preparing an announcement covering milestones, application architecture, etc. Stay tuned!
 

lovedigit

Network license
V3 Beta tester
Big Chevereto
V4 beta will be open, no need to signup to anything 😉.

I will disclose more details shortly, I'm preparing an announcement covering milestones, application architecture, etc. Stay tuned!
Oh nice.
I saw few users with "beta tester" tags, and thought their is internal application for it. I was away from chevereto community for a while.
Going to be active again from now.
 

Rodolfo

Α & Ω
Chevereto Staff
Administrator
Oh nice.
I saw few users with "beta tester" tags, and thought their is internal application for it. I was away from chevereto community for a while.
Going to be active again from now.
Awesome, your insights and feedback is very valuable. Also, you came just in time to the fun part of the process 😜
 

Rodolfo

Α & Ω
Chevereto Staff
Administrator
2020-01-27

Dear users,

During the last 10 days I've been focused into starting to disclose the packaging and the kind of application that Chevereto V4 will be. I've also published a post where I share how V4 is going to provide a saner service provisioning for everybody.

The repository at chevereto/chevereto is now the repo for V4 and it outlines what this will be all about, how it will work. TLDR, V3 will split into many sub-projects that all work around the same thing which is a modern application for servicing media sharing needs.

Please note that this is beginning of a long process, and I will try to keep you updated with everything that is going on. For now, you can check the milestones of chevereto/api. I'm still preparing more content about all this, and more milestones for chevereto/api-admin, chevereto/peafowl and chevereto/dashboard. I will publish a post at the blog with a summary of the project status in the following days.

I've also started to give more attention to the Discord community. Join if you want to talk with us, share your experience and thoughts. Dear users, you drive this software, I just provide what I feel you need and what I believe that is best for us. Do get into its development and discussions, share with us what's on your mind.

Hope you like the update!
 

Rodolfo

Α & Ω
Chevereto Staff
Administrator
2020-02-18

Dear users,

Previous weeks have been sour due to ongoing issues in release v3.18.1. I think that we all agree in that is imperative to get a standard server model, but many installations are still using old/outdated systems... Please note that new updates could always have new requirements, check that before having to experience a kernel panic situation.

Regarding V4, work has been made into the actual business model and now you can know about:
^^^ As you may check, money making and business distribution are built-in concepts now in Chevereto V4 and there are clear principles and goals.

During the pass days I've been working in improving the documentation system (which I use in all my projects now) and perhaps you will like to see the current work in progress.

1613677025280.png

The documentation system has been improved to support multiples types of documenting strategies, so it now plays nicely with simple documents, guides, compound documents, etc. It is all automatic I only worry about writing the sections. I did all these improvements because I'm about to start writing V4 documentation.

Don't hype, is not that V4 is ready... Is just that I need to document the new systems and stuff I'm making because it helps me for a better development. That way, I ensure that docs actually drive development and pushes me to make documentations as the standard from my work.

Hope you like the update!
 

Rodolfo

Α & Ω
Chevereto Staff
Administrator
2020-02-25

Dear all,

I've started publishing V4 documentation 🎉 - A very early work in progress, it will give you a better idea of V4.

In this short update I want to mention some changes in the project, specially regarding previous statements made by me (at any previous date).
  • MariaDB will be the RDBMS
    Previously I mentioned the intention to go with PostgreSQL, that won't be in V4 scope. I'm sorry but the change is too big, I will address this on V5 and only if needed. There are many SQL optimizations that could really help us, which will also work in PostgreSQL if I make the change anyway.
  • Uses Swoole, offers Apache/Nginx alternative
    Previously I mentioned that it will run "only in X". That's not longer the case, the system will run either behind an application runner or behind a web server (the application runner will drive a noticeable faster high-scale application).
The V4 documentation will keep growing, I need to explain tons of stuff long as I make the code. My priority is to define the workflow architecture, once done I will be able to document the plugin creating process so you will be able to create your own plugins very shortly.

Hope you like the update.
 

Rodolfo

Α & Ω
Chevereto Staff
Administrator
2020-03-09

This time I bring you the User API endpoints for V4, for each endpoint I need to create a Controller, meaning that I've to create about 71 Controllers just for the user API, and I've like 5 or so already made. As you may see, the system preserves many of the stuff already known but with a better organization and better encapsulation. It also provides a polyfill for those using V1 API to keep using that one while making the transition.

The shape and syntax is very good, I know that my opinion is very biased but I think that it will be perfect for our needs. Will allow us to heavily customize the system with minimum footprint and is very explicit.

I mean, how someone could get lost on what is going on here?:

PHP:
$workflow = new Workflow(
    validateApiV1Key: new Step(
        ValidateApiV1KeyAction::class,
        key: '${key}',
    ),
    validateFile: new Step(
        FileValidateAction::class,
        mimes: '${mimes}',
        filename: '${filename}',
        maxBytes: '${maxBytes}',
        minBytes: '${minBytes}',
    ),
    validateMedia: new Step(
        ImageValidateMediaAction::class,
        filename: '${filename}',
        maxHeight: '${maxHeight}',
        maxWidth: '${maxWidth}',
        minHeight: '${minHeight}',
        minWidth: '${minWidth}',
    ),
// ...

Workflows and plugins for controllers are almost there, the database I/O layer needs some work and I still need to work on system settings and servicing provisioning. Also cache, still missing that. Note: I'm only missing the implementations, the logic is there I just need to work it.

My work now is to import the existing logic from V3 into V4, it involves the creation of new components, tuning the framework, lots of testing. To be honest, the process is quite slow and is a very exhausting task as is code old as 2013, I need to review every single line.

Hope you like the update.
 

Rodolfo

Α & Ω
Chevereto Staff
Administrator
need video support(mp4 or m3u8 or others types)
Won't be a problem for V4's arch. The system is being made to support both short-lived request and queued jobs, the intention is to support whatever our servers can handle, video uploading, transcoding, filtering, compression tasks, etc are concepts now being embraced in the new system architecture.
 

RaidenMei

Network license
对于V4的架构来说不会有问题。该系统旨在支持短暂的请求和排队的作业,其目的是支持我们的服务器可以处理的一切,视频上载,代码转换,过滤,压缩任务等都是新系统架构中所包含的概念。
我非常期待V4版本的到来,大概是什么时间呢,希望有邮件推送,我将第一时间购买使用!
 
Status
Not open for further replies.
Top