GSoC 2016 Proposal: Python Package Manager
Peter David Cassetta
Email / IRC / Social / Web
IRC: PeterCassetta on irc.freenode.net
Google+: +PeterCassetta on Google+
I wish to build a package manager to allow users to update installed add-ons quickly and easily.
Artists will be able to update add-ons from within Blender. Currently updating an add-on is somewhat of a hassle and must be done manually (by downloading the add-on and installing it). With a package manager, this process will be greatly streamlined. Furthermore, a package manager will offer developers an easy way to distribute fixes and/or updates.
- Package manager
- Will check for updates to installed add-ons, and install all updates or only desired.
- Allows users to install an older version of an add-on if they wish.
- Will be incorporated as part of the user preferences window’s add-ons tab. (Appropriate UI alterations to make this work will have to be discussed upon proposal’s acceptance.)
- Wiki documentation for artists, and for developers wishing to make use of the package manager.
The package manager will aim to make distribution and download of add-on updates easy for both artists and developers. When asked to check for updates, the package manager will determine the most recent version of installed add-ons. Current and older versions of add-ons should both be available to download. The update/download server should be customizable per add-on, to allow add-on developers not involved with the Blender Foundation to utilize the package manager. Server communication and downloads should probably use SSL, maybe even additional authentication.
Downloads/updates should run in the background, and not freeze Blender. Users should have the option to keep old versions rather than deleting upon a successful update, in case a rollback is needed. If errors occur during the update process, the original add-on should be preserved and cleanly restored.
Several of the open topics listed on the wiki’s package manager ideas page will need to be resolved as well prior to the start of coding, while some of the more time-consuming features can be decided later on based on time constraints. My main focus will be to deliver a working project at the end of GSoC.
I will plan to complete the project over the course of 12 weeks. I can begin work on May 23.
Prior to May 23: discuss best way to download add-ons and find current version, and consider required UI changes
May 23 - June 3: Nail down the basics: solidify plans for finding version, downloading, and UI, then begin coding
June 6 - June 17: By the 17th, should have a functional prototype allowing at least to check for updates and update an add-on
June 20 - July 1: Enable rollback and option to prevent deleting original add-on after update, restore original add-on if an update fails
July 4 - July 15: Ensure tight security with client-server communication, allow custom update servers on a per add-on basis, provide both current and older versions for download
July 18 - July 29: Discuss Blender version compatibility handling, discuss/implement possible additional features should time permit (if not, work on what needs to be done)
August 1 - August 12: Finish any remaining features, fix bugs, complete polishing and be ready to submit finalized project by August 15th
I do not have any expected vacation time during the project period, and I do not foresee any school/work conflicts with my proposed schedule.
Hi, I’m Peter Cassetta. I’m 20 years old and I’m a senior studying Computer Science at Texas State University in the USA. My hobbies include writing, gaming, building with LEGO, and reading. I’ve used Blender since 2.49b, and I am excited for the chance to apply to the GSoC this year. Back in 2012 I wrote a simple online material library add-on for Blender which was accepted into contrib add-ons. I have used Python for about 4 years now, and I am familiar with networking in Python. In addition, I have experience using Blender’s Python API, and I believe I have sufficient knowledge of the language and Blender’s conventions to take on this project.