Posted
over 4 years
ago
Corona times are productive times
It has become a bit of a tradition by now: The year-end openpsa release, and 2020 is no exception. A lot has happened in the codebase since 9.7.0, and here are some of the highlights:
We have taken the next step in
... [More]
our great Symfony migration, and this one has been particularly big: MidCOM (the framework layer of OpenPSA) is now running on the full Symfony kernel, with the global getter being the entry point to the DI container. This means that all MidCOM services (RCS, caching, Internationalization and so on) are now injectable and can be configured using standard Symfony YAML files. A good chunk of the initialization work has been moved to the DI container’s compiler phase, which means less work has to be done on each request (and consequently, you need to empty MidCOM’s cache when you change the configuration).
Two concrete advancements that came from this is that the RCS service can now optionally run on a Git backend (which is more widespread by now than decades-old rcs). The logging service is now a wrapper around Monolog, which means that all of the latter’s features can now be used within the framework.
Datamanager also profits from the same improvements for configurability, and now provides better access to the underlying Symfony tools and sports better validation behavior. The dialog UI has received a number of updates, especially for better integration into JS workflows.
Of course, there has been the general modernization work, which brought support for Symfony 5, and the usual slew of JS component updates (elfinder, fancytree, tinymce, galleria, fullcalendar). At the same time we dropped support for PHP 7.0 which is well past its expiration date by now, and removed some old functionality that was only kept for 8.09 compat and reduced efficiency.
On the developer side of things, we now have better error reporting and much improved type safety, more unittests and unittest usability improvements, which should help speed up development down the line. There has also been some work on reduced coupling between the framework and application code, and between components in general. But more on that in a subsequent update.
OpenPSA now also sports somewhat improved responsive behavior, many UI & performance improvements as well as the usual fixes and cleanups.
Enjoy! [Less]
|
Posted
over 4 years
ago
Corona times are productive times
It has become a bit of a tradition by now: The year-end openpsa release, and 2020 is no exception. A lot has happened in the codebase since 9.7.0, and here are some of the highlights:
We have taken the next step in
... [More]
our great Symfony migration, and this one has been particularly big: MidCOM (the framework layer of OpenPSA) is now running on the full Symfony kernel, with the global getter being the entry point to the DI container. This means that all MidCOM services (RCS, caching, Internationalization and so on) are now injectable and can be configured using standard Symfony YAML files. A good chunk of the initialization work has been moved to the DI container’s compiler phase, which means less work has to be done on each request (and consequently, you need to empty MidCOM’s cache when you change the configuration).
Two concrete advancements that came from this is that the RCS service can now optionally run on a
Git backend (which is more widespread by now than decades-old rcs). The logging service is now a wrapper around Monolog, which means that all of the latter’s features can now be used within the framework.
Datamanager also profits from the same improvements for configurability, and now provides better access to the underlying Symfony tools and sports better validation behavior. The dialog UI has received a number of updates, especially for better integration into JS workflows.
Of course, there has been the general modernization work, which brought support for Symfony 5, and the usual slew of JS component updates (elfinder, fancytree, tinymce, galleria, fullcalendar). At the same time we dropped support for PHP 7.0 which is well past its expiration date by now, and removed some old functionality that was only kept for 8.09 compat and reduced efficiency.
On the developer side of things, we now have better error reporting and much improved type safety, more unittests and unittest usability improvements, which should help speed up development down the line. There has also been some work on reduced coupling between the framework and application code, and between components in general. But more on that in a subsequent update.
OpenPSA now also sports somewhat improved responsive behavior, many UI & performance improvements as well as the usual fixes and cleanups.
Enjoy! [Less]
|
Posted
over 5 years
ago
It's that time of year again..
In this release, we finalized our transition to HTTPKernel, which now handles all request/response flows. This allowed us to make numerous improvements to asset handling, most importantly, assets can now be loaded "just
... [More]
in time": For example, the Javascript and CSS for UI messages will now only be loaded when there is actually a UI message to render. This means that the number of HTTP requests in a typical browsing session goes down quite a bit.
HTTP headers are now handled by Symfony, too, which gives us among other things better caching behavior. All in all, MidCOM responses are now smaller and faster, and since every ony of them passes through HTTP kernel, they can use all parts of the framework, which allowed us for example to improve the first run UX significantly.
The miminum supported PHP version is now 7.0, and jQuery has been bumped to 3.4.1. Also, the initialization logic for much of our frontend Javascript was modernized, so there is a lot less flickering when pages are rendered, which improves UX.
Aside from all that, there's the usual vast array of small performance & usability improvements, cleanups and simplifications. The diffstat shows 824 files changed, 7867 insertions, and 8366 deletions. To find out more, check the repo.
Enjoy! [Less]
|
Posted
almost 6 years
ago
Now with extra Symfony goodness!
As usual during those last few releases, datamanager got a number of new features, for example better image handling. Also, the form is now locked later in the process, allowing for greater programmatic control, and
... [More]
templates now have more control over attributes.
On the framework side, the transistion to Symfony took a big step forward with the integration of HTTPKernel, which now handles (nearly) all requests, which unlocks a number of routingfeatures (like validation), and makes writing handlers a lot more user friendly. It also enabled us to remove a lot more superglobals, which improves testability, and allowed us to simplify the content cache and context logic, which now use much less memory.
Also, the component interface was simplified to produce a lot less boilerplate, which should make it easier to create new components.
Another focus was the removal of a number of longstanding UI annoyances, for example bad interactions between Bootstrap and our overlay UI, so UX should be a lot smoother now.
Starting with this release, midcom-console is now part of the main repo, since it is needed for almost all usecases anyways. This allowed us to also move the majority of midcom-exec scripts to the CLI, where there are nor execution time limits and debugging/monitoring output isgenerally easier. Especially the Solr integration has seen numerous improvements as a result of this.
Aside from all that, the following items may be worth mentioning:
update JS dependencies (elFinder, fullCalendar, CodeMirror, etc)
enhanced ACL editor & Deleted Object handling in Asgard
the usual host of simplifications, cleanups, and performance improvements
The 1372 files changed, 23658 insertions, and 23759 deletions, so there's quite a bit to play with, if you install from Packagist, or directly from the source.
Enjoy! [Less]
|
Posted
over 6 years
ago
Just in time for the holiday season, here's a fresh release to play
with
The most visible change in this release is probably that we have toned down our charming retro look by switching (almost) all icons from 16x16 PNGs to glyph icons, which is an
... [More]
improvement especially for high resolution displays.
Besides the integration of Symfony Routing already mentioned in the last article, the area that has seen most work is our new datamanager, which now supports a lot more of the old Datamanager2 functionality, and has become much more flexible towards future use cases. For example, you can now pass all regular Symfony Form options through schemas in addition to the classic DM2ones. Also, you can now build form trees corresponding to an entire object graph.
The diffstat lists 1473 files changed, 22696 insertions and 26492 deletions, so you can image that there are many more improvements, for example:
improved offer creation & tracking workflow in Sales
updated JS dependencies (elFinder, fancyTree, jQgrid, tinyMCE)
the usual assortment of bug fixes, UX improvements, cleanups & refactorings
...and the rest you'll just have to find out about yourselves! OpenPSA 9.5.0 is available from Packagist, and of course straight from the source on Github.
Enjoy! [Less]
|
Posted
over 6 years
ago
YAML, here we come
As you probably know, a long-term goal of OpenPSA development is to reduce both the maintenance burden and the learning curve, by slowly replacing the framework's lowlevel infrastructure with Symfony components. Recently, we've
... [More]
made another big step in this direction by switching to Symfony Routing. This means that starting now, you can create your routes in YAML files in the regular Symfony format. This not only improves readbility, but also gives you access to a lot more validation and other features.
The second effect of this change is that now, URLs can be generated. So instead of hardcoding links, you simly call the router's generate() method, and it takes care of the rest. It might seem like a small thing, but you will appreciate it the next time you need to change URLs: Instead of searching the entire codebase with some fuzzy regexes, you simply update the routes file, and all the rest is taken care of by the framework.
Currently, Symfony Routing is available inside components (i.e. topic routing and midcom routes still use the traditional mechanism), and legacy component routing is still supported, so nothing changes immediately for existing code. However, the conversion from the old .inc format to .yml is really straightforward and can be done quite quickly, so don't expect the legacy support to stick around forever. Especially since there are a number of further improvements the new routing enables (which will probably require us to drop legacy support), but more on that in another post..
Enjoy! [Less]
|
Posted
over 6 years
ago
YAML, here we come
As you probably know, a long-term goal of OpenPSA development is to reduce both the maintenance burden and the learning curve, by slowly replacing the framework's lowlevel infrastructure with Symfony components. Recently, we've
... [More]
made another big step in this direction by switching to Symfony Routing. This means that starting now, you can create your routes in YAML files in the regular Symfony format. This not only improves readbility, but also gives you access to a lot more validation and other features.
The second effect of this change is that now, URLs can be generated. So instead of hardcoding links, you simly call the router's generate() method, and it takes care of the rest. It might seem like a small thing, but you will appreciate it the next time you need to change URLs: Instead of searching the entire codebase with some fuzzy regexes, you simply update the routes file, and all the rest is taken care of by the framework.
Currently, Symfony Routing is available inside components (i.e. topic routing and midcom routes still use the traditional mechanism), and legacy component routing is still supported, so nothing changes immediately for existing code. However, the conversion from the old .inc format to .yml is really straightforward and can be done quite quickly, so don't expect the legacy support to stick around forever. Especially since there are a number of further improvements the new routing enables (which will probably require us to drop legacy support), but more on that in another post..
Enjoy! [Less]
|
Posted
about 7 years
ago
Forwards ever, backwards never!
As in the past, this release continues on the trajectory of refactoring and modernizations. Now that the last of our legacy dependencies have been removed, we could focus a bit more on the framework code itself. In
... [More]
this release, the old authentication system has been much simplified and will now use Symfony internally, as will parts of the i18n service.
We‘ve also bumped the PHP requirement to 5.5, since anything older is way past it‘s due date, and the newly available functionality has been put to good use already, for example to improve the code organization in preparation for the next round of the Symfony rollout.
updated JS dependencies (TinyMCE, elFinder, fancytree)
improved IDE autocompletion support for DBA properties
switch from memcache to memcached extension
improved support for more exotic DM2 configurations in datamanager
the usual vast array of small usability improvements, simplifications, performance improvements and bug fixes
OpenPSA 9.4.0 is available from Packagist, and of course straight from the source on Github.
Enjoy! [Less]
|
Posted
about 7 years
ago
Forwards ever, backwards never!
As in the past, this release continues on the trajectory of refactoring and modernizations. Now that the last of our legacy dependencies have been removed, we could focus a bit more on the framework code itself. In
... [More]
this release, the old authentication system has been much simplified and will now use Symfony internally, as will parts of the i18n service.
We‘ve also bumped the PHP requirement to 5.5, since anything older is way past it‘s due date, and the newly available functionality has been put to good use already, for example to improve the code organization in preparation for the next round of the Symfony rollout.
updated JS dependencies (TinyMCE, elFinder, fancytree)
improved IDE autocompletion support for DBA properties
switch from memcache to memcached extension
improved support for more exotic DM2 configurations in datamanager
the usual vast array of small usability improvements, simplifications, performance improvements and bug fixes
OpenPSA 9.4.0 is available from Packagist, and of course straight from the source on Github.
Enjoy! [Less]
|
Posted
over 7 years
ago
It's that time again..
The next release of OpenPSA and the underlying MidCOM framework has arrived. The big news this time around is that we have switched over to the new, Symfony Forms-based datamanager. The immediate benefits are more, and more
... [More]
complete, localizations, HTML5 support, and a lot greater flexibility when rendering forms. And of course, this opens the door for many new exciting applications (not to mention that it gets rid of our last PHP4-era dependency..).
Aside from that, here's a few other highlights:
update bundled JS dependencies (elFinder, CodeMirror)
implement support for subtasks in project management & sales/invoicing
basic iCal create & edit support
more testcases and improved coverage
unbundling of optional components (DM2, tmp service, positioning)
Converted content cache & attachment serving to Symfony HTTP Foundation
many cleanups, API streamlining, small fixes and simplifications
As usual, you can get the release via Packagist/Composer, or directly from github.
Enjoy!
[Less]
|