Jump to content
Jens Martsch - dotnetic

ModulesManager 2 - install, update and uninstall your modules (WIP)

Recommended Posts

Hi guys,

today I want to share a little preview of my newly developed ModulesManager 2 module which is currently in beta.

ModulesManager 2 provides an easy to use interface to download, update, install, uninstall and configure modules.
It is meant to provide an optimized alternative to the ProcessModule dashboard.

Maybe @ryan agrees to merge it to the core at some point when it is finished and polished.

Features:

  • Live-Search (aka find as you type) for categories
  • Live-Search (aka find as you type) for module names
  • Modern UIKit design
  • Quick uninstall of a module
  • Caches the module list from modules.processwire.com directory locally. There's a refresh button to get actual data.

Preview video (with voiceover)

Why a new module manager?

Some people including myself think that the actual module installation in ProcessWire could be improved in many places. Make it easy for everybody! Lower the barrier for new users, and make it easier for existing users to find an install modules.

That is one thing, that many other frameworks/CMS's have by default. Like ModX, WordPress or PrestaShop.

What are the disadvantages of the actual core module interface?

  • Installation of a module is not very user-friendly:
  • You have to be aware where to get new modules, search for a module, copy or remember the module name or URL, go back to your ProcessWire installation, paste the module name , or URL, click on "get module info" and finally install the module
  • It only displays installed modules, not the ones that are available in the modules directory, so it makes discovering modules hard.
  • Uninstalling a module requires you to go to the module detail page, click a checkbox and then submit the change. After that you have to go back to the module overview page.
  • It displays only limited information about the module

History

  • Back in 2012 Soma came up with ModuleManager, a module which displays modules as a table and provides functionality to download, update, install and configure modules (same as this module does). Sadly this module isn't maintained anymore (but it is still working)
  • Then in 2019 Adrian came up with the idea of autocompleting the module name and Robin S developed the AutocompleteModuleClassName module which does this. This approachis a nice addition for devs who know which module they are looking for. But for all others we need a browsable experience, which provides more info than just the name.
  • This was the perfect time for me to chime in, as I thought that module management is very cumbersome at its current state.
  • A quick proof of concept / prototype was quickly developed. But then development slowed down, as I had to get more experience with vue.js first. Even as I was more experienced I stumbled into some problems that were to advanced for me to tackle. So I hired someone to help (yes, I even paid money for developing this module)

TODO

  • Install multiple modules at once like it is done in [ProcessModuleToolkit](https://github.com/adrianbj/ProcessModuleToolkit)
  • add filter by installed/not installed / updateable / recommended
  • switch between card and table layout (table for quicker overview and managing, cards for better exploring, the choice is yours)
  • Allow "search for module" to search in the description also, so a module can be found by its purpose and not only by its name
  • Integrate the Readme or changelog of a module as it is done in [ModuleReleaseNotes](https://processwire.com/talk/topic/17767-module-release-notes/)
    This would have the following benefits: Make discovery of a module's changes prior to an upgrade a trivial task.
    Make breaking changes very obvious.
    Make reading of a module's support documentation post-install a trivial task.
    Make module authors start to think about how they can improve the change discovery process for their modules.
    Make sure the display of information from the module support files/commit messages doesn't introduce a vulnerability.

I need your feedback

This module is in development right now, and I am happy to discuss with you and get some feedback.
I will publish it on github as soon as I have the time, so you can download it and analyze the code, and even provide pull requests.
What do you like? What is missing? What could make the process even easier?

  • Like 25

Share this post


Link to post
Share on other sites

Hi @jens.martsch,

This looks awesome! Even without the todo list, this is a huge improvement to the current way of installing and searching for modules. I really like the listing of modules. Some quick questions:

  1. Why call it Modules Manager 2? Why not just ModulesManager?
  2. I might have missed it; Is it possible to read/find modules that have been moved physically to the modules folder on one's site but have not yet been installed? This will cater for modules that are not online in ProcessWire's module's directory

Great work!

 

PS: Nice overview video, btw!

Edited by kongondo
  • Like 1

Share this post


Link to post
Share on other sites
2 minutes ago, kongondo said:

Why call it Modules Manager 2? Why not just ModulesManager?

Because Soma's module is called ModulesManager. This module is meant as a successor to ModulesManager.

Regarding question two:  Yes this is possible. The option to download a module from a URL will be added also.

 

Share this post


Link to post
Share on other sites
5 minutes ago, jens.martsch said:

Because Soma's module is called ModulesManager.

My bad. I thought his was ModuleManager 😉.

6 minutes ago, jens.martsch said:

Regarding question two:  Yes this is possible. The option to download a module from a URL will be added also.

Great!

  • Like 1

Share this post


Link to post
Share on other sites
12 hours ago, jens.martsch said:

I need your feedback

This module is in development right now, and I am happy to discuss with you and get some feedback.

Hi Jens 
It looks great and is badly needed too. 

Did you want feedback to be provided privately or on this thread?

Share this post


Link to post
Share on other sites

Hey Peter, 

feedback can be provided here, so everyone is on the same page and can discuss together. I am sure you guys will find some more things to talk about, as soon as I publish the module.

There is a thing that I am not really happy with, but have to find a better solution:  The vue template is embedded right in the module's php, and I would like to change that, so an external automatically genererated (vue-cli) HTML file will be included. Maybe some of you are experienced with this and can help me out.

I hope to find time at the weekend to publish the current state of the module.

Share this post


Link to post
Share on other sites

Possible concern about including the module in the core:
The module depends on vue.js which adds a new library to the ProcessWire ecosystem. I am biased about using vue.js as it allows two-way-data-binding. So when something changes in the module JSON file, changes can be reflected instantly without reloading or rerendering the whole view.

It also allows to quickly filter modules, much quicker than it was possible with HTML which is in the DOM.

Share this post


Link to post
Share on other sites

Ok my feedback is mainly just UX/UI

1. I love the cards layout and how much info is presented. It's informative without being crowded. I think a list view is also needed too and a user should be able to flick between two. Particularly when viewing modules with an update, I want to quickly scan down a compact list and see what might require an update. 

2. On the filters for 'Show only installed', 'Show only uninstalled', 'Show only updateable, 'Show most recommended', 'Picked', 

I wonder if these could be a little more compact and less wordy.

IE a simple dropdown with a title of Display and then 4 shorter options of 

  • Installed
  • Uninstalled
  • Updatable
  • Most recommended
  • Picked

Happy to do a quick mockup/wireframe if that's any use to you.

3. Will 'Show only uninstalled' display modules I have installed and subsequently uninstalled or display everything that's not installed? Might be a better label for this?

 

  • Like 2

Share this post


Link to post
Share on other sites

@Peter Knight The filters for installed uninstalled could be also seen as a category and I think I will integrate them into the category select.

"Show only uninstalled" are modules that are already downloaded but not yet installed. I am not even sure if this option makes any sense.

Picked, is not an option. It was just a demo, which of the filter I selected.

  • Like 1

Share this post


Link to post
Share on other sites
1 hour ago, jens.martsch said:

"Show only uninstalled" are modules that are already downloaded but not yet installed.

You could just rename this to "Inactive" (downloaded and not installed) and "Active" (downloaded and installed).

  • Like 1

Share this post


Link to post
Share on other sites

@louisstephens I had this discussion in the inital topic "Revamped module install interface" and @kongondo replied

Quote

I think let's stick to convention. ProcessWire has always used installed 🙂. For me, it means the module is installed in the ProcessWire system. A module that is present on the disk but not yet installed just means it is not yet part of the ProcessWire system.

but I am still not convinced and think active and inactive would be better labels. What do you other guys think?

Share this post


Link to post
Share on other sites
On 9/16/2019 at 10:43 PM, Jens Martsch - dotnetic said:
  • You have to be aware where to get new modules, search for a module, copy or remember the module name or URL, go back to your ProcessWire installation, paste the module name , or URL, click on "get module info" and finally install the module
  • It only displays installed modules, not the ones that are available in the modules directory, so it makes discovering modules hard.

I really feel this is a good thing that it's still only working that way. I get that there's no great way to discover modules, but I also feel that "discovering modules" is a totally different tasks to "managing modules on the system", which is what the current modules section in processwire is about. The ability to install just by name from the modules directory is imho a nice to have convenience  and not an unfinished start of integrating the modules directory as the source for modules. The modules directory is just one source for modules, possibly the biggest at least for open sourced modules, but not the only one.

This is not to say though that a module filling the gap of "discovering modules" isn't useful and what you created seems like a very nice way to browse the directory and move a module from being listed there to actually being downloaded/installed. I'd personally wouldn't like to see the current module section replaced though.

On 9/17/2019 at 12:12 PM, Peter Knight said:

I love the cards layout and how much info is presented. It's informative without being crowded. I think a list view is also needed too and a user should be able to flick between two. Particularly when viewing modules with an update, I want to quickly scan down a compact list and see what might require an update. 

This hint's at the reasons for the above. Browsing the modules directory is great with a cards view. Maintaining installed modules is a totally different task. It needs modules to be quickly scanable - table layouts are way better at that -, it needs to highlight different data - a version is more important than a lengthy description of what the module does, or how many hearts it got - and I'll also hardly switch rapidly between browsing and maintenance so it doesn't need to be co-located in the interface.

On 9/16/2019 at 10:43 PM, Jens Martsch - dotnetic said:

Integrate the Readme or changelog of a module

That part I'd like to see in the core (a bit depending on how it's implemented though). This is an improvement to the "maintaining modules" part of having installed modules, but rather nice to have when browsing modules.

To summarise:
I really like the problems you're tackling with your module, but personally I'd like to see the efforts split up. The part about "discovery" is great, but certainly not essential to processwire and should in my opinion be either not in the core or at least not installed by default. The part about better maintenance of modules and maybe touching up the UX of the current modules section by lessening the clicks to handle certain usecases is something anyone would benefit from.

  • Like 2

Share this post


Link to post
Share on other sites

Here is a little update.

Not much to see on the frontend side, but I added a whole build setup which generates the JavaScripts and stylesheets from a .vue file.
These files will later be embedded into the module. This step allows me to develop quicker with hot media reloading and better debugging possibilities for vue.
I don't even need a ProcessWire environment to make updates to the view, so this enables others to quickly jump in on this and help me with development.

Added functions that remember the category or the module name. So you can even provide links for users, to guide them to a special module or category like so: http://localhost:8080/processwire/module/edit/?module=process404-logger

Added a switch to switch between card and table layout. This is even remembered and restored after you close your tab or browser. The table layout is something that I plan to integrate at a later point when the main functions work correctly. As I am very busy right now with customer requests I don't have an official date for releasing the module yet.

I hope that I can work on the weekend on it.

 

  • Like 1

Share this post


Link to post
Share on other sites

Thanks for the feedback so far and even mentioning me in the pw.weekly issue 🙂

On 9/19/2019 at 10:16 AM, LostKobrakai said:

The ability to install just by name from the modules directory is imho a nice to have convenience  and not an unfinished start of integrating the modules directory as the source for modules. The modules directory is just one source for modules, possibly the biggest at least for open sourced modules, but not the only one.

In the standard ProcessModules section is also an input for entering the name of the module, which would download this module from the modules.processwire.com directory. ModulesManager2 simplifies and optimizes this process by providing the modules names in an autocomplete.

I know that the modules directory is just ONE source, but that's how the standard in PW always was and I think we should have an official repository for modules. Think of it like the npm registry which is the main source for npm packages. Maybe in the future we could also add alternative module registries like in npm or other package managers, but I really don't know if this is needed. 
Options to upload a module zip file or provide a download URL like in the original ProcessModules will also be added soon.

On 9/19/2019 at 10:16 AM, LostKobrakai said:

Maintaining installed modules is a totally different task. It needs modules to be quickly scanable - table layouts are way better at that -, it needs to highlight different data

Partly I agree with you, but every user is different and if you only want to update one module you can search for its name and click the update button.
I've been planning from the beginning, to also offer a table based view, or a view with reduced information to quickly scan the modules. As you can see in the latest update there is an example table layout (not even nearly finished) to showcase what is planned later.

Also we have buttons for filtering the cards or table view to show only modules which can be updated. I personally think that I would even use the card view for updating my modules, but that's just me.

On 9/19/2019 at 10:16 AM, LostKobrakai said:

and I'll also hardly switch rapidly between browsing and maintenance so it doesn't need to be co-located in the interface

That's your opinion, but others (including me) may see this differently. In the latest update the chosen layout mode is remembered so you don't have to switch. I am even thinking about providing a button to switch between compact and detailed information which would be available for the table and the card view. This would allow someone regardless of the layout to view all information or only the most important bits.
This is very easy to accomplish with vue. Maybe I hack something together, because I really like the idea.

On 9/19/2019 at 10:16 AM, LostKobrakai said:

The part about "discovery" is great, but certainly not essential to processwire and should in my opinion be either not in the core or at least not installed by default.

I have to disagree on this point with you. I think the "discovery" process is good for all users, even powerusers like us. Sometimes I just don't remember a module's name but with MM2 allows me, to search for a term, which might be in the description and I find my module. That's just one example. 
Another one is that users might not even be aware what great extensions exist and with the modules directory integration they can get an overview. This  is something that other CMS or ecommerce systems (like PrestaShop or Shopware) have integrated by default (not at least to earn money, but that's a different topic).

But however, if someone does not like the card view or detailed information, he can switch and forget about it. One doesn't need to use all the features.

I hope my reaction will not be seen as an offensive, because that is not my intention. Unfortunately, it can often seem that way when written.
And of course it is also the case that one can have different opinions on a topic. Whereby anybody can be right.

So you guys see, a lot of stuff is still planned, but before I integrate more and more stuff, I am working on the main features for the card view, then release the module and you guys can try it out, provide feedback or pull requests to make it even better.

  • Like 1

Share this post


Link to post
Share on other sites

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.

Guest
Reply to this topic...

×   Pasted as rich text.   Paste as plain text instead

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.


  • Recently Browsing   0 members

    No registered users viewing this page.

×
×
  • Create New...