Pimcore X: How did our team contribute to building a better platform
Pimcore X, the latest release of the Pimcore platform is finally released! This historic edition marks ten years of advanced data and experienced management for this platform.
Together with the rest of the Pimcore community, we’ve taken up the task of building the new Pimcore X platform. Our Pimcore developers, Alen, Dino, Tomislav, Helena, Goran, Ivan, and another Ivan have made a great effort to help build the new edition of the Pimcore platform!
So, let’s see how our Pimcore developers helped create a better environment for both Pimcore developers and Pimcore users! But first, what’s new in Pimcore X?
What’s new in Pimcore X?
Firstly, Pimcore has been refactored and ported to the latest technology stack – Symfony 5, ExtJS 7, and PHP 8. The whole Pimcore application is modernized in order to provide both developers and users a better experience. Now, this is the first-ever data and experience management platform that works with Symfony 5!
Pimcore’s core crew, in collaboration with the whole Pimcore community, worked fiercely on completing the full version of Pimcore X – and the goal is finally achieved. Building Pimcore X was a notable milestone for the whole Pimcore community, as it has seen more collaboration between developers than ever before.
So, let’s see what are the new functions included in Pimcore X!
Simple data import without any coding
The newly-released Pimcore X takes a low-code approach to both PIM and MDM. Thanks to the new Pimcore Data Importer, data exchange is now accelerated and there are some new import functions added to the Pimcore Datahub.
From now on, the import of data from external sources will be much easier, as there won’t be any coding required.
Improved partner collaboration in PIM/DAM
The new Pimcore Experience Portals are bringing along a huge change. To make sure that external companies can also access the relevant data, Pimcore Experience Portals will allow content to be shared and worked on in a matter of seconds.
These portals can be set up quickly and they’re fully customizable. Meaning, you can assign different rights and roles to the users within your content management system.
Integrations for Amazon, eBay, Adobe Creative Cloud, and Microsoft Office with the Enterprise subscription
Thanks to Pimcore’s technology partner Productsup, brands and retailers can now publish their product data on over 2500 digital sales channels, including Amazon and eBay!
A new DAM integration with CI HUB now enables you to easily access any kind of content within Adobe’s Creative Cloud and Microsoft Office. If your company is using either of these technologies, you’ll find it to be a huge advantage.
Lastly, by adding a new standard interface to Translations.com, you’ll now have automated translation workflows for managing multilingual content!
New Perspective Editor
With the newly-created Perspective Editor, Pimcore users will now more easily understand and customize the data they usually share.
And once again – no coding. It’s delivered in an easy-to-use format and it enables users to create custom views and perspectives in the Pimcore admin.
Pimcore is now more easily deployed in the cloud
With this new release, Pimcore X is now much easier to install in any cloud environment. By simplifying the configuration of object storages (Amazon S3 and Content Delivery Networks), You’ll be enjoying Pimcore on the cloud in no time.
The whole deployment of Pimcore applications is now made simple, as it’s now easier to integrate the changes to the data model with CI/CD pipelines.
All in all, Pimcore X comes in strong with a wide array of new functionalities. It marks a turning point in the 10-year history of Pimcore and it’s much more than just a new version.
Our 7 Pimcore developers are also a part of this movement, and we’ve asked them a few questions regarding their contributions to Pimcore X!
What encouraged you to contribute to Pimcore X development?
Alen: I was encouraged by obstacles I’ve encountered during the development of a few different projects. I knew that, same as me, other developers will likely face the same obstacles.
Dino: One of our team goals was to contribute to the Pimcore core, and while I was working on a project, I encountered a bug that made it impossible to work normally. This seemed to me as an ideal chance to help build the new Pimcore X and achieve our team goals.
Helena: It’s completely normal to encounter a problem during the development on a huge platform. Instead of writing a bug report, Pimcore’s core team surely appreciates pull requests a bit more. As Pimcore is our primary development platform, we wanted to contribute to its development and make life easier for other developers who’ve encountered the same issues.
Tomislav: I’ve found a bug while I was learning more about Pimcore, and I’ve lost quite a bit of time, considering that I’ve thought that it’s my mistake and not a bug. This encouraged me to solve the bug so other Pimcore developers won’t lose any time on this particular issue.
Ivan: Our primary goal is to always keep improving both our skills and the Pimcore platform. To contribute towards reaching this goal, one of the possible solutions is to always solve a mischievous bug that’s halting our development. We have to keep in mind that we’re solving these issues other developers may encounter, not just us.
Goran: In my case, I’ve hit a blockade in the development, so I couldn’t move forward without contributing. Because of the specificity of my task, I believe that the issue would remain unsolved for quite some time. With this contribution, I wanted to help myself, validate my thinking, and pay my debt to the community, the debt that every developer owes for using an open-source solution.
Ivan: During development, we’ve encountered many times that a certain feature would help and save us some time. In some situations, these features would be really great quality-of-life changes, and most importantly, they wouldn’t only help us but also other developers using Pimcore around the world. Since I’ve really fallen in love with the platform, it was logical to try and contribute by implementing the wanted feature.
What issues did you solve and how does your solution contribute to Pimcore X?
Alen: The issues I’ve solved were mostly upgrades of the existing functionalities, such as some auxiliary functions while generating PDFs and emails, and adding different ways of loading frontend scripts on pages. My contribution enables further improvements for developers who are working on new Pimcore projects.
Dino: I’ve solved a bug that was disabling the Unit listing to receive condition variables. This was the reason why we couldn’t use filtering on the Unit listing. This fix allows developers to regularly use Unit listing in the way it was initially meant to.
Helena: It was a bug that made problems when using lazy load functionalities in localized fields. The case was a little bit unusual to explain and reproduce but with a bit more in-depth research, I’ve found a simple solution.
Tomislav: I’ve solved a bug related to the Classification Store. The problem was that while deleting the key, the key wouldn’t be deleted from the group.
Ivan: I’ve solved a bug related to the admin translations. It was present while filtering translations per language that wasn’t active anymore, that is when we’d use Pimcore configuration to narrow down the number of visible translations. My solution enables the normal usage of admin translations. While the bug was present, it would cause Pimcore administration to completely freeze, meaning that we would need to reload the page.
Goran: I’ve solved a bug associated with storage that’s been implemented along with Pimcore X. I’ve been working on implementing AWS S3 buckets and replacing local storage with S3 storage. Most of the code worked well, except for one line where a native PHP function was used for file type detection. That part of the entire logic was a bit problematic because the input value for that particular function varies from one storage implementation to another. Therefore, in harmony with the rest of the code, I’ve used a method that exists in every storage implementation.
Ivan: My contribution was adding a character counter to the WYSIWYG editable, then adding a maximum character limit to its data type which could be changed on individual classes. This added the needed flexibility required for limiting the characters a WYSIWYG editable can have.
Do you intend to work on developing new Pimcore releases in the future?
Alen: I like the direction in which Pimcore is developing and I’m definitely planning on taking part in the development of new Pimcore releases.
Dino: Yes, definitely. By solving issues, we’re helping create a better Pimcore platform and by doing it, we’re making our job easier not just for us, but for other developers in the Pimcore community.
Helena: Yes, I’m planning on using every opportunity for making a contribution!
Tomislav: Yes, by solving such issues I’m helping not only myself but also the rest of the community!
Ivan: Of course! If I encounter any of such bugs in the future, I’ll be quick to contribute once again to the rest of the community.
Goran: Definitely. As I’ve said, I consider that to be paying back the debt to the community, and the very thought of your code being used by thousands and thousands of developers is something special.
Ivan: Definitely! It was a blast getting to know how some parts of Pimcore work under the hood and it helped me understand it even better.
While you were working on Pimcore X, did you collaborate with other community members or Pimcore employees?
Alen: Every contribution to this project, including mine, was reviewed by Pimcore employees to ensure that only high-quality and constructive code becomes part of the new Pimcore. In the future, I hope I’ll take part in bigger contributions involving even more members of the community.
Dino: Yes, my fix was reviewed by Pimcore’s employees.
Helena: Yes, the process consisted of reviewing my suggested solution, a short discussion, and an additional request for refactoring the code.
Tomislav. My fix was reviewed by a Pimcore employee and I’ve received guidelines on how to improve the written code.
Ivan: Yes, my fix was reviewed by Pimcore’s CTO and I’ve received positive feedback with a follow-up regarding the new feature that was added.
Goran: I didn’t have any particular communication with Pimcore team members, as I’ve chosen the shorter route without officially opening the issue. I’ve described the entire issue in the pull request, and my commit did pass through the standard review process and was finally approved by Pimcore developers.
Ivan: Yes, my contribution was reviewed by Pimcore’s CTO who gave me some positive feedback and asked me to rebuild the component Pimcore is using to the newest version.
Take a deep dive into Pimcore X!
The development of Pimcore X has finally ended – and if you didn’t, you can still check out all of the pull requests the whole community issued in order to polish the platform as much as possible. Visit Pimcore’s GitHub and take a quick look at how this huge project looked like.
And if you’ve taken part in building Pimcore X – kudos! You’ve done a great job!
If you’d like to see how our Pimcore team contributed to the Pimcore X, check out their pull requests:
- Unit listing missing condition variables fix
- Added async option to headscript
- Added file URI scheme in Mail helper for resolving absolute paths
- Lazy load fix when using localized field
- Query builder missing condition variables
- (Classificationstore) Deleting key removes it from groups that contain it
- Fixed admin translations order key
- Assets fix: use Flysystem for size determination
- [Data Object] WYSIWYG: char counter and maxChar limit in datatype
- Localized error pages
P.S. You can find more details on each of these contributions on our Pimcore knowledge base, so be sure to stay tuned in and soak up all the knowledge you can!
And if you’re looking to learn more about Pimcore – our Pimcore knowledge base may be the best place to start learning about Pimcore today!
There, you’ll find everything you need to start using Pimcore today! For all questions related to Pimcore, feel free to contact us at hello@factory.dev!