Guidelines for Plugin Creation
Line 2: | Line 2: | ||
UBot Studio as it stands is the most powerful web automation tool on the internet. With the power that can be added to it through plugins, it’s power is only limited by the creativity of its contributors. A UBot Studio plugin is a class library (a .dll) that expands the functionality of UBot Studio, usually by adding commands and functions. | UBot Studio as it stands is the most powerful web automation tool on the internet. With the power that can be added to it through plugins, it’s power is only limited by the creativity of its contributors. A UBot Studio plugin is a class library (a .dll) that expands the functionality of UBot Studio, usually by adding commands and functions. | ||
UBot Studio plugins are written C#, or alternatively, vb.net. If you do not yet know either of these languages, you can learn C# [http://channel9.msdn.com/Series/C-Sharp-Fundamentals-Development-for-Absolute-Beginners Here]. If you are already comfortable with C#, then you are ready to start creating plugins: [[Plugin Development]]. | UBot Studio plugins are written C#, or alternatively, vb.net. If you do not yet know either of these languages, you can learn C# [http://channel9.msdn.com/Series/C-Sharp-Fundamentals-Development-for-Absolute-Beginners Here]. If you are already comfortable with C#, then you are ready to start creating plugins: [[Plugin Development]]. | ||
+ | |||
+ | |||
By adding functionality, you have increased the potential power of UBot Studio. Chances are good that if your plugin is of good quality, other people will benefit from it as well. By contributing to the UBot Union, UBot’s open source initiative, you will receive status, admiration, and respect from the larger community of UBot users and creators. You maybe also be eligible for various perks provided either by the community, or the UBot team. | By adding functionality, you have increased the potential power of UBot Studio. Chances are good that if your plugin is of good quality, other people will benefit from it as well. By contributing to the UBot Union, UBot’s open source initiative, you will receive status, admiration, and respect from the larger community of UBot users and creators. You maybe also be eligible for various perks provided either by the community, or the UBot team. | ||
+ | |||
While we strongly encourage participation in the UBot Union, we do also allow for the sale of plugins as well. If a plugin is particularly appealing, the UBot team may make an offer to buy the plugin outright, to then offer for free to the community. Otherwise, you may purchase a license to sell your plugin to the community. | While we strongly encourage participation in the UBot Union, we do also allow for the sale of plugins as well. If a plugin is particularly appealing, the UBot team may make an offer to buy the plugin outright, to then offer for free to the community. Otherwise, you may purchase a license to sell your plugin to the community. | ||
− | When you create a UBot Studio plugin, at first, installing it in UBot Studio will result in a nag screen every time you use it. To get rid of the nag, you must get a plugin key. Plugin keys exist to help us control the quality of plugins that are created for UBot Studio | + | When you create a UBot Studio plugin, at first, installing it in UBot Studio will result in a nag screen every time you use it. To get rid of the nag, you must get a plugin key. Plugin keys exist to help us control the quality of plugins that are created for UBot Studio. |
+ | If you plan to contribute to the UBot Union, plugin keys are free. Simply contact [http://www.support.ubotstudio.com Support] with your plugin idea and they will guide you on how to create it. If you plan to create a commercial plugin, contact [http://www.support.ubotstudio.com Support] with your plugin idea and they will either make an offer to buy your plugin, or give you the price of the development key for your project. | ||
+ | |||
+ | |||
+ | |||
+ | == Plugin Quality Standards == | ||
− | |||
It is very important that uScript commands and function maintain a very high level of quality, and this is a standard that must extend to plugin commands and functions as well. Plugin developers should have a solid understanding of c# and object oriented programming [http://www.lynda.com/Programming-tutorials/Foundations-of-Programming-Object-Oriented-Design/96949-2.html]. An understand or software usability [http://msdn.microsoft.com/en-us/library/ms997577.aspx] is also important. | It is very important that uScript commands and function maintain a very high level of quality, and this is a standard that must extend to plugin commands and functions as well. Plugin developers should have a solid understanding of c# and object oriented programming [http://www.lynda.com/Programming-tutorials/Foundations-of-Programming-Object-Oriented-Design/96949-2.html]. An understand or software usability [http://msdn.microsoft.com/en-us/library/ms997577.aspx] is also important. | ||
Before starting on a new open source plugin, check to see if your idea already exists in some form . If it does, you may contribute to the existing plugin to increase its code quality, or perhaps add new features to it. If no similar plugins exist, you are free to create your own. | Before starting on a new open source plugin, check to see if your idea already exists in some form . If it does, you may contribute to the existing plugin to increase its code quality, or perhaps add new features to it. If no similar plugins exist, you are free to create your own. | ||
+ | |||
Commands and functions should be given names that are as short as possible, but descriptive of the command in a way that lets the user understand what it does without further documentation. I’ll note that this is often easier said than done, and can require very deliberate thought, and possibly the mental contribution of colleagues as well. Taking your time on this pays off. The name “sort” is less effective than “sort table”, but the name “sort table rows and columns” is probably unnecessary, as the “rows and columns” part is probably inferred by the end user. | Commands and functions should be given names that are as short as possible, but descriptive of the command in a way that lets the user understand what it does without further documentation. I’ll note that this is often easier said than done, and can require very deliberate thought, and possibly the mental contribution of colleagues as well. Taking your time on this pays off. The name “sort” is less effective than “sort table”, but the name “sort table rows and columns” is probably unnecessary, as the “rows and columns” part is probably inferred by the end user. | ||
+ | |||
+ | |||
Parameters should be named with the same rigor as the command and function names themselves. Parameters are generally one or two words, but if more explanation is needed, 3, 4, or 5 words can be used. | Parameters should be named with the same rigor as the command and function names themselves. Parameters are generally one or two words, but if more explanation is needed, 3, 4, or 5 words can be used. | ||
As a matter of convention, all commands and functions should be named in all lower case. Parameters should be labeled in title case (with the first letter of each word capitalized). | As a matter of convention, all commands and functions should be named in all lower case. Parameters should be labeled in title case (with the first letter of each word capitalized). | ||
+ | |||
+ | |||
Plugins should strive to get the most done with the fewest number of commands/functions, but commands/functions should try to strive for the fewest number of parameters. Commands/functions should also clearly accomplish one goal or concept. For example if you wanted to create a plugin to play various system sounds, it would be unwieldy to have a command for each, such as “play beep sound”, “play asterisk sound”, “play hand sound”. It is better to create a single command called “play system sound” that uses a drop down box as a parameter to choose which sound you wish to play. It would, however, be confusing to use the same command to also play sounds based on wave files. Instead, create another command with a single “File” parameter. You might be tempted to name the second command “play custom sound” to juxtapose it from the other command, but simply naming it “play sound” is probably a better name. | Plugins should strive to get the most done with the fewest number of commands/functions, but commands/functions should try to strive for the fewest number of parameters. Commands/functions should also clearly accomplish one goal or concept. For example if you wanted to create a plugin to play various system sounds, it would be unwieldy to have a command for each, such as “play beep sound”, “play asterisk sound”, “play hand sound”. It is better to create a single command called “play system sound” that uses a drop down box as a parameter to choose which sound you wish to play. It would, however, be confusing to use the same command to also play sounds based on wave files. Instead, create another command with a single “File” parameter. You might be tempted to name the second command “play custom sound” to juxtapose it from the other command, but simply naming it “play sound” is probably a better name. |
Revision as of 00:33, 6 March 2013
Guidelines for Plugin Creation UBot Studio as it stands is the most powerful web automation tool on the internet. With the power that can be added to it through plugins, it’s power is only limited by the creativity of its contributors. A UBot Studio plugin is a class library (a .dll) that expands the functionality of UBot Studio, usually by adding commands and functions. UBot Studio plugins are written C#, or alternatively, vb.net. If you do not yet know either of these languages, you can learn C# Here. If you are already comfortable with C#, then you are ready to start creating plugins: Plugin Development.
By adding functionality, you have increased the potential power of UBot Studio. Chances are good that if your plugin is of good quality, other people will benefit from it as well. By contributing to the UBot Union, UBot’s open source initiative, you will receive status, admiration, and respect from the larger community of UBot users and creators. You maybe also be eligible for various perks provided either by the community, or the UBot team.
While we strongly encourage participation in the UBot Union, we do also allow for the sale of plugins as well. If a plugin is particularly appealing, the UBot team may make an offer to buy the plugin outright, to then offer for free to the community. Otherwise, you may purchase a license to sell your plugin to the community. When you create a UBot Studio plugin, at first, installing it in UBot Studio will result in a nag screen every time you use it. To get rid of the nag, you must get a plugin key. Plugin keys exist to help us control the quality of plugins that are created for UBot Studio.
If you plan to contribute to the UBot Union, plugin keys are free. Simply contact Support with your plugin idea and they will guide you on how to create it. If you plan to create a commercial plugin, contact Support with your plugin idea and they will either make an offer to buy your plugin, or give you the price of the development key for your project.
Plugin Quality Standards
It is very important that uScript commands and function maintain a very high level of quality, and this is a standard that must extend to plugin commands and functions as well. Plugin developers should have a solid understanding of c# and object oriented programming [1]. An understand or software usability [2] is also important. Before starting on a new open source plugin, check to see if your idea already exists in some form . If it does, you may contribute to the existing plugin to increase its code quality, or perhaps add new features to it. If no similar plugins exist, you are free to create your own.
Commands and functions should be given names that are as short as possible, but descriptive of the command in a way that lets the user understand what it does without further documentation. I’ll note that this is often easier said than done, and can require very deliberate thought, and possibly the mental contribution of colleagues as well. Taking your time on this pays off. The name “sort” is less effective than “sort table”, but the name “sort table rows and columns” is probably unnecessary, as the “rows and columns” part is probably inferred by the end user.
Parameters should be named with the same rigor as the command and function names themselves. Parameters are generally one or two words, but if more explanation is needed, 3, 4, or 5 words can be used.
As a matter of convention, all commands and functions should be named in all lower case. Parameters should be labeled in title case (with the first letter of each word capitalized).
Plugins should strive to get the most done with the fewest number of commands/functions, but commands/functions should try to strive for the fewest number of parameters. Commands/functions should also clearly accomplish one goal or concept. For example if you wanted to create a plugin to play various system sounds, it would be unwieldy to have a command for each, such as “play beep sound”, “play asterisk sound”, “play hand sound”. It is better to create a single command called “play system sound” that uses a drop down box as a parameter to choose which sound you wish to play. It would, however, be confusing to use the same command to also play sounds based on wave files. Instead, create another command with a single “File” parameter. You might be tempted to name the second command “play custom sound” to juxtapose it from the other command, but simply naming it “play sound” is probably a better name.