Closed joedf closed 9 years ago
@joedf I think we can skip word "AutoHotkey" because everything in the list is for Autohotkey. In that case we will have "Library Distributions". We can put it as you suggested as separate group. It can be first group (before "Scripts" group) or second (after "Scripts" group). I think to make it first group is better. Every subgroup in that group should be populated alphabetically. There should be two exceptions: first should come subgroup "Standard libraries" and second subgroup "General" (which will include all libraries that have no any particular specialization). Every other subgroups should be sorted alphabetically. What you think about it?
:+1: everything
There should be two exceptions: first should come subgroup "Standard libraries" and second subgroup "General" (which will include all libraries that have no any particular specialization).
Perfect. But I think "General" should be "More Libraries" ... "General" is too broad if you plan to keep only libraries inside. Also TF should be moved to standard libraries. My idea is -
Scripts
- Standard Libraries
- More Libraries
- Library Distributions
- Demonstrations ( forum topics like *Beautiful GUIs*, *COM object reference* .. and so )
Maybe Library Distributions should be moved out of Scripts because it is not a script but a collection that may contain libs that have already been mentioned under Scripts.
@aviaryan Yes. In my previous post I was suggesting the same. "Library Distributions" should be separate group and it should be first group (before "Scripts" group). It should not be in "Scripts" group because of the reasons that are in your last post. In that case group "Library Distributions" will have subgroups, first subgroup "Standard libraries", second "General" (more discussion about its name below example) . All other should be populate alphabetically for example: GUI, Math, Text manipulation and so on. So, it should look like this example:
The reason to have "General" subgroup, is to have subgroup that should contain all libraries that are not Standard Libraries but does not have any particular specialisation. For example, someone can create library of functions that he frequently uses and it contains function for GUI, Math, Text manipulation and others. In that case we need some subgroup where that kind of function collections (which has different categories of functions in it) should go. In that case, if we name that subgroup "More Libraries" it will not emphasize that it contains libraries with multiple specialisation, it will indicate that there are libraries that are not falling in any other existing subgroups. Maybe "General" is also not good name for such kind of subgroup. We can choose different name. Maybe we can name it as "Collections" or "Library Collections"? Please also suggest your versions.
+1 :+1: for
Library Distributions
Standard libraries
General
GUI
Math
Text manipulation
Scripts
Tools
Contributing
"Library Distributions" should be separate group and it should be first group (before "Scripts" group).
Yes. fine. But then where will library collections provided by @joedf in first post go then. Standard Libraries is definitely not the place, nor is general. What about a sub-group Collections at the end of Library Distributions for them.
Maybe "General" is also not good name for such kind of subgroup. We can choose different name. Maybe we can name it as "Collections" or "Library Collections"? Please also suggest your versions.
Definitely not Collections. Keep it General.
I agree with all other points of yours @vasili111
@joedf
I think you made mistake in previous post. Which one are you suggesting?
OR
Whoops yeah sorry
Library Distributions
Standard libraries
General
GUI
Math
Text manipulation
Scripts
Tools
Contributing
@vasili111 One question I have is why there is "Text manipulation" sub-group in Library Distributions. TF (TF_func) is a standard library and will go in that sub-group. Same is for things like Math and GUI . If a lib for them is standardized, it will go in Standard libraries area. You can have those groups (GUI, math) inside Standard libraries but not along them.
My definition of Standard libraries goes as -
If a lib's all functions start with name _fn__ where fn.ahk is the name of its file, then it is a Standard library. These libs can be directly included without using #include as AHK interpreter looks for the filename fn.ahk if a function whose name starts with _fn__ is used in the script.
If my definition is correct, I will think something like -
Libraries
- Standard Libraries
- Graphics
- Text Manipulation
- Math
- Wrappers
- More Libraries
- Graphics
- Math
- blah blah
- General
- Collections
Scripts
Tools
Contributing
Also singular functions like Eval()
lib by Lazlo and more of the like can go to More Libraries under their respected sub-sub-group.
There should be one group where all libraries will go. We can name it "Library Distributions". That group should have several subgroups.
First subgroup should be "Standard Libraries" and should include Standard Libraries. In my opinion Standard Libraries should be called library which is like C++ Standard Library or as Tcllib in TCL. That kind of library includes functions from different categories (it does not have only one particular specialisation and can't be puted in only one other subgroup), most functions in it are frequently needed, is well organized, has consistency, has high quality well tested code and good documentation. I don't see such libraries for AutoHotkey at this time.
Second subgroup named "General" or "Collections" (or any other suggested name) should include libraries that includes functions from different categories (it does not have only one particular specialisation and can't be puted in only one other subgroup) but does not meet quality standards of Standard libraries.
Also we will have different other subgroups which will be after first two ones and will be alphabetically sorted. There should be specialised libraries. Only one specialisation for one library. for example "Text manipulation" subgroup should only include libraries that are used for text manipulation (for example TF (TF_func)), "Math" subgroup should include libraries that are use only for math, "GUI" subgroup should include libraries that are used only for GUI and so on.
If there is single function it should go to "Scripts" group in corresponding subgroup.
So we will have:
What you think about that? @aviaryan @joedf @others
I'm thinking of something like this:
@joedf In your version ASPDM
and pAHKLight
are displayed as subgroups but in fact they are entries of subgroups. I think you mean as in example below. I like your idea :thumbsup:
Just one tiny change. I agree with @aviaryan 's "More Libraries". I don't want the "Library Distributions" to feel too "crowded"... The following example should suffice our needs :
@joedf @aviaryan Ok that do it that way :)
ok... what to do with "Standard Libraries"... :P
ok... what to do with "Standard Libraries"...
Forget it. "Library Distribution" will be the group for Salt, ASPDM and the like. BTW, what do you plan to keep in "Standard Libraries" ?
Agreed. Absolutely, no idea... As a side note: Once ASPDM is up, there will be selected libraries (like gdip.ahk) to be in the StdLib. New candidates can be added with a public vote, etc. etc..
@joedf @aviaryan If we will have only "Library Distribution" group without any subgroups, then there will be mess. Lots of different kind of libraries will be there without any kind of organization. To organize it I see 2 ways. Please also propose any other ways too.
First way. In that case all libraries that have no specialization will go to "Standard Libraries" (we can rename it if you want). So, for example, "Standard Libraries" will also include all libraries that added by joedf (pAHKlight, ASPDM, etc). All other specialized libraries will be added to corresponding to specialized subgroups (GUI, Math, etc.).
Second way: (proposed earlier by joedf)
Hmm, yes but for the moment being we dont anything to go under StdLib ... :/ Also, I realized that Library distos should really be pAHKLight, Salt, etc
how about this?
I think it's important that there is a clear difference between "library distributions" (or whatever you want to call them), like ASPDM and pAHKlight, and "libraries," like GDIP, JSON and TF. "Library distributions" distribute "libraries." :smile:
Does something like this make sense?
Do standard libraries even need to be in a different section? Maybe it's better to just have a note beside libs that are "standard"?
I'm not quite sure what the difference is between "tools" and "scripts". Maybe we're using different words to mean the same things, and your "scripts" are my "libraries," while my "libraries" are your "library distributions"... but then what is ASPDM? It's not a library. :grinning:
Edit: Ha, looks like @joedf got there first. :smile:
Yes, thank you @rshipp ! lol ASPDM distributes libraries!
We can rename "More Libraries" to "Specialized Libraries". I think it more reflects its purpose. What you think about it?
Looking at the README, I think I understand now - scripts are tools written in AHK, while tools are for AHK - is that right?
@rshipp Yes. Scripts and libraries are written in Autohotkey scripting language and are for using in source for your scripts. Tools are software for making AutoHotkey scripts (ide, debuggers, etc).
@rshipp @joedf @vasili111 And that's what I said earlier in the day :laughing:
We can remove the "General" section if needed. In case there are no candidates.
We can rename "More Libraries" to "Specialized Libraries". I think it more reflects its purpose. What you think about it?
I don't think that's needed. Reason 1 is that libs under standard libraries ( gdip, TF, ... ) are already specialized libraries so why another specialized libraries. We can remove the "General" section and instead add "Random" sub-group under "More Libraries".
@aviaryan Why we need 4 subgroups in "Libraries" group? Please explain what will contain each of them.
@vasili111 One change first - "General" should not exist.
We can remove the "General" section and instead add "Random" sub-group under "More Libraries".
The eg>
prefix contains examples.
BTW, I feel dividing the library in 2 groups (Standard and More) will be difficult to organize, maintain and sort. So let's merge both of them. The final list looks like.
Here, all sub-groups of Libraries like MATHS will first contain StdLibs (like Eval) and then non-standardized libs. Now, you say which one is better, first (Libraries = Standard, More) or second (Libraries = only libraries, not the heck).
@aviaryan So if I understand you correctly, in final version you mean: We are left with two groups "Libraries" and "Library Distributions". "Libraries" should include all libraries that can be classified by particular specialisation (GUI, Math, etc). "Library Distributions" should include all libraries that cannot be classified by particular specialisation. Did I understand you correctly?
"Library Distributions" should include all libraries that cannot be classified by particular specialisation. Did I understand you correctly?
No. Library Distributions will only contain the 7 items (pahklight, asdpm, salt..) . Anything that can't be classified goes in Random in Libraries.
The current README till commit 22 is near what I'm saying. Only "More Libraries" need to be renamed to "Libraries" and Libraries should be above "Library Distributions". I will fork it and reflect my suggestions.
@aviaryan So what is criteria that will tell us what will go to "Library Distributions"? I dont think that "Random" is good idea. "Random" subgroup is more likely related to randomness, not for anything that is not classified.
@vasili111 Library Distribution means a system which distributes a collection of libraries. Currently there are only 7 known Library distribution systems in the world as @joedf has already mentioned. Also @rshipp 's quote is worth reading in this context.
I think it's important that there is a clear difference between "library distributions" (or whatever you want to call them), like ASPDM and pAHKlight, and "libraries," like GDIP, JSON and TF. "Library distributions" distribute "libraries." :smile:
If you or anyone else creates a library distribution platform, we can add it there.
I dont think that "Random" is good idea. "Random" subgroup is more likely related to randomness, not for anything that is not classified.
Oh yes. I missed the point. Anything unclassified can be classified by creating its sub-sub-group under Libraries or creating a broader group. Random is for functions libs that are unorganized. One example for Random is my misc functions . These functions are not related at all and hence go to random.
One example of uncategorized lib is HParse . You are not sure in which category this script belongs. In that case, you can create a category like UnCategorized. This category stores specific but uncategorized libs. The Random category stores non-specific libs.
Library Distribution means a system which distributes a collection of libraries.... If you or anyone else create your library distribution platform, we can add it there.
I agree and like the idea to separate them. Maybe it is more correct to call it something like "Library Distribution Systems" or "Library Distribution Solutions" ? We can have that section as group or as subgroup of "Libraries" or as subgroup of "Tools" (because they are actually tools). I personally have no exact answer where to put it.
One example of uncategorized lib is HParse . You are not sure in which category this script belongs. In that case, you can create a category like UnCategorized. This category stores specific but uncategorized libs.
HParse can be put at category "Hotkeys". I don't see actually a library that can't be categorised except ones that falls in multiple categories. Also am not very familiar with HParse. Maybe it is more classified as a script more than library? I think that, if it consists of only one function it should be classified is script. If it consist of several function than it is library. What you think about it?
Oh yes. I missed the point. Anything unclassified can be classified by creating its sub-sub-group under Libraries or creating a broader group. Random is for functions libs that are unorganized. One example for Random is my misc functions . These functions are not related at all and hence go to random.
The Random category stores non-specific libs.
I agree. We need the category that will contain the libraries which fall in multiple categories. But name "Random" I think is misleading. It says more about randomness then for non-specific (multicategory) category.
Maybe it is more correct to call it something like "Library Distribution Systems"
Perfect
We can have that section as group or as subgroup of "Libraries" or as subgroup of "Tools" (because they are actually tools). I personally have no exact answer where to put it.
No keep them as separate group. They can't be in libraries because they are not ahk files. They can't be in tools because some of them involve no GUI or interface. Just what they have is a storage of tons of autohotkey script files.
HParse can be put at category "Hotkeys".
Yes it can be. But the point is that in case you don't wanna create a new sub-group because you think the category is too narrow, the safe place to put it is UnCategorized. Don't you see many applications put few of settings in Misc (miscellaneous), the same is Uncategorized.
But name "Random" I think is misleading.
Maybe you're right. But then I am also not sure what the name should be.
Please take a look at my fork of README.md.
@vasili111 I don't think we will ever need the "Random" sub-group. For any lib that contains a mixed bag of functions, we won't be able to write a description. That is, we won't be able to define what is it and what it contains. If that is the case, why should we add it in our precious awesome-AutoHotkey. Can you show me an example of an awesome lib that is kinda mixed-bag but deserves adding. I don't think there is ..
Maybe it is more classified as a script more than library? I think that, if it consists of only one function it should be classified is script. If it consist of several function than it is library. What you think about it?
I missed this one. sorry! What I think is if a script contains a single function but has a foreground purpose, it is a script but if it has a background purpose and does all its job between ahk codes, it is a function. So HParse is function as it only takes up a variable and returns a value.
Exactly what avi said:
BTW, I feel dividing the library in 2 groups (Standard and More) will be difficult to organize, maintain and sort. So let's merge both of them.
And I don't like the term "Library Distributions". What about "Library Managers" ? Similar to 'package managers' on unix systems
Here's what it should look like IMO:
I personally like @aviaryan's fork. +1 for @mmikeww What about "Package managers" instead of "Library distributions". It will reduce confusion, and specify what pAHKLight, ASPDM, Salt, ... really are. For example, RubyGems, npm, rpm PyPM, NuGet, etc. They all say "package manager", including ASPDM (will manage tools and libs).
@aviaryan @joedf @rshipp @mmikeww I like mmikeww example. Here is same version with minor formatting improvement, but idea is exactly same:
I also like the idea or using "Library Managers" instead of "Library Distributions", it is more precisely reflects purpose. Also can be used "Library management systems". Also I think "Package managers" less precisely reflects it purpose, because they manage libraries, not packages, we don't actually have packages in AutoHotkey.
Based on that answer of aviaryan and that discussion in IRC #Programming I think we should distingush "Script" from "Library" by:
Library is a code that has some reusable functionality that can be combined with your own code in order to create new functionality.
_Scripts is code that is intended to be used as standalone one and is not meant to be integrated with other code. For example, different Games or StealFunc of *_aviaryan.***
@aviaryan @joedf @rshipp @mmikeww What you think about it?
@aviaryan
Yes it can be. But the point is that in case you don't wanna create a new sub-group because you think the category is too narrow, the safe place to put it is UnCategorized. Don't you see many applications put few of settings in Misc (miscellaneous), the same is Uncategorized.
I think there is no need of "UnCategorized" subgroup. If we allow it, after some time we will get a big list which will be hard to manage and hard to find information in it. I think at that moment we should start without it and if time will show that there is demand for it, we can create it then.
I don't think we will ever need the "Random" sub-group.
I agree with you. We dont need it.
We can have that section as group or as subgroup of "Libraries" or as subgroup of "Tools" (because they are actually tools). I personally have no exact answer where to put it.
No keep them as separate group. They can't be in libraries because they are not ahk files. They can't be in tools because some of them involve no GUI or interface. Just what they have is a storage of tons of autohotkey script files.
Agree with you.
+1 Yes, I approve, but ASPDM and pAHKLight, for example, "manage" "packages" as in Standalone scripts, Libraries, tools and others. You can read more about Packages in Database.md and Guidelines.md
@joedf
ASPDM and pAHKLight, for example, "manage" "packages" as in Standalone scripts, Libraries, tools and others. You can read more about Packages in Database.md and Guidelines.md
You are right. Did not knew that.
Edited
In that case "Package managers" is better. So it will look like:
@aviaryan @joedf @rshipp @mmikeww We can add "Uncategorized" subgroup to "Libraries" group if we find libraries that have multiple specialisation and thus cant be added to any other specialized subgroup. In that case list will look like aviaryan fork What you think about it?
I think there is no need of "UnCategorized" subgroup. If we allow it, after some time we will get a big list which will be hard to manage and hard to find information in it. I think at that moment we should start without it and if time will show that there is demand for it, we can create it then.
That's better. Go with it ..
We can add "Uncategorized" subgroup to "Libraries" group if we find libraries that have multiple specialisation (The library that cant be added to any particular subgroup). In that case it will look like aviaryan fork
Sure. If a multi-specialized library is too good, it should deserve a place in "UnCategorized" . No doubt !
I also like the idea or using "Library Managers" instead of "Library Distributions", it is more precisely reflects purpose. Also can be used "Library management systems
My only concern with the term "Managers" is that two of the items ahk-libs and ahklib are not actually managers. They can't do anything on their own. They have no interface (GUI, console, web) and are more like collections/repository. Isn't it. What do you say ?
For the time I will merge my fork so that more work can be continued in the AwesomeList.
@aviaryan You're right. ahklib is technically a package manager, but the project was abandonned. Ahk-libs, on the other hand, is actually more of a collection of libraries.
@aviaryan @joedf @rshipp @mmikeww
My only concern with the term "Managers" is that two of the items ahk-libs and ahklib are not actually managers. They can't do anything on their own. They have no interface (GUI, console, web) and are more like collections/repository. Isn't it. What do you say ?
You're right. ahklib is technically a package manager, but the project was abandonned. Ahk-libs, on the other hand, is actually more of a collection of libraries.
Agree. If ahk-libs and ahklib are more collections/repository then they are good candidates for "UnCategorized" subgroup of "Libraries" group. Maybe we should move them there?
For the time I will merge my fork so that more work can be continued in the AwesomeList.
Good idea!
What is better name "Library Distribution systems" or we should keep "Library Distributions"?
Keep it short, keep it simple. "Library Distributions"
For reference: http://en.wikipedia.org/wiki/Distributed_library
I suggest adding "AutoHotkey Library Distribution" under scripts. Markdown: