#Platypush 1.0 [is out](https://blog.platypush.tech/article/Platypush-1.0-is-out )!
It’s been [10 months](https://pypi.org/project/platypush/#history ) and [1049 commits](https://git.platypush.tech/platypush/platypush/commits/branch/master ) since the latest release of Platypush, 7 years since [the first commit](https://git.platypush.tech/platypush/platypush/commit/0b0d94fee3ab20e7f488072f624b4f33c527947a ), and 10 years since the first release of its ancestor, [evesp](https://github.com/blacklight/evesp ).
The past few months have been quite hectic and I have nearly rewritten the whole codebase, but I feel like the software is now at a stage where it’s mature and stable enough to be used by a larger audience.
The changelog [is quite big](https://git.platypush.tech/platypush/platypush/src/branch/master/CHANGELOG.md#1-0-0-2024-05-26 ), but it doesn’t even cover all the changes, as many integrations have been completely rewritten.
The biggest (breaking) change is the merge between plugins and backends. Now, except for those integrations that actually listen for messages and execute them (like HTTP and Redis), all the other integrations are plugins. This greatly simplifies the configuration and removes a lot of confusion for new users.
The Docker support has been greatly improved too. There are now officially supported multi-arch images for Alpine, Debian, Ubuntu and Fedora, an official docker-compose.yml file, and both the platydock and platyvenv utilities have been almost completely rewritten to seamlessly automate the creation and configuration of containers and virtual environments (respectively) starting from a single config.yaml.
And the Python API has become much simpler and consistent. No more __init__.py files that the user had to manually create in each subfolder of scripts, just drop a .py file with your automation in the scripts dir and it’ll be picked up. Moreover, the most common imports are now available on top level as well, and there’s no more need to create procedures/hooks/crons with varargs:<code>from platypush import run, when
from platypush.events.sun import SunsetEvent
@when(SunsetEvent)
def sunset_lights_on():
run('light.hue.on')</code>
There’s also a revamped [documentation portal](https://docs.platypush.tech ), which now includes both the wiki and the plugin reference.
Most of the integrations have been rewritten at different degrees, and in the process many bugs have been squashed, many features added and many APIs updated to be more consistent, so make sure to check the documentation pages of your integrations in order to migrate.
And if you have more requests or questions, feel free to [open a ticket](https://git.platypush.tech/platypush/platypush/issues ), [a PR](https://git.platypush.tech/platypush/platypush/pulls ) or [ask on the Lemmy server](https://lemmy.platypush.tech/c/platypush ).
https://blog.platypush.tech/article/Platypush-1.0-is-out