Skip to main content

Notice

Please note that most of the software linked on this forum is likely to be safe to use. If you are unsure, feel free to ask in the relevant topics, or send a private message to an administrator or moderator. To help curb the problems of false positives, or in the event that you do find actual malware, you can contribute through the article linked here.
Topic: Central repository for components (Read 69854 times) previous topic - next topic
0 Members and 1 Guest are viewing this topic.

Central repository for components

Maybe this is a bit off-topic, but would it not be a good idea to have some kind of a central repository for foobar components that keeps track of them, and their update status?  It'd be slick to make it available right from foobar itself, and have it able to download them automatically.

Winamp almost has something like this... well, a central plugins page with automagically installing PIMP executables around every file.

I just find that all to often, if you want a plugin for foobar2000:
a) You don't know if it exists
b) You know it exists, but have a hell of a time finding it.

Most of the time, this can be done by scouring HA.org for a while, but it'd be nice to have something simpler, and this kind of a feature might attract more users to foobar2000 too.

Central repository for components

Reply #1
Yeah, i was thinking about that earlier. I don't know if anybody here has ever used Miranda (an instant-messenger program that has a similar community and design philosophy to foobar), but if you've been keeping up with it recently you'll know about the Updater plug-in, which allows plug-in authors to register a URL (stored within the plug-in itself) that points to the latest version of the plug-in. You can then set Updater to run on start-up or once a day or whatever, and it'll compare the URL's version of the plug-in to the version of the one you have, and if yours is lower it'll download the new one.

I think foobar could definitely use a component like that, and i don't think it'd be difficult at all to implement, as long as the other component developers went along with it.
~

Central repository for components

Reply #2
That's a great idea... and I love Miranda, BTW, but I haven't used it in a while now.

Also, given foobar2000 is for Windows, probably not too many people are familliar with this, but a Linux distro called Gentoo has a really neat feature called Portage, (invoked via the emerge command) which is derived from the BSD package management system".
Wikipedia Article: Portage (Software)

This feature makes Gentoo one of the most easy to maintain Linux distros (operating systems, even) there is, because it can automatically and easily keep itself up to date.  Installing any program is done by simply running "emerge program_name", and it downloads, configures, and compiles everything automagically.  It's wonderful. 
You can also use portage to search through a list of available software packages (and there's a GUI utility to do this as well), so that if you wanted a graphics program, you could search for "graphics" and you'd see any program with that word in its title or description.

foobar2000 could definitely benefit by implementing a system like this...  I'm sure that it could be added via a component, just like what lav-chan was saying about Miranda.  I suppose that, unless the main developer of foobar wants to take this on with his main site (which would be the best), whoever makes a tool like this would also be responsible for maintaining the repository of foobar components, their descriptions, version numbers, release dates, and any other information that is relevant.

It would be nice, in any case, to have some standards for creating and releasing a component if the author has any intention of it being used by others. 
By this, I mean things like:
-A standard URL for this on a specific website
-Presence in a searchable database of components
-(optional) an icon for the component
-A title of certain length
-A description of a certain length
-A release date
-A version number in a sensible format
-release notes and incremental version change notes
-links to relevant threads

If these things were present for all components, it would probably be trivial to make the kind of tool that lav-chan is talking about.


I think that it would help foobar2000 to grow and become more popular and useful for everyone.

Central repository for components

Reply #3
Well the Updater plug-in i'm talking about doesn't really have a 'central repository'; it'll only update the plug-ins that you already have. There's another plug-in for Miranda that checks their site's file listing (which is more or less their 'central repository' even though it's ridiculously out-dated for most of the better plug-ins), but i've never used it.

I don't usually have any trouble finding the plug-ins, since it's not hard for me to keep up with the forum and stuff. I just sometimes can't keep track of all the new versions coming out all the time.
~

Central repository for components

Reply #4
I second that, something like the updater in Miranda would be very usefull! Maybe something like that should be an official component delivered with foobar so that any 3rd party component could rely on it.

Central repository for components

Reply #5
Count me in.

See this thread for a previous discussion along these lines.
I'm on a horse.

Central repository for components

Reply #6
I use that plugin for Miranda. It would be great if foobar had a similar plugin.

Synthetic Soul you made a lot of valid points regarding the third party plugin site in the thread you posted.

Central repository for components

Reply #7
Quote
I use that plugin for Miranda. It would be great if foobar had a similar plugin.

as a first step - it would be great to resurrect http://pelit.koillismaa.fi/plugins

Central repository for components

Reply #8
So far this seems like a popular idea.  But how does one get started?
To break down the logistical issues:

-All the developers have to agree on some kind of a system, and be willing to submit their new versions or new plugins.
-A central site needs to be actively maintained by somebody
-Some kind of a component is needed that will check the central site for updates, and allow searching for new plugins, perhaps. (I'd think this wouldn't be hard to develop, but I'm not volunteering right now, given my limited programming experience).

Am I forgetting something?

But indeed... foobar2000 really needs something up to date and more organized.  It *is* the extensibility and modularity of foobar2000 that makes it so great, and it wouldn't be nearly as useful without the plugins.  So if they are hard to find, that will be a factor stunting its growth.

Central repository for components

Reply #9
If you're going to make your plug-in actually check a central area for components (even if you don't have them already), somebody wouldn't really even have to 'maintain' the site that much. Set it up, figure out some way developers can upload their files, let the updater component handle the rest. Use XML or something. The site wouldn't need to be visible/navigable from a Web browser or anything, so nobody would have to work on an interface (plus it'd save bandwidth).
~

Central repository for components

Reply #10
great idea. i am on ha all the time, and i feel like i don't know what 50% of the plugins do.  i am sure if i were aware of what most of these plugins did, i would benefit from them.

Central repository for components

Reply #11
Quote
as a first step - it would be great to resurrect http://pelit.koillismaa.fi/plugins
Quote
Synthetic Soul you made a lot of valid points regarding the third party plugin site in the thread you posted.
Thank you.  I just think that there's no point re-inventing the wheel.  The plugin site exists, and is a good place to start.

I just hope the webmaster for that site (anyone know who it is?) will get involved in this topic.

I would be quite happy to create a similar site but with registration and email alerts (as per my other posts).  I think a foobar component interrogating a web service is a cool idea though.  That said, that will only deal with components a user already has installed, and doesn't go anyway toward a user searching for and finding other components.
I'm on a horse.

Central repository for components

Reply #12
Well, not necessarily. You could make the component get a list of available plug-ins, it'd be fairly easy to build a file that lists all them all. I don't know any fancy stuff, but i could make something that worked right now -- an Access database to store the component information and an ASP page that builds a list of all the components in the database. The updater plug-in could just check that ASP page.

Off the top of my head, the format for that page could go something like:

Code: [Select]
<component>
       <dllname>foo_uie_explorer</dllname>
       <fullname>Explorer Panel</fullname>
       <description>A Columns UI panel showing an Explorer directory tree.</description>
       <author>JackieKu</author>
       <vermajor>1</vermajor>
       <verminor>04</verminor>
       <verrelease>6</verrelease>
       <verbuild></verbuild>
       <fooversion>0.9</fooversion>
       <upath>/components/foo_uie_explorer/1046unicode.zip</upath>
       <apath></apath>
       <uspath>/components/foo_uie_explorer/1046unicode-src.zip</uspath>
       <aspath></aspath>
</component>


I dunno, i just woke up so i don't really want to think out how you would do Unicode vs ANSI or 0.8 vs 0.9 but you get the idea. And it doesn't need to be XML.
~

Central repository for components

Reply #13
This will probably never fly without some way to sort out the shoddily-developed components from the well-developed ones, and buggy releases from unbuggy releases. Miranda's system's great for keeping components up to date, but it fails miserably at ensuring the stability of your IM client. Personally, one of the reasons I use fb2k is because I can rely on it, and as soon as a component sacrifices stability, it gets axed. From what I know of the development team, they'd probably think along similar lines.

Central repository for components

Reply #14
Quote
This will probably never fly without some way to sort out the shoddily-developed components from the well-developed ones, and buggy releases from unbuggy releases.

How it flies right now? The only difference I see is you have to jump between bunch of sites and threads just to get to know if there are any updates.


Quote
Miranda's system's great for keeping components up to date, but it fails miserably at ensuring the stability of your IM client. Personally, one of the reasons I use fb2k is because I can rely on it, and as soon as a component sacrifices stability, it gets axed.

Miranda has tons of plugins, no wonder it has problems with stability. I do not think it will be better without Miranda Addons Database. I see the only way to increase MIM stability - to use less 3d party plugins.

Central repository for components

Reply #15
I would gladly try to write a component doing that and I could do the php part too, but right now I don't have the time at all because of school works.. So if by June nobody has come up with anything, I'll start. By then I'm trying to keep this up to date with the available plugins for 0.9. It doesn't say when the last version has been released but I think nearly all of them are in the list.. that's a start.

Central repository for components

Reply #16
Quote
Well, not necessarily. You could make the component get a list of available plug-ins, it'd be fairly easy to build a file that lists all them all. I don't know any fancy stuff, but i could make something that worked right now -- an Access database to store the component information and an ASP page that builds a list of all the components in the database. The updater plug-in could just check that ASP page.
Hmmm.. a decent search would involve a description field and possibly some keywords.  I guess the component could also be used to search for other plugins, but is it really necessary?  I suppose the logical conclusion is a site with a web service for the component to query, but also an online search for those who prefer to use a browser, and view the full details of the results.  Users then have the choice of searching both ways.

Anyway, I agree that it isn't a difficult technical excercise.  What is required has been previously specified by myself and Supacon: all component developers need to be encouraged to use the system.  The only way the system will really work is if all  the components (or certainly all the important ones) are administered using it.  Developers will need a login system to administer their components, and they will need to ensure that every new release is made available using the system, and that versions are documented accurately, descriptions are fitting, etc.  The database/XML schema and programming are not difficult (I could not program the component, but it's hardly going to be Columns UI).  The important bit is getting all the developers on board.  This is where the current plugin site has a head start.

NB: the plugin site's author is amppa.  He was active on this board around ten hours ago, so maybe we will get some input from him.
I'm on a horse.

Central repository for components

Reply #17
Here are my thoughts about what is required from the updating components point of view (informational fields for users may be left out). The format is a data-only subset of Lua 5.1, because it's less verbos than XML:
Code: [Select]
Component {
   -- same information that appears in Components section in preferences,
   -- so a tool can be used to extract that automatically
   name = "Playlists tools",
   version = "1.5.3",
   description = "...",

   -- declares that this component replaces an older component,
   -- also used to track component name changes
   supersedes = "Utilities",

   -- name of the DLL that implements this component, a DLL can contain
   -- multiple components, for example "Playlist tools" and "Text tools" in foo_utils
   -- or the different archive format readers in foo_unpack.
   -- used to determine which DLL to download/update
   dllname = "foo_utils",

   -- foobar2000 version that this component has been designed for
   coreVersion = "0.9",

   -- used to determine if foobar2000 can load this component atall,
   -- reported by the component entrypoint function, so it can be
   -- extracted by the same tool that gets the name, version and description
   clientVersion = 71,

   -- a link to the download location of this file, either on the central repository
   -- or on the site of the component's author
   tracker = "http://...",
}

This allows searching for functionality and describes where that functionality is implemented, now for ways to describe how to install that functionality:
Code: [Select]
-- download declaration for a raw DLL file
Dll {
   -- which components are implemented in this Dll, strings are a concatenation
   -- of component name and version instead of DLL name to make matching
   -- more robust in the presence of multiple versions of the same component
   contains = {"Playlist tools|1.5.3", "Text tools|1.0"},

   -- download link
   download = "http://.../foo_utils.dll",
}

-- alternatively, an archive with a fixed internal layout can be used,
-- I propose one that is similar to the format i use for the "component archives" on my site
DllArchive {
   -- see comments for Dll, but an archive could contain more than one DLL
   contains =  {"Playlist tools|1.5.3", "Text tools|1.0"},

   -- download link
   download = "http://.../foo_utils-x.y.z.zip",
}

-- the final alternative for components that require special setup procedures
DllInstaller {
   -- see comments for Dll, but an installer could contain more than one DLL
   contains =  {"COM Automation Server|0.7"},

   -- download link
   download = "http://.../foo_comserver2-0.7-setup.exe",
}

I'm not sure, if it is a good idea to have raw DLL downloads, but I included it for the sake of completeness.

The goal of this approach is to have as much of the component description file as possible generated from already existing data. What's still missing is tracking of intercomponent dependencies.

Central repository for components

Reply #18
Quote
This will probably never fly without some way to sort out the shoddily-developed components from the well-developed ones, and buggy releases from unbuggy releases.

That seems like a legitimate concern, but perhaps misdirected.  It made me think though, that this coherent system for distributing plugins could actually help to do exactly that... sort out the good plugins from the bad ones, and the stable from the unstable.  I know that because of the 3rd party components, foobar2000 hasn't been 100% stable for me.

In this central site, there should be perhaps a wiki, or some way for users to add feedback and review the component, and then the average ratings could be another criteria that people could search by... (Winamp does something like this with their Plugins site).  It would also provide a way for people to comment on possible stability issues and such.  Right now, of course, that is what hydrogen audio is for, but it's pretty time consuming to weed through multiple forum threads to find a little bit of information that you are looking for.


Quote
A decent search would involve a description field and possibly some keywords.  I guess the component could also be used to search for other plugins, but is it really necessary?  I suppose the logical conclusion is a site with a web service for the component to query, but also an online search for those who prefer to use a browser, and view the full details of the results.  Users then have the choice of searching both ways.

I thought it would be neat to be able to search with a software GUI tool, kind of like Gentoo Linux's Portage GUI, but it would probably be enough simply to go to a web page where you could search through available plugins easily.

Of course, the really neat thing about searching built into a foobar2000 component is that it could possibly download and install a component automatically, and save the user a few steps of clicking on a link, saving a zip, unzipping to the components dir, and restarting foobar2000.  Perhaps all that could be automated.

Central repository for components

Reply #19
Quote
Of course, the really neat thing about searching built into a foobar2000 component is that it could possibly download and install a component automatically, and save the user a few steps of clicking on a link, saving a zip, unzipping to the components dir, and restarting foobar2000.  Perhaps all that could be automated.
Yeah, sure.  Bear in mind, when I say
Quote
I suppose the logical conclusion is a site with a web service for the component to query
I mean just that.  The data would be stored online, and searchable both by the component and a website search.

Your point about a component being able to automate the process is a good one.

One benefit of a web search, however, is upgrading. Why a desktop solution that may require upgrades, when you can just change a webpage.  Deployment on the web is far easier.

That said, I'm definately not against the component being used to upgrade and search for new.  I'm just saying "why not both?".  The data needs to be online, why not an online interface?
I'm on a horse.

Central repository for components

Reply #20
Yeah, that certainly makes sense.  It could probably have both interfaces without a lot of redundancy.  I think that there could be a lot more functionality and information via a web page as well.

Central repository for components

Reply #21
I'd support the idea of automatic updates.

Tried a low-level-discussion in this thread, as well.

(without a solution)


JD

Central repository for components

Reply #22
Guys, I hope I'm not just revisiting a "let's-flog-the-dead-horse" scenario here.

But what if we use the HA Wiki as a central rep for components version and giving links there?

I appreaciate that there's a thread listing the known components; but this way, if OP is unavailable, the thread is not updated. Why not put the burden of update to the component maker?

My suggestion of using HA Wiki is detailed here.  The beauty of my suggestion is several-fold:
1. No need for an admin to update the site; component-makers can update the site themselves.
2. No need for XML parser; the plugin merely have to download a single HTML page and parse it for DELIMITED TEXT only.

There's recent surge in demand for this kind of update notification, as seen  here (my posting there) and also countless other threads.

Central repository for components

Reply #23
It's probably worth pointing out the "conclusion" of another thread started around the same time as this one.

In essence amppa, the current plugins website admin, and Seldaek, a component developer, agreed to work on a 3rd party plugin update system for foobar.  Posts can be viewed here.

Now, I realise that an update is overdue, and also that there are alternative methods.  I just thought I should highlight that other plans are underfoot (?).

I am very keen to see a resolve in place, and don't overly care who does it or how it works; however I am concerned about a betamax/VHS situation, or simply component developers becoming confused as they are forced to update numerous different systems when releasing a new version.

I wish we could merge all these threads, get some key players interacting, and get a solid plan in place so we can drop this topic and move on.
I'm on a horse.

Central repository for components

Reply #24
What do you ppl think about RSS/Atom then? The official 3rd party plugins site just need to be alive and with RSS/Atom feature (so you can get to know if there's new plugins out there) I think is good enough for me. A updater plugin (it's only for update) that use that news feed would be a great idea. About what Seldaek post here about RSS, I don't know how will he impliment the component but if he have to download the list of all component at once then it will even waste more bandwidth than RSS with conditional GET, it would be even save more bandwidth if there's gzip/deflate encoding.