Date
1 - 14 of 14
user-facing features recommendations
Luis Gomez
Dear TSC,
Yesterday call and this conversation with ofplugin project today remind me this release we should define and make some recommendations to projects on how to define their “user-facing” features. Do you agree? if so any volunteers to start working on this? BR/Luis
|
|
Colin Dixon
We do really need to have a list of user-facing features (if any) from each project. I can add that to part of features definition in the main release plan if everyone agrees that makes sense. We need this designation to inform what kinds of user documentation projects should generate and also to inform the installation guide as well as any automated installer/downloader/configurator we want to provide. My gut reaction is that we just want a list of these features (possibly with options, e.g., to say that l2switch-switch, l2switch-switch-rest, and l2switch-switch-ui are "the same" feature with different options) from projects in a human-readable format and if we develop a machine parseable version with tooling, we can encourage projects to use it. On Fri, Nov 7, 2014 at 12:03 PM, Luis Gomez <ecelgp@...> wrote:
|
|
Luis Gomez
Hi Colin, My point is user-facing features are key yes but their definition is not as simple as it seems, it can be done in very many different ways (see the discussion with ofplugin project I sent earlier) and we do not want to end up with a totally disparate set of user-facing features coming from the different projects (at least I would not like). BR/Luis
|
|
Colin Dixon
The documentation requirements for Lithium [0] try to take a stab at this when they say: "Intimately related features, e.g., l2switch-switch, l2switch-switch-rest, and l2switch-switch-ui, can be documented as one noting the differences" In the example you have, I'd imagine that covers pretty much everything if you explain which exact feature to install when and then document them together as one logical entity (which they are). Does that make sense? Cheers, --Colin On Fri, Nov 7, 2014 at 3:31 PM, Luis Gomez <ecelgp@...> wrote:
|
|
Mathieu Lemay <mlemay@...>
Yes that is what blocked me on download page... On Nov 7, 2014 4:31 PM, "Luis Gomez" <ecelgp@...> wrote:
|
|
Luis Gomez
OK, I think I am not explaining myself clear. The problem is not documenting an already defined feature, the problem is to come up with a standard model for projects to identify user-facing features. Do we have already a wiki where we explain what a user-facing feature is and how to identify them with some examples? this is what i am really looking for... BR/Luis
|
|
Colin Dixon
So, are you asking: OR1.) how projects can tell the TSC (and the rest of the world) which of their features are user-facing once they know internally which features they want to be user facing? If it's 1, I'd just do it as part of the M3 readout. If it's 2, that's more complicated and really involves asking the question "would a user—not a developer—want to enable and disable this feature?" On Fri, Nov 7, 2014 at 3:48 PM, Luis Gomez <ecelgp@...> wrote:
|
|
Abhijit Kumbhare
I think what Luis is asking (or what I think he is asking) makes sense. He wants an intuitive naming convention for the features which is followed by all the projects - so that the users can quickly identify what feature set they should use (base feature set, base feature set with REST, base feature set with REST + UI, etc.). On Fri, Nov 7, 2014 at 3:05 PM, Colin Dixon <colin@...> wrote:
|
|
Colin Dixon
If that's the question, I would say that the naming convention that openflowplugin and l2switch used was good. We could suggest (or maybe even require it) in Lithium: 1.) <project>-<functionality-name> for the base feature2.) <project>-<functionality-name>-rest for the base feature with RESTCONF and any other parts needed to make RESTCONF work for the base feature 3.) <project>-<functionality-name>-ui for the base feature with RESTCONF, DLUX, and any other parts needed to make RESTCONF and DLUX work for the base feature Ideally, we'd have 1 be a subset of 2 and 2 be a subset of 3. For other options, e.g., the table miss enforcer, I'd ask if they should really be features or options configured via config files, but I'd be open to having that discussion. Keep in mind, the goal is to hit the 90/10 where we provide the ~10% of ways to load features/bundles that will work for 90% of what users want to do. Advanced users can dig in deeper and install exactly the bundles features they want. If this makes sense, to people we could add them as guidelines in the Karaf Step by Step Guide or even put them as suggestions or requirements in the release plan itself. On Fri, Nov 7, 2014 at 5:33 PM, Abhijit Kumbhare <abhijitkoss@...> wrote:
|
|
Abhijit Kumbhare
I agree - but probably better to just keep it in the Karaf step-by-step rather than the requirements in the release plan. On Fri, Nov 7, 2014 at 3:48 PM, Colin Dixon <colin@...> wrote:
|
|
Colin Dixon
It turns out most of the real documentation was in the karaf features archetype, so I pushed this patch instead of editing the Karaf step-by-step guide: https://git.opendaylight.org/gerrit/12656 I'll probably also edit the karaf step-by-step guide to put a note there. On Fri, Nov 7, 2014 at 6:02 PM, Abhijit Kumbhare <abhijitkoss@...> wrote:
|
|
Luis Gomez
Thanks Abhijit, and sorry if I created confusion when I said "define user-facing features" instead of “create karaf user-facing features”. My take here is: In general we should let projects define as many features as they want in their repos, but when it comes to "user-facing" features we should recommend a way to create them and probably mandate how to name them. It is clear to me every project will generate at least 1 base or essential-functionality made of other small features that most users (90/10) will consume via java, REST or GUI so it seems logical to define: <project>-<essential-functionality> -> for developers <project>-<essential-functionality>-rest -> for developers/users <project>-<essential-functionality>-ui -> for users Besides that: 1) A project can provide additional essential-functionalities as long as they do not depend on each other, i.e. they are totally independent, then we can treat them the same way: <project>-<essential-functionality-2> -> for developers <project>-<essential-functionality-2>-rest -> for developers/users <project>-<essential-functionality-2>-ui -> for users 2) A project can also have functionality on top of the essential and this is where I have more questions: - We can say all functionality over the essential has to be packed within <project>-<essential-functionality> and enabled via configuration or - We can be more user friendly and allow individual karaf features for that: <project>-<essential-functionality>-<extra-functionality-1> <project>-<essential-functionality>-<extra-functionality-2> Note that in this case I would not recommend to have -rest -ui in addition but more if a user wants to have both REST and extra functionalities enable: <project>-<essential-functionality>-rest <project>-<essential-functionality>-<extra-functionality-1> <project>-<essential-functionality>-<extra-functionality-2> for example: odl-openflow-flow-services-rest odl-openflow-flow-services-tme <- table miss enforcer odl-openflow-flow-services-nx <- nx extensions Also if we allow definition of karaf features for extra functionality, I would not ask projects to document them as separate user-facing features but as extensions (same template) of the essential user-facing feature. Thoughts?
|
|
Colin Dixon
In general, I think this is right. A few comments inline. --ColinOn Fri, Nov 7, 2014 at 7:51 PM, Luis Gomez <ecelgp@...> wrote:
The yangtools, openflowjava, and odlparent projects come to mind as projects that wouldn't have an user-facing features.
+1 to this. I wouldn't say they need to be totally independent, but if they are logically separate, it makes a lot of sense. I think the guideline of asking "would a non-developer network operator want to turn this functionality on and off independently of other functionality?" will result in projects making the right choice. Also, the release plan requires a separate user guide chapter/section per user-facing feature (or intimately related group), which should help projects to think through if it's appropriate or not.
I think this would be fine if projects feel like these extra functionaries are things users would really like to turn on and off regularly and there's not a good default, so a significant fraction of users will want it on and a significant fraction will want it off. Otherwise, I'd encourage it being listed in the developer guide either as a non-user-facing feature or as a configuration option. That's just my thought.
|
|
Luis Gomez
I agree on all comments (see below). What would be the best way to post this information? new wiki, existing wiki, feature archetype? BR/Luis
You are right, I forgot about these projects ;)
Agree
Yes, it seems reasonable
|
|