emmett-framework / emmett

The web framework for inventors
BSD 3-Clause "New" or "Revised" License
1.06k stars 71 forks source link

Next major release #194

Closed gi0baro closed 4 years ago

gi0baro commented 7 years ago

So, I think during this year a couple of minor releases (1.1 and 1.2) hopefully will take place, and they probably will focus on optimization – rewriting the router to gain performance is one of these – and small enhancements on the existing features.

The key-fact of this discussion is regarding the next major release (2.0) which I really hope would be ready for the end of the year or the start of the next. Here are some ideas I got in the last months.

Things I really want into 2.0

Drop the Python 2 support With the status of Python 3 and the ecosystem, and the official drop of the support in 2020, I can't see any good reason to keep all the compatibility code inside weppy. Definitely moving to Python 3 will really simplify the internal code and avoid slow downs caused by compatibility layers.

Rewrite and separate the ORM Some people already asked me to separate the ORM into a separate project, and I think that's a good idea. But I really want to take advantage of this to rewrite the bottom layer and stop depending from the pydal library. This will surely bring some advantages, like generally improving the performance of the ORM, and the ability to extend it with new features quickly (hstore and jsonb support on postgres, for example). Even if I am one of the core contributors of pydal, moving the weppy ORM layer into a separated project will definitely avoid me the pain of keeping really old and awful code just for keeping backward compatibility and to remove a lot of codes weppy doesn't really use or need. Surely rewriting this layer will cause some disadvantages, like some incompatibilities with weppy 1.0 or loosing the compatibility with some DBMS – even if today I don't really supports them, and they actually doesn't work really well 'cause nobody supports them in pydal – but I really feel bad when I think the difficulty of adding new features to the current layer. What I can say right now is that I want to keep support for sqlite, mysql, postgresql, mssql and mongo, but the list might be expanded depending on the workload. We'll see.

Support for sockets/channels I don't really want to switch the framework when I need them, so they will definitely be in 2.0. I don't actually know if the next major version will be totally async compatible, 'cause right now weppy abuses quite a lot of thread locals, but I'll see in the next month how to deal with that.

Things nice to have in 2.0

This is almost everything I have in my plans. But I am totally open to suggestions, feature requests, feedbacks, whatever. Feel free to add your 2 cents to the discussion.

lethargilistic commented 7 years ago

Death to Python 2! :tada: :tada: :tada:

TheSpitefulOctopus commented 7 years ago

+1 for Support for sockets/channels

firestalk commented 7 years ago

Just looked into docs, and I see weppy as compilation of great ideas I love so much. So I'd like to thank you for your great work and wish this project prosper =)

Oh, and +1 for sockets/channels, yes.

firestalk commented 7 years ago

Also, I don't know if it is relevant, but having something like Flask Debug Toolbar could be nice for weppy. Imho, profiler is a most useful tool there.

gi0baro commented 7 years ago

@firestalk probably an extension would be the best option for that :)

GiantCrocodile commented 7 years ago

What about #63?

Marlysson commented 7 years ago

Awesome thoughts , the framework already born great.

About ORM , do you create your own ? Or could uses a established ( Orator )

gi0baro commented 7 years ago

@Marlysson the current idea is to repack the current ORM plus the underlying library into a separated project. Also, I'm not a big fan of Orator, if I should use an existing ORM probably Peewee would be my choice.

bronte2k7 commented 7 years ago

I like weppy. +1 sockets/channels And need Celery

gi0baro commented 7 years ago

@Bronte2k7 you can already use celery with weppy. There's no need of an extension/integration.

bronte2k7 commented 7 years ago

Sorry that I'm asking here. But I did not find the documentation on the joint work of the weppy and celery. Where do you read or see an example? Thank you

gi0baro commented 7 years ago

@Bronte2k7 see https://groups.google.com/forum/#!topic/weppy-talk/xUjuR0IPg-w

josejachuf commented 7 years ago

@gi0baro It would be desirable for the pyDAL replacing layer to be able to extend the supported databases with plugins

Marlysson commented 6 years ago

Related to this

Commands to generate scaffolds

Which types applications do you think create scaffolds?

gi0baro commented 5 years ago

To everyone whom can still be interested, I know this took me much more time than expected, but I just published under the next branch an almost working version of weppy with dropped python2 support and ASGI asynchronous flow.

This is far to be ready for every day usage, but in case you might want to look at the code, is there. As soon as possible I'll also publish a milestone here on github to let you guys aware of what is still needed to be developed – like websockets support, renewed streaming, async support in ORM – to have a RC for the 2.0

See you around! Cheers

Marlysson commented 5 years ago

Awesome news guy!!! I'll take a look it for sure. Anxious for the milestone to see what to do.

gi0baro commented 4 years ago

To everyone whom can still be interested, hello again :)

It's been a long year, but from time to time I managed to proceed with the async stuff. Today I merged the next branch into the master and moved the repository.

Time of speaking, the actual master is still to be considered an alpha, I planned to release a public alpha in the next weeks as soon as I finish these points:

Then I expect to release a better alpha version at the beginning of 2020, including also the async support for the cache.

Async support in ORM is planned for the first beta, planned at the moment for Q1 2020.

Once all these pieces will be tied together, I expect to release an RC version and the final one consequentially after a bit of testing.

As you can see from today, the new package name is Emmett, I hope you like it. weppy will still be available, both as a package, both in this repository under the 1.x branch. Also the website will remain untouched. weppy won't receive any feature update from now on, but eventually bugfixes releases will came later next year.

If you have any questions or feedbacks feel free to reply here.

gi0baro commented 4 years ago

I'm closing this since outdated. Please check milestones for future schedule.