Module/Theme Browser

Events happening in the community are now at Drupal community events on www.drupal.org.
You are viewing a wiki page. You are welcome to join the group and then edit it. Be bold!

Project information

Project pages on drupal.org:
Project Browser: http://drupal.org/project/project_browser
Project Browser Server: http://drupal.org/project/project_browser_server
Drupal.org PBS: http://drupal.org/sandbox/wildkatana/1213634
Student: Leighton Whiting (wildkatana on d.o and g.d.o)
Mentor: Dmitri Gaskin (dmitrig01 on d.o)

Current status:
August 22 - I am pending trying to get this deployed on Drupal.org. If you want to help, please go to these posts and post your support: http://drupal.org/node/1248606 and http://drupal.org/node/1243332

Backlog of Statuses:
April 27, 2011 - Getting Project Page set up and getting used to Git
May 1, 2011 - Reading up on the SimpleTest framework
May 23, 2011 - Installing Drush, Drush Make, and Setting up a Drupalorg Test site to prepare for coding the changes to the project module
May 26, 2011 - Created a new Project called Project Browser Server, which exposes an API to serve project search results to the Project Browser module.
May 30, 2011 - Added some new files and functions based on Module Browser on GitHub (Stijn Vanden Brande https://github.com/Krimson/Module-Browser), and also some new plans for a categories hook that will allow the project_browser_server module to filter by categories
May 31, 2011 - Posted on http://drupal.org/node/102102 to show support for getting the dependencies of modules exposed in an API form. Filed an issue to try and get a dev sandbox of drupal.org so that I can code the additions to the Project module: http://drupal.org/node/1173804
June 1-4 - Getting the look of the Project Browser page to look like Bojhan's mockup, as well as learning Contextual Links and getting them added.
June 6-9 - Set up an example server to use for testing while waiting for integration with drupal.org. Worked out a lot of bugs and got the basic batch install process working.
June 10 - Created a demo video showcasing the current state of the module: http://www.screencast-o-matic.com/watch/cX16jGqeg
June 12 - Set up things with the drupal sandbox server. Experimented with code, and was able to expose the categories to Project Browser.
June 13 - Rewrote the Categories functionality so that multiple sites can use the same categories without conflicts.
June 24 - June 30 - Tons of improvements to UI, getting the AJAX working without bugs, Separating Filters and getting workflow bettered. Too many improvements to list.
July 1 - New Contextual Links for Categories and default Filters
July 2 - Made a new demo video screencast, but can't upload it yet because of slow internet. Lame, I know. If anyone wants to check out the module themselves, you can download it from the Project Browser link above.
July 4 - Finally got the video to upload: http://www.youtube.com/watch?v=mFDBQqTfG-8
July 5 - Reviewed with Dmitri and submitted a new schedule for the rest of the summer, found below.
July 6 - New project pages for the projects, as well as dev releases! Try it out, comment below with feedback and ideas :)
July 7-9 - Some new features added, including Sorting support. Also, new sandbox for drupalorg_pbs module
July 11 - Implemented client-side caching of the results for 24 hours to reduce unneeded server queries
July 13-14 - Implementing a new method for receiving the results from the server: GET/json for better caching possibilities
July 15 - Finalized the caching changes, and changed Project Browser Server to provide an admin page with server strings and options to use JSON or XMLRPC
July 18-24 - Separated results into different servers pages, both conceptually and in the UI. Changed the Select Releases workflow to use jQuery links instead of AJAX. Combined the Select Releases and Install pages. Removed the Backup page. Added a new Category widget to help with selecting categories.
August 2-8 - Writing some tests for the project_browser module. Creating new issue to get the Project Browser Server and Drupalorg_pbs modules deployed on d.o: http://drupal.org/node/1243332
August 9 - Got rid of the checkboxes and changed it into links to add and remove from install queue. Added red x icon

Description

Implementing a Module and Theme Browser in Drupal 8 Core as well as a contrib for Drupal 7 which would allow users to search for and install Drupal extensions from the admin area of their Drupal sites, similar to how WordPress currently works.

GSOC Proposal: http://www.google-melange.com/gsoc/project/google/gsoc2011/wildkatana/16001
Drupal Groups Proposal: http://groups.drupal.org/node/136549

Old Project schedule

  • May 23 - 31: Coding menu and pages, getting the skeleton worked out
  • June 1 - 7: Adding new Functionality to the Project module on d.o to expose the necessary data
  • June 8 - 17: Creating a condensed version of the Backup/Migrate module to backup the database before installing new modules
  • June 18 - 30: Coding the batch install-backup-enable process
  • July 1 - July 12: Redesigning the Search Page (including js, css, and php)
  • July 11: Submit Midterm
  • July 16 - August 6: Coding the Module and Theme browser and filters
  • August 7 - 14: Providing an API for other module repositories to integrate with
  • August 15: Begin polishing up the module, fix bugs, write documentation
  • August 22: Submit Final Report to Google

New Project Schedule
July 6-8 : 3 days
-Sorting Filters, including API changes to Server, and UI on Client, widgets, Solr implementation, etc
-Fixing the categories so that multiple categories are supported by drupalorg_pbs

July 11, 13-15 : 4 days
-Adding GET method for communicating with PBS.
-Implementing Caches for Client.

July 18-22 : 5 days
-Combining the Install confirmation page and the Select Versions page into one page. Get rid of the Backup page for now.
-Changing the Select Releases widget to use jquery instead of AJAX.
-Changing the categories filter UI to something that makes more sense.
-Refactoring so that each server has it's own 'results page', and a filter to let the user select which server to use.

August 3-4 : 2 days
-Running the code through an intensive code review, fixing issues, cleaning up code, etc.
-Writing tests for the modules using the testing API

August 8, 12 : 2 days
-Writing the documentation page(s) needed for the module.
-Getting drupalorg_pbs and project_browser_server implemented on drupal.org

August 16, 17 : 2 days
-Submitting patches for the update module so that there is less code duplication between the two modules (adding some functions that are more generic that can be used by both update and project_browser) if time permits
-Testing, testing and more testing :)
-Making sure the projects have full releases for each relevant branch.

Comments

Postpone Database Backup

barraponto's picture

DB backup will be great -- but I guess you should take your time implementing the Module/Theme Browser. There are several projects you can hook into as an optional dependency for the DB backup.

I think you may be right, th

wildkatana's picture

I think you may be right, th DB Migrate module could be a dependency. I'll postpone that for now and focus on getting the Module/Theme browser going first, then see about the DB Backup if there is time left over.

Sincerely,
Leighton Whiting

I made a demo video here

wildkatana's picture

I made a demo video here showcasing the current state of the project and some of the features in action: http://www.screencast-o-matic.com/watch/cX16jGqeg

Sincerely,
Leighton Whiting

Good work

yoroy's picture

The video looks very promising, thanks for posting that. I see you are aware of http://bojhan.nl/module-theme-browser-interface, great to see this progessing!

Very exciting stuff! thanks

sumitk's picture

Very exciting stuff! thanks for screencast. Very much looking forward to this project.

Finally got the latest demo

wildkatana's picture

Finally got the latest demo video to upload: http://www.youtube.com/watch?v=mFDBQqTfG-8

Sincerely,
Leighton Whiting

looks great. Would like to

aspilicious's picture

looks great. Would like to see the performance when it's integrated on d.o.

In terms of performance,

wildkatana's picture

In terms of performance, there are few things that I have planned to implement:

1) On the 'client' side, I will implement caching for all requests, so that the project browser can just pull data from the database when it is available and current, rather than making needless requests.

2) On the 'server' side, I will implement a new GET callback page method, which will use json to deliver the results. Currently Project Browser Server uses xmlrpc. The reason this will improve speed is because the GET pages can be cached very easily, whereas xmlrpc, while still fast, cannot.

Sincerely,
Leighton Whiting

The latest demo video is great. . . .

jpw1116's picture

I already commented to you off-site about the "[] Install" label, namely making it "Add to Install queue" instead.

In the Filters block, I wonder if you may already have discussed a version restriction option, namely "Full release only" -vs- the whole "beta/alpha/dev" spread. I am guessing that would benefit newbies, but maybe others could derive some use, like for clients who won't be prone to updating or just want "greenlighted" projects.

Even more, I am interested in enabling modules recursively in subsites. It's been my experience in D7 that installing a project naturally reaches all your sites, but enabling is still site-by-site. That is tedious. What's worse, sometimes a fussy project will prefer to be enabled on the subsite first, otherwise it will throw warnings. Still, your effort would save time with that recursion.

@jpw1116, Thanks for the

wildkatana's picture

@jpw1116,

Thanks for the suggestion about the name change, I agree with the Add to Install queue making more sense, and I'll do that.

Drupal.org supports filtering by 'Full projects' or 'Sandbox Projects'. Project Browser by default does not search Sandbox Projects. As far as I know, there is no way to only search for projects with 'full releases' as opposed to dev releases.

I'm hoping that with filters like 'most downloaded' and other things, the users will be able to find the well supported projects that everyone is using relatively easily.

As for the recursive enabling, I'm not even sure if this is possible from the Drupal API, and this would definitely be outside the scope of this project and likely drupal core until better support is added for managing subsites from the Drupal API. It would be nice, but right now there are just too many roadblocks for something like that.

Sincerely,
Leighton Whiting

Your explanations make sense. . . .

jpw1116's picture

Keeping project installs/enabling parallel between site & subsite(s) is another animal, I agree.

Imagine doing that, plus maintaining separate development and production multisites. Keeping track of projects becomes a project in itself. Anyway, it's something to keep in mind.

At least your more graphical, intuitive approach--with filtering--makes a big leap past to the stock D7 offering.

Thanks again!

Keep up those clear

jpw1116's picture

Keep up those clear screencasts, too.

Google Summer of Code 2011

Group notifications

This group offers an RSS feed. Or subscribe to these personalized, sitewide feeds:

Hot content this week