I am a webdeveloper. When it comes to dependencies, I’m using composer to manage my php dependencies and I mostly use bower to manage my dependencies for frontends. Why do I need both? Why can’t I simply use composer to manage my frontend dependencies, too? There is even a project for this, to let me actually do that, which is composer-components but they don’t contain all the packages e.g. bower has. On the other hand, if you are developing a frontend component, there are plenty package managers available to consume your library, it already takes a good chunk of effort to publish it to all these sources. Even harder when you want to make them available to all the „backend“ dependency managers, ruby, python, php, … I’m pretty sure you will miss some if you come far to that point thinking about publishing it there.
My idea is to create a webservices, to automatically handle that. You submit your project, point it to your vcs to let it read your source, you select your primary file that contains your package information (bower.json, packages.json, composer.json, whatever), install a commit hook and the rest is taken care of. Something which I think composer-components aims at, in a very simple form (I will stay with the name of composer-components to avoid naming with the component frontend package manager). The benefits would be very handsome for both frontend and backend developers:
- Frontend developers submit their project once and have it published everywhere else. Also no need to deal with deploy scripts, one for each dependency manager.
- Backend developers finally can install frontend dependencies without getting angry to not find the dependency in their primary dependency manager.
I did not stop thinking until that point, instead ideas that rested in my head for the last couple of years also spread into that project. E.g. to gather metrics around projects that anyway are spread across the web or are only available to a specific environment but contain the potential to serve at a more global scope (e.g. KNP Bundles scoring). So, I put them together in a little slideshow:
After all that ideas, the initial project name idea „DepHub“ might be wrong as it would serve a bigger purpose 😉
Disclaimer: This is an idea I would like to share. I think it is a very good idea to help the webdevelopment community to combine their efforts and create a more streamlined development lifecycle. However, I do not have the time and budget to work on this project. But if some people are interessted in this idea or also have thought about this and plan to jumpstart this, I am definitely interessted.