alcatraz / Alcatraz

Package manager for Xcode
alcatraz.io
MIT License
9.88k stars 1.15k forks source link

Alcatraz package specification needs significant update #435

Open OdNairy opened 8 years ago

OdNairy commented 8 years ago

Hi there. I'm opening this thread to collect all discussions about new versions of package specification.

What we have today

Field Attributes Required Uniqueness
name String
description String
url String
screenshot String

Bunch of threads requesting new features (unavailable on current specification version):#431, #422, #397, #260, #167

OdNairy commented 8 years ago

Proposion _#_1

Sceme

Field Attributes Required Uniqueness
name String
package_url String
version String
release_date Date
description String
author String
xcode_versions Array of String
dependencies Array Of String
screenshots Array of String
videos Array of String
website String
social Array of String

What exactly we going to add/change and why?

[C] - Changed [A] - Added

  1. [C] Rename url to package_url to avoid misunderstanding with other url's.
  2. [C] Make description as a required field to provide brief story what this plugin do
  3. [C] Rename screenshot into screenshots to have a way to provide multiple images for different states of plugin, some marketing thumbnails, etc. Git should be supported here.
  4. [A] version field. The plugin version. Should be String to support Semantic Versioning. The latest specification hold last version number only.
  5. [A] xcode_versions field. Xcode private api changes sometimes so basic adding new UUIDs to plugins will can lead us to crash. Instead of this we should provide range of supporting xcode's.
  6. [A] dependencies field. #431. Nowadays there are some plugins depending on PluginPanel plugin but it's not the worst idea to write some plugins as frameworks to collect whole UI in the same location. For example it would be nice to have plugin which one collecting all Plugin Settings in one screen instead of chaos of MenuItems.
  7. [A] videos field. The same as for screenshots but for videos.
  8. [A] website field. Link to plugin brandpage.
  9. [A] social field. Collection of links to twitter/facebook/etc.
  10. [A] author field. Hold the latest author information.
  11. [A] release_date field. Can be populated automatically on new version push.

Issues

P.S. @jurre and @supermarin review proposal, please.

orta commented 8 years ago

[A] version field. The plugin version. Should be String to support Semantic Versioning. The latest specification hold last version number only.

I'm not sure this one is too relevant, currently Alcatraz auto-updates plugins, and it's likely that the SemVer in the specs would end up out of date pretty quickly

orta commented 8 years ago

I guess the same is true for xcode_versions - unless you want to have this information filled in automatically by having an alcatraz daily runner updating all the JSON by cloning each repo and getting the Info.plist