MacPorts Webapp Project Report
GOOGLE SUMMER OF CODE 2019
The MacPorts web application, which has been implemented during Google Summer of Code 2019:
-
Displays general information about all the ports.
-
Fetches and displays build-history of the ports.
-
Collects and displays installation statistics (system configurations and installed ports) from users who opt-in by installing the port mpstats.
-
Makes available all the collected data through API.
The application has been deployed at ports.macports.org and most of the code has been merged. The app has a dedicated repository: macports-webapp, and is written from scratch during the project.
Work Done During GSoC:
-
Almost 99% of the work done by me is contained in the dedicated macports-webapp repository which started from zero. It has been discussed in more detail in the next section.
-
Work on portindex2json.tcl, improve its output to be fit for the webapp
-
Minor changes to mpstats, and add a new testing subport
-
mprsyncup job, start generating portindex.json and distributing through rsync
Live Pages from the App
- All pages of the website are responsive and work well on all screen sizes, including mobile phones.
Homepage
- Allows real-time searching by port name or by description
- Displays top 10 requested ports in the last 30 days
Port detail page
- Port health intuitively displays the status of latest build on each builder.
- AJAX based tabs allow easy switching between various information.
- Real time search is provided to quickly find another port.
Port build history
- Multiple filters can be applied simultaneously.
- Filter by status of builds
- Filter by builders
- Filters are AJAX based and can be applied without page refresh.
Port Installation Statistics
- Allows to change duration conveniently.
- Port Versions vs Users
- OS Version, Build Architecture and STDLIB vs Users
- OS Version and Xcode Version vs Users
- OS Version and Command Line Tools Version vs Users
- Port installations vs Months
- Port versions installed vs Months
All Builds
- Multiple filters can be applied simultaneously.
- Filter by port name
- Filter by status of builds
- Filter by builders
- AJAX based pagination.
- Filters are AJAX based and can be applied without page refresh.
To do
Most of the planned features have been implemented in the app. But the app has great scope for addition of new features. Some improvements have also been suggested, thanks to the active MacPorts community.
Higher priority:
-
Livecheck
-
Enhanced searching: more filters and ranked search results
-
Reliable submission of stats: try again if the command does not run within the week or fails
-
Include port versions in build history