Add-on manager for management of downloadable extras
An Add-on manager something along the lines of that in Firefox, for downloading, installing, updating and removing extras: specifically landscapes, scripts, sky cultures, star catalogs, nebula sets.
Blueprint information
- Status:
- Started
- Approver:
- Marcos Cardinot
- Priority:
- Low
- Drafter:
- Matthew Gates
- Direction:
- Needs approval
- Assignee:
- Marcos Cardinot
- Definition:
- Approved
- Series goal:
- Accepted for 1.x
- Implementation:
-
Good progress
- Milestone target:
-
1.0.0
- Started by
- Marcos Cardinot
- Completed by
Whiteboard
This blueprint described an evolution of some features we already have in the program, and their extension into a more fully featured add-on manager tool.
As of 0.10.6 we have some parts implemented:
+ landscape installer feature added by Bogdan.
- Now we have the unzip function (thanks to KDE code).
- Uninstalls as well
+ star catalog downloader
+ ssystem.ini editor
Components we need to make an add-on manager:
+ new main dialog
- one tab per add-on type
+ centralized download manager
+ add-on class hierarchy with a sub-class for each add-on type.
- base class should have pure virtuals for:
- getting a list of available add-ons for this type
- downloading an add-by ID
- installing an add-on by ID
- checking for updates of an add-on by ID
- updating an add-on by ID
- removing an add-on by ID
- getting descriptive details about the add-on
- getting installed size of add-on.
- sub-classes for:
- landscapes
- scripts
- sky cultures
- star catalogs
- nebula sets
- ssystem.ini files
- full sky surveys
- plugins
Some add-ons may be mutually exclusive (e.g. alternative startup scripts). Where this is the case there should be a switching mechanism to select one of several alternatives.
Add-ons should be listed in a JSON file on data.stellarium.org or similar.
JSON format like this:
{
"type": "Stellarium Add-Ons List",
"format-version": "1.0.0",
"add-ons": [
{ <add-on-details> },
{ <add-on-details> }
]
}
Where <add-on-details> looks something like this:
{
"type": "landscape",
"install-base": "{DATAROOT}
"name": "Beaumont Hills",
"short": "Short description of landscape",
"screenshot-url": "http://
"version": "1.0",
"authors": [
{<author-
{<author-
]
"license": "GPLv2",
"license-url": "http://
"downloads": [
{<download-
{<download-
]
}
Where <author-details> would look something like this:
{
"author-name": "Barry Gerdes",
"author-contact": "some free text, probably email",
"author-url": "http://
}
Where <download-details> would look something like this:
{
"url": "http://
"type": "zip",
"download-size": "3.7M",
"installed-size": "3.8M",
"checksum": "22db6a46fe4a31
"checked": true
}
Add-on feature would maintain a list of one or more URLs of these JSON package lists.
Work Items
Dependency tree

* Blueprints in grey have been implemented.