ahkscript / awesome-AutoHotkey

A curated list of awesome AutoHotkey libraries, library distributions, scripts, tools and resources.
2.59k stars 264 forks source link

add "AutoHotkey Library Distribution" #2

Closed joedf closed 9 years ago

joedf commented 10 years ago

I suggest adding "AutoHotkey Library Distribution" under scripts. Markdown:

## AutoHotkey Library Distribution

* [pAHKlight](https://github.com/hi5/pAHKlight)
* Ryan Shipp's [ahk-libs](https://github.com/rshipp/ahk-libs)
* [ASPDM](https://github.com/ahkscript/ASPDM), for
  [package/stdlib distribution and management](https://trello.com/b/XVP4M76d/package-stdlib-distribution-and-management)
  from the [ahkscript](https://github.com/ahkscript) folks
* [ALD](http://libba.net/) (discontinued)
* tuncay's original [ahkstdlib](http://www.autohotkey.com/forum/viewtopic.php?t=54996) (discontinued)
* [Salt](https://code.google.com/p/salt/) (discontinued)
* Uberi and infogulch's [ahklib](https://github.com/ahklib)
vasili111 commented 10 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?

joedf commented 10 years ago

:+1: everything

aviaryan commented 10 years ago

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 )
aviaryan commented 10 years ago

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.

vasili111 commented 10 years ago

@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.

joedf commented 10 years ago

+1 :+1: for

Library Distributions
    Standard libraries
    General
    GUI
    Math
    Text manipulation
Scripts
    Tools
    Contributing
aviaryan commented 10 years ago

"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

vasili111 commented 10 years ago

@joedf

I think you made mistake in previous post. Which one are you suggesting?

OR

joedf commented 10 years ago

Whoops yeah sorry

Library Distributions
    Standard libraries
    General
    GUI
    Math
    Text manipulation
Scripts
Tools
Contributing
aviaryan commented 10 years ago

@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
  1. More Libraries contain specialized but non-standardized libraries like Math functions for my homework and Math functions. These 2 libs are specialized in Maths but not standardized with the underscore prefix.
  2. General will contain things that @vasili111 has already mentioned in his post. They won't have any criteria (i.e. sub-sub-group)
  3. Collections will contain the 8 items @joedf mentions in first post.

Also singular functions like Eval() lib by Lazlo and more of the like can go to More Libraries under their respected sub-sub-group.

vasili111 commented 10 years ago

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

joedf commented 10 years ago

I'm thinking of something like this:

vasili111 commented 10 years ago

@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:

joedf commented 10 years ago

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 :

vasili111 commented 10 years ago

@joedf @aviaryan Ok that do it that way :)

joedf commented 10 years ago

ok... what to do with "Standard Libraries"... :P

aviaryan commented 10 years ago

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" ?

joedf commented 10 years ago

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..

vasili111 commented 10 years ago

@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)

joedf commented 10 years ago

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?

rshipp commented 10 years ago

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:

joedf commented 10 years ago

Yes, thank you @rshipp ! lol ASPDM distributes libraries!

vasili111 commented 10 years ago

We can rename "More Libraries" to "Specialized Libraries". I think it more reflects its purpose. What you think about it?

rshipp commented 10 years ago

Looking at the README, I think I understand now - scripts are tools written in AHK, while tools are for AHK - is that right?

vasili111 commented 10 years ago

@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).

aviaryan commented 10 years ago

@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.

aviaryan commented 10 years ago

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".

vasili111 commented 10 years ago

@aviaryan Why we need 4 subgroups in "Libraries" group? Please explain what will contain each of them.

aviaryan commented 10 years ago

@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).

vasili111 commented 10 years ago

@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?

aviaryan commented 10 years ago

"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.

aviaryan commented 10 years ago

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.

vasili111 commented 10 years ago

@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.

aviaryan commented 10 years ago

@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.

aviaryan commented 10 years ago

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.

vasili111 commented 10 years ago

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.

aviaryan commented 10 years ago

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.

aviaryan commented 10 years ago

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 ..

aviaryan commented 10 years ago

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.

mmikeww commented 10 years ago

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:

joedf commented 10 years ago

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).

vasili111 commented 10 years ago

@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.

joedf commented 10 years ago

+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

vasili111 commented 10 years ago

@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:

vasili111 commented 10 years ago

@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?

aviaryan commented 10 years ago

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.

joedf commented 10 years ago

@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.

vasili111 commented 10 years ago

@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"?

joedf commented 10 years ago

Keep it short, keep it simple. "Library Distributions"

joedf commented 10 years ago

For reference: http://en.wikipedia.org/wiki/Distributed_library