> On Sep 21, 2017, at 9:18 AM, Seth Hall <s...@corelight.com> wrote: > > There is just something about the idea of exposing variable names to > users (even if it's wrapped in a gui) that is intensely unpalatable to > me. It's pretty much unheard of among other types of software. It > would be like exposing internal variable names to command line programs > instead of abstracting it into easy flags (i.e. -a or --help)
I guess I was just thinking from my perspective, every script I would write would just have module Foo; export { ## Set the threshold in bytes. const threshold = 1234 &config="foo.threshold"; } And I would just be repeating the namespace + variable name for each option with no added value. It would just become unnecessary repetition and a source of errors: const one = 1234 &config="foo.one; const two = 1234 &config="foo.tow"; #oops const three = 1234 &config="foo.tow"; #oops! I say this as someone that will absolutely screw this up :-) Maybe the design should support renaming variables for the configuration, but programmers should be strongly discouraged from renaming things unless they have a good reason from deviating from the automatic namespace + variable > > or, if in > a gui a text entry box had a label next to it like > "GUI::My_Program::user_name" instead of showing "Username". I'm not sure how exposing something like "input.pcap.filter" is any different from exposing something like "Pcap::filter" from that standpoint. Maybe there's a larger discussion here around what the user experience should look like? I feel like two different things are being talked about now. Directly using variable names in UI elements is not unheard of though, a lot of UI frameworks will do things like present a variable like user_name as "User Name" in the UI. This is usually a simple text transform like >>> s='My_Program::user_name' >>> s.replace("::", " - ").replace("_", " ").title() 'My Program - User Name' This way you don't end up with code that looks something like Args { user_name .. display as "User Name" age .. display as "Age" favorite_color .. display as "Favorite Color" favorite_food .. display as "Favorite Food" pin .. display as "PIN" } Instead you only need to override the display when you have a good reason to deviate from the standard underscore to space and Title Case transform: Args { user_name age favorite_color favorite_food pin .. display as "PIN" } Having a bro configuration tool display something like the current SSH::password_guesses_limit as SSH Password Guesses Limit The number of failed SSH connections before a host is designated as guessing passwords. Type: count Current Value: 30 Or Site::darknet_mode as Site Darknet Mode I just realized I didn't document the variable name itself :-) Type: DarknetMode enum Current Value: DARKNET Choices: DARKNET: Only hosts defined in darknet_address_space are dark NOT_ALLOCATED: Only hosts NOT listed in used_address_space are dark DARKNET_OR_NOT_ALLOCATED: Only hosts defined in darknet_address_space OR NOT listed in used_address_space are dar... DARKNET_AND_NOT_ALLOCATED: Only hosts both defined in darknet_address_space AND NOT listed in used_address... wouldn't be crazy, and such a tool seems like it would be pretty user friendly to me. — Justin Azoff _______________________________________________ bro-dev mailing list bro-dev@bro.org http://mailman.icsi.berkeley.edu/mailman/listinfo/bro-dev