[Freeipa-devel] [PATCH] Add more sophisticated help interface. Split commands into 'topics'.

David O'Brien davido at redhat.com
Mon Apr 20 22:21:40 UTC 2009


Jason Gerard DeRose wrote:
> On Fri, 2009-04-17 at 10:46 +1000, David O'Brien wrote:
>   
>> Pavel Zuna wrote:
>>     
>>> Rob Crittenden wrote:
>>>       
>>>> Pavel Zuna wrote:
>>>>         
>>>>> This is more of a suggestion than a real patch. I thought it might 
>>>>> be easier to actually show what I had in mind than explaining it. 
>>>>> Sometimes code is more than words. :)
>>>>>
>>>>> Pavel
>>>>>           
>>>> I think this is a good start. The output looks like:
>>>>
>>>> $ ipa
>>>> Usage: ipa [global-options] COMMAND ...
>>>>
>>>> Use `ipa help TOPIC` for command listings.
>>>>
>>>> Topics:
>>>>   general      General IPA management.
>>>>   aci          ACI object.
>>>>   application  Application object
>>>>   automount    Automount object.
>>>>   delegation   Delegation object.
>>>>   group        group object.
>>>>   host         Host object.
>>>>   hostgroup    hostgroup object.
>>>>   netgroup     netgroup object.
>>>>   rolegroup    rolegroup object.
>>>>   service      Service object.
>>>>   taskgroup    taskgroup object.
>>>>   user         User object.
>>>>
>>>> Try `ipa --help` for a list of global options.
>>>>
>>>> It looks like you dumped things that aren't related to a top-level 
>>>> class into general (things like passwd, the cert commands, and a few 
>>>> others). I guess they have to go somewhere, just not sure I'd know to 
>>>> look in general if I was a new user.
>>>>
>>>> Should we mandate an Object for every plugin? Or include the list of 
>>>> these general commands in the main topics list? That might be 
>>>> confusing too because that would mean that 'env' is on the same level 
>>>> as 'user'.
>>>>
>>>> Any suggestions?
>>>>
>>>> The patch is good and we could easily just apply this but I don't 
>>>> want to forget about these issues. In any case we'll want to go into 
>>>> each plugin and set the Object documentation to be more descriptive.
>>>>
>>>> rob
>>>>         
>>> I wrote another version of the help interface today taking into 
>>> consideration the issues you mentioned. It's based on plugins this 
>>> time instead of objects.
>>>
>>> The output looks like this:
>>>
>>> $ ipa
>>> Usage: ipa [global-options] COMMAND ...
>>>
>>> Built-in commands:
>>>   console         Start the IPA interactive Python console.
>>>   help            Display help for a command or topic.
>>>
>>> Help topics:
>>>   aci             Frontend plugins for managing DS ACIs
>>>   application     Frontend plugins for application policy containers.
>>>   automount       Frontend plugins for automount.
>>>   defaultoptions  Frontend plugin for default options in IPA.
>>>   delegation      Frontend plugins for delegations.
>>>   dns             Frontend plugin for DNS management.
>>>   group           Frontend plugins for groups.
>>>   hbac            Frontend plugin for HBAC management.
>>>   host            Frontend plugins for host/machine Identity.
>>>   hostgroup       Frontend plugins for hostgroups.
>>>   join            Machine join
>>>   misc            Misc frontend plugins.
>>>   netgroup        Frontend plugins for netgroups.
>>>   passwd          Frontend plugins for password changes.
>>>   pwpolicy        Frontend plugins for password policy.
>>>   rolegroup       Frontend plugins for rolegroups.
>>>   service         Frontend plugins for service (Identity).
>>>   taskgroup       Frontend plugins for taskgroups.
>>>   user            Frontend plugins for user (Identity).
>>>
>>> Try `ipa --help` for a list of global options.
>>>       
>
> I think these docstrings should not include the phrase "frontend
> plugins".  I think changing them to read something like this would be
> better:
>
> aci          Commands to manage accesses control ACIs.
> application  Commands to manage application policy containers.
> automount    Commands to manage automount maps.
>
> Or something like that, perhaps even more concise.
>
>   
>>> Commands not originating from plugins are listed as built-ins. The 
>>> short description for topics is taken from the first line of the 
>>> module's docstring.
>>>
>>> The code itself is a bit hacky, because I just couldn't find any 
>>> better way to get every plugin module, it's docstring a list of 
>>> commands it implements. I'll rewrite it if necessary.
>>>
>>> Pavel
>>> ------------------------------------------------------------------------
>>>
>>> _______________________________________________
>>> Freeipa-devel mailing list
>>> Freeipa-devel at redhat.com
>>> https://www.redhat.com/mailman/listinfo/freeipa-devel
>>>       
>> How much work is involved in editing the first line of a module's 
>> docstring? Is it developer-only territory or straight-forward enough 
>> that I could do it?
>>     
>
> It's strait-forward.
>
>   
>> I ask because I'm interested in keeping everything related to doc, help, 
>> etc., on an even keel and consistent, which in this case means:
>> s/plugin/plug-in
>> s/backend/back-end
>> s/frontend/front-end
>>     
>
> As mentioned, in this case I we should use more concise docstrings
> instead.  I think it's a great idea to have the CLI help and the
> documentation be consistent where possible, but the help docstrings have
> very space constrained because ideally the should be short enough as to
> not wrap on a 80 character wide terminal.
>
>   
OK, I'm happy to go either way, providing suggestions like I am here, or 
being more actively involved, editing directly and providing patches. 
What's the process?


>> I would also review the use of terms like "host/machine", because in IPA 
>> 2.0 "host" refers to the host object specifically created to represent 
>> the host *machine*, and which exists as a new object in DS. "Machine", 
>> on the other hand, refers to the computer itself. (This gets trickier 
>> when we start talking about the "host" where a virtual machine is 
>> running.) Hopefully my understanding of host objects and machines is 
>> correct here.
>>
>> So, in the case of "host : Frontend plugins for host/machine Identity." 
>> I'd suggest a change to "host : Front-end plug-ins for machine identity."
>>
>> 1. front-end (as per style guide)
>> 2. plug-ins (as per style guide)
>> 3. machine (we're identifying the machine, and using the host object to 
>> do it)
>> 4. identity (lower case)
>>
>> regards,
>>
>>     
>
>   


-- 

David O'Brien
IPA Content Author
Red Hat Asia Pacific
+61 7 3514 8189

"The most valuable of all talents is that of never using two words when
one will do."
    Thomas Jefferson 




More information about the Freeipa-devel mailing list