I'm replying to my post again even though it isn't the latest. At the end I address what I think is a misconception that I saw in those more recent posts.
> We want these beads, even high level beads, to be re-usable in multiple > components sets. Key word here is *optional* not *mandatory*. Take this in mind, since while I have the option to use it or not, I even should have the option to link it or not, since there's no obligation or requeriment to use. Everything is currently optional the way we have it, but the principle of code re-use is primary. Copying code to avoid a project dependency is not a recommended practice. > There may be a SuperJewel someday or variants on Jewel with completely > different names that borrow beads from Jewel under the principle of > re-using code. That will requiere that SuperJewel links Jewel to use it, as well Express need to link Basic. CreateJS does need to link Jewel, that will be pointless. > The Emulation set will probably use Jewel views. Hope so, so MXRoyale will link Jewel since it needs, while Basic not since it never will use it. The Emulation set will use Basic beads for models and controllers and lots of other things, if the simple implementations suffice. > Our users have asked for our component sets to require little > configuration, so Jewel should re-use Express beads. > Can give an example of a reusable Express bead in Jewel. FWIK Express is an aggregation of Basic UI Set, so it makes less need of configuration in final code, so a Button can integrate Disabled bead. Don't have in mind a reusable case of Express in Jewel, since Jewel doesn't use Basic at all. I mentioned this before. The DataGridModel in Express is type-agnostic (dataProvider is Object) whereas in Basic is assumes the dataProvider is an Array. And you can configure the Basic one to use different dataProviders of different types. That's on purpose, for PAYG (no extra code to handle different types) and to help folks ensure type-safety. But our users want less configuration so you can pass "anything" into Express DataGrid's dataProvider, just like Flex. > > I think you are making the argument for doubling the number of SWCs so > that beads go in a SWC and TLCs that use those beads go in a separate SWC. Doubling no, jut one: Foundation - Basic. The rest is up to discussion, but since are not required right now (are already not linked or mandatory) like MDL, CreateJS, and more, I'm fine with it. I recommend in the future refactor as well, but that should be made by volunteers if they want I think that's inconsistent. If you agree above that some other component set can re-use Jewel Views, then you will need to break Jewel beads out into a separate SWC as well according to your arguments. And that will double the number of SWCs. Instead, I think we have ways to use the current organization to address your concerns about extra CSS processing. > There isn't an Apache Commons analogy for that since JARs are dynamically > linked. But in statically-linked libraries like C/C++ on Windows, the > compiler does visit entire libraries and only links in what is needed. > But links all existing available libraries? when you program in C++ you link what you need. So in Royale there's no point to link a Basic UI Set (TLCs and CSS) if I'm going to not use it, but use another one. The user is in complete control over the number of SWCs that get read in, even for Ant, IDEs and command-line users. The compiler only reads in the SWCs it is told to read in. The default royale-config.xml currently uses a wildcard. Will it always? Maybe not if we someday have enough SWCs that reading them all in becomes a problem. If you specify the exact set of SWCs that you would in a Maven pom, you will enjoy the same benefits of the compiler only reading those SWCs, if any. It is simply a trade-off of configuration effort vs compile-time. Also having more SWCs get loaded should mean more options offered in code-hinting which is, IMO a good thing for now, but probably not in the future. So, don't be worried about how many SWCs get read in. Users can control that. I am going to try to move the exclude-defaults-css to the loading phase instead of the output phase. I think once I finish that and Harbs finishes removing class selectors we can see if there are any remaining issues or concerns with the current set of libraries. HTH, -Alex