Hacker News new | past | comments | ask | show | jobs | submit login
Show HN: Stack Parts - a way to find possible parts for your stack
82 points by joshu on Sept 13, 2011 | hide | past | favorite | 48 comments

so, when i worked at google there was a great internal webpage that listed all the various parts and systems one could use to build something. i've always wanted something like that for the real world, so here it is.

the idea is basically to index widely used and good stack parts so that people can figure out what they need to build their applications.

this is still very rough. we're still working on figuring out the metadata, how to display it, and how to link it. in addition, some of the metadata is wrong as we evolve how to describe things.

how it works: tornado, yaml, github.

I can see the value in something like this, especially for more novice web developers who may not know the terms to search for in Google or StackOverflow to find what they need.

I understand it's rough, but here are something of the things I was expecting to see while I was browsing around:

- Some "category" pages, like dbm, are missing definitions. It would be great if definitions were present on every category page.

- I really like that some category pages include a curated list of articles that compare the different options within this class of products. This is exactly what I search for when researching new technologies.

- It'd be nice to have links to the Stackoverflow "tag" page on individual technology pages. For example, the MySQL page could link to this: http://stackoverflow.com/questions/tagged/mysql

I could also see this information being shown in a more visual way. It'd be pretty interesting to allow companies to create an account and build a profile of what their web stack looks like. Maybe something similar to how GuitarGeek.com shows the rigs of famous guitarists? I'd be willing to bet that most web stacks would look more like Eddie Van Halen's setup (http://guitargeek.com/rigview/258/) rather than Angus Young's (http://guitargeek.com/rigview/312/) :)

We have added definitions to most of the category pages, please let us know your feedback.

Thanks for all your suggestions, will follow up on the rest of the suggestions!

yeah. although the main issue here is that the set of possible stacks ends up being a graph, so that's harder to represent. so it is difficult.

i bet the vast majority of stacks are still LAMP... but i agree with everything else.

To me it seems it's a great idea that may save time looking for alternatives to a technology from its name.

Still, I think the most valuable part this site may add is the very notion of stack: what vertical choices work well together. For example would you or could you rather combine C# and MySQL or Python, Django and MySQL for a given context (scalability, criticity, developers profile ...)

Would love to see it as a map/graph, where parts that "go together" (or are often used together) being linked. It'd probably be tricky to find the right threshold, but the result would be really useful (and fun to see).

gotcha, will add that to the todos.

One small point - I found it quite hard to read. When I first saw it I assumed it was just some type of tag cloud until I realised that the link on the left is the category.

Also any plans for having it so that I can start with a language, get a list of data-stores that can talk to my chosen language, then get a list of web-servers and so on until I've chosen my stack. Then building on this it would be great if I could get all the API's for the chosen stack!

Thanks for the great little tool!

Awesome! I would love to see a "this is my stack" tool: let people choose parts (maybe in an easy click and drag way) to show their complete stack. With a few stack data points, you could have templates, which users can start with and tweak to show their exact stack.

This is a great tool. I can see this being extremely useful.

Have you considered including a set of metrics which measure the maturity and status of each project? How about listing noteworthy uses in production? Also, recency and quantity of commits, bug fixes etc.

If things go wrong (and they invariably do), I can sleep safer at night knowing that there is a thriving community behind the project, which can provide guidance on any issues.

Admittedly what I have suggested presents some UI difficulties, at least on the home page. It would also need to be updated quite frequently. That could be partially automated by pinging public version control servers, for instance.

Still, a great job. Looking forward to seeing how it progresses.

It might be a good idea to tag the age of articles because some may be complaints or has missing features that would get resolved.

Also, no Source Control (Git/SVN/etc) or Configuration Control (Chef/Puppet/etc)?

Based on your suggestion, we have added source control, configuration control, and deployment tools categories.

Interesting idea. Suggestion: sort the categories at the top by how likely a project is to need/use them. Without getting into religious arguments, I think a fair example would be "language" and "webserver" should sort higher than "graph-store" and "mapreduce".

Also might be a good idea to define the categories for newbies. Most of the categories will need explanation for newbies.

Cool idea, though. I used to use jakarta.apache.org for a similar purpose.

We have roughly sorted the categories from bottom to top stack order, let us know your feedback :)

I can see that it's sorted now, but I don't think I explained my intention well before. What I meant was the order should be something like:

- language

- sql

- webserver

- webframework

- sourcecontrol


- stuff most people don't use on their projects, like mapreduce and graph-store

Also, the tooltip definitions are helpful but it's not obvious that they are there. I only knew they were there because you said so here. :-)

Good luck!

good idea.

This is great stuff. This could end up like a wikipedia for web developers. I've been wanting to do something like this for myself. With all the options available out there, its much easier to process when everything is organized.

Interesting that google had this as an internal webpage. I wonder what other really useful tools companies use that could benefit us if it were public.

We could merge our efforts, someway. I provide some projects' metadata (along their history) via http://appdate.it . It's really a rough job to do... mostly web page scraping, because a structured way to present those informations does not exist and if it would exist, well, it should be embraced by each project.


I'd suggest arranging the categories in a rough data flow, so webserver would be near the "outside" (top?), wsqi inside that, frameworks inside that.

wsgi might become part of a larger cgi-ish category: app container? app connector? You'd include fcgi and the various php equivalents in there; maybe subcategories.

Debatable: firewalls? Virtual environments like virtualenv and whatever the other guys use.

We have roughly sorted the categories from bottom to top stack order, let us know your feedback :)

We have added environment managers as a category (virtualenv, rvm, rbenv, bundler)

There aren't many stand-alone ORMs with last-gen frameworks, but they're increasingly important for noSQL. Would you add an ORM category?

Also, you could avoid the spatial UI problems nesting may cause if there's a tooltip with meta data & links on rollover.

Nice idea.

Could you include an approximation of each components popularity or longevity?

This would allow people to know if they are picking mainstream or more obscure/specialised/enterprise/unstable/etc components.

yeah. any ideas on how to measure this?

PageRank of project's HP?

google trends/search traffic

Cool idea! Definitely makes research a lot easier! Any reason why CSS isn`t on the list of languages? My web stack in the past has included CSS pre-processers, like LESS and Sass.

Based on your suggestion, we have added the CSS category (lesscss, scss).

+1, this site is incredibly helpful for someone like myself

no reason, just need to build it.

Awesome! Been wanting to build something like this for a while. One of the things the might be useful is the notion of which components of a stack are the most mature.

definitely on the todo list.

What I would be more interested is interconnectivity between these elements of the stack, which rdbms have an API for the language I have selected for example.

You could load it into Neo4j and generate some connectivity visualizations.

we have some of that.



connects python to mongo?

we're not sure what to tag these as. bindings?

ohloh.net has a "stacks" feature that crowd-sources this kind of information. It would be neat to tie these together.

I noticed there is no Common Lisp or Scheme. Both are great languages for apps/web.

no judgements, i just don't know the space very well so i didn't do it yet.

i should write up the file format so people who are so minded can just send me a file to upload.

Add cherokee under webserver. Lovely configuration, fast, flexible.

submitted the form. hasn't showed up on the homepage yet.

doesn't happen automatically. we have a bunch of work to do to make that happen. just goes to google docs for now.

the implementation is the absolutely simplest we could come up with.

understood :) just putting it out there in an attempt to avoid dupes.

thanks joshua!

i'm interested. are you going to track the results over time? and/or metrics around usage?

i'd be interested in all of the above.

dunno. let's see where it goes?

Just submitted Play for Java. Great idea.

thank you. i'll process submissions at some point.

I maintain something like this personally, in the form of private structured notes, and I know other engineers that do as well. Except we go beyond listing all possible things that can fit into a given category, into instead making quality and suitability judgments about them. What's "best" or the no-brainer/default for a given role, either in the general case or in various special cases. It's a very useful professional technique.

To wit, I generated the following page from my structured notes, and added it to my public website, a few weeks ago:


I like that page, thank you for setting it up. Now I wonder what the 'rest of us' are using, it would be great to see this same list with a larger number of people and what their reasons for picking one technology over another in the same segment are.

That could probably ignite the flamewar thread of the century.

Speaking as someone whose web development skills are out of date, this is great.

Guidelines | FAQ | Lists | API | Security | Legal | Apply to YC | Contact