[forge-dev] JBoss Stacks: Requirements

James Perkins jperkins at redhat.com
Tue Jul 3 11:14:11 EDT 2012

The main idea behind the supportVersions (probably a bad name) was 
something like:

availableVersions: 7.0.0.Final, 7.0.1.Final, 7.0.2.Final, 7.1.0.Final, 
supportedVersions: 7.1.0.Final, 7.1.1.Final

Just meaning all available version should work, but everything is only 
guaranteed to work with the supportedVersions. Maybe a Beta or CR could 
be in available, but not fully supported as well. Just a thought that 
really isn't a big deal.

What I think would be ideal if it's possible would be to have a 
properties section with name value pairs. Then things like the 
-logmodule or -someOtherArgument could be used for anything.

I would think the AS downloads would always be a zip as well. If other 
consumers have no use for a packaging type it can be left off. Really if 
we can have a properties section it could be used in there if needed.

On 07/03/2012 05:22 AM, Pete Muir wrote:
> On 3 Jul 2012, at 00:23, James Perkins wrote:
>> On 07/02/2012 03:33 PM, Pete Muir wrote:
>>> All,
>>> I chatted with Max at JBoss World about requirements for what I'm code-naming JBoss Stacks, which is a really an extension of the JBoss BOMs project.
>>> The JBoss Stacks project takes all the BOMs, all the archetypes, and all the runtimes, and identifies which work with which. This can then be used by tools (like JBDS, Forge, Maven plugins) to correctly configure users projects.
>>> The stacks project requires 3 different dictionaries:
>>> * available BOMs
>>> * available archetypes
>>> * available runtimes
>>> and the ability to see the intersection between these things (i.e. if I'm on runtime version 1.2.3.Final, what BOMs are possible, what BOM is recommended, what archetypes are available, what is recommended).
>>> The runtime should include a download URL, so that plugins such as James' AS plugin for forge can download it. It should also contain a some options. I'm not sure exactly what is needed here, but James can provide details and what makes most sense.
>> So far the only information I would need is the version number, the current version (both seem to be taken care of so far) and whether or not the version of AS requires the -logmodule argument for JBoss Modules. Really since that's kind of a special use case it could just be hard-coded into the plugin code, but having some kind of metadata for something like that would be ideal IMO.
> So, should we have:
> arguments: [ -logmodule, -someOtherArgument]
> or
> logmodule-argument: required
> I think the former makes more sense.
>>> The runtimes should include what type they are (e.g. JBoss AS, EAP) to allow categorisation, filtering, sorting
>>> The Yaml parser in use should be pluggable, to avoid introducing uncessary extra dependencies
>>> There should be a recommended runtime per major version and per minor version (so you can say "I want JBoss AS 7" and you get back AS 7.1.1.Final or you can say "I want JBoss AS 7.0" and you get back 7.0.2.Final).
>>> We're going to need to be careful about compat, eventually, so we need to get everything in there, and get it right. We'll have a long beta cycle ;-)
>>> There will be a client utility, written in Java. This should be a single source file, which projects can copy in. It must have no dependencies other than a Yaml parser.
>>> I think Rafael is going to take the lead on this. But we'll decide on Monday next week.
>>> Pete
>> Overall I think this is a great idea. It will be great not to have to hard-code versions and do a new release every time something new comes out.
>> One suggestion for the YAML;
> So far, what we have doesn't cover all the requirements I wrote here.
>> I see there is a availableVersions, which is great, but I also think a supportedVersions could be useful.
>> For example in the Forge plugin there is an option to execute CLI commands. That CLI API wasn't available until 7.1.1 IIRC. It *should* work for 7.0.x, but some operations that are available 7.1.1 might not be available in 7.0.x.
> I'm not sure what this means. What would be "supported"? We could have a:
> supported: [cli, full-profile]
> for each version to indicate capabilities.
> Possibly we just generalise that, and your logmodule thing, to
> labels: [cli, logmodule]
> and use "labels" as a place to put extended metadata that some tools want to use.
>> Also the packaging type could be useful too. Again with the AS 7 plugin it's downloading a ZIP file and extracting the directory structure.
> I think I was assuming it would always be a zip... But we can add this.

James R. Perkins
JBoss by Red Hat

More information about the forge-dev mailing list