docker / kitematic

Visual Docker Container Management on Mac & Windows
https://kitematic.com
Apache License 2.0
12.23k stars 1.41k forks source link

Container Organisation (folder/tree view) #1686

Open WillWritesCode opened 8 years ago

WillWritesCode commented 8 years ago

Expected behavior

Allow organisation of containers into a tree/folder view, e.g. Databases, Web Servers, CI/Build tools servers etc. etc.

Actual behavior

Flat list of all downloaded containers.

Information about the Issue

It would make things a lot simpler to manage, especially when you're reviewing tools of various types - grouping them would make things much easier on the brain.

FrenchBen commented 8 years ago

I like this idea, but that would mean that labels/tags are applied to these containers to categorize them. How do you envision this working?

WillWritesCode commented 8 years ago

I was thinking a file living in Kitematic to allow each user to define their own groups e.g. usercats.json... ...but you could also have auto categorisation based on something in the repo.

As "tags" themselves are used for versions on commit, maybe an additional file in the report could be used for Kitematic categories e.g. kitcats.json

Kitematic could then auto suggest where the user might file them by listing kitcats, the user selecting which one(s) to use.

e.g. usercats (or other relevant file) provides a mapping of container to categories e.g.

cats:{ database:{ containers:{postgres,MongoDB,RethinkDB,MySQL},CI:{Jenkins} }, webserver:{ containers:{nginx,node} } } etc.

(if there's already a list file built for containers, then maybe extend that to have a cats list per container)

That puts the user is in ultimate control of how things are listed and kitcats.json is just an optional hints file if a repo decides to include one. On 20 May 2016 1:06 am, "French Ben" notifications@github.com wrote:

I like this idea, but that would mean that labels/tags are applied to these containers to categorize them. How do you envision this working?

— You are receiving this because you authored the thread. Reply to this email directly or view it on GitHub https://github.com/docker/kitematic/issues/1686#issuecomment-220484198

FrenchBen commented 8 years ago

We've tried to stay away from user-files and support of x-y-z format. This can lead to a lot of errors simply because the user didn't create the config file properly.

WillWritesCode commented 8 years ago

For local pref's

This might be more of a complication than a JSON file, but what about a local [SQLite? or other lightweight, structured store] DB, controlled by Kitematic, to enforce the structure?

Like I say, it might be more complication than before the project, but to keep it flexible, I think the user needs to have final say on where things are listed (& I'd guess filesystem solutions are likely to complicate things more).

For categories declared for a repo

Not sure on this one, as tags are used for versions, we'd need some other public store, either an optional file in the repo, syntax in the long description, or and independent data source to decorate the repos (after the fact) with more info...

(the below is a bit rambling so: tldr; there doesn't seem to be a "what type of software is " service out there [feels like there should be] and more general sources are patchy at identifying software types)

I explored some options for 3rd party sources

I tried a couple of Google API's (freebase and knowledge graph) but it's hard to get a useful result - same goes for WolframAlpha.

Knowledge Graph Search Attempt for Redis https://developers.google.com/apis-explorer/#search/knowledge/kgsearch/v1/kgsearch.entities.search?query=Redis&fields=context%252CitemListElement%252Ctype&_h=3& .

Searched around and it seems there's a gap in the web for categorising software (plenty for Books and Movies, but hard to find the same for software). AlternativeTo had reasonable results, but not everything is tagged (not sure if they have an API). WikiData - had a look, but don't know SPARQL, so hard to judge.

MediaWiki actually does pretty well in some cases, but likely to be quite noisy results: https://en.wikipedia.org/w/api.php?action=query&titles=redis&prop=categories

It seems like Google Knowledge Graph (and others), should know about software (they certainly have the NLP to derive <category|type> from description text), but I can't find any existing sources that do this (unless WikiData SPARQL, or one of the Wolfram API's does).

It does kinda feel like it's something that should live outside of the current Docker ecosystem, but that it should exist, independently, for use cases like this... On 20 May 2016 7:09 pm, "French Ben" notifications@github.com wrote:

We've tried to stay away from user-files and support of x-y-z format. This can lead to a lot of errors simply because the user didn't create the config file properly.

— You are receiving this because you authored the thread. Reply to this email directly or view it on GitHub https://github.com/docker/kitematic/issues/1686#issuecomment-220678516

FrenchBen commented 8 years ago

it's not easy, as you found out - One good thing is that we can leverage the Web LocalStorage system. https://developer.mozilla.org/en-US/docs/Web/API/Web_Storage_API

We just need a way for the user to add these labels and make sure that upon re-creation they live. Having an outside source of truth would be best, although we all have our own way of keeping things organized.

JensDienst commented 8 years ago

As an starting Point, what about the phpmyadmin way? They Group the Databases by there names when there an "seperator" Char is existing.

As an Example: having 4 Containers icinga2_db_volume, icinga2_db_mariadb, icinga2_icinga, icinga_grahite

will result in

FrenchBen commented 8 years ago

I like the idea - How would you differentiate a container name from the actual compose name prefix?