I'm a big fan of github, and I think it provides an excellent set of resources for hosting 3D printing projects. Recently I had the idea that it would be useful if these projects were able to utilise Github Pages to provide a project landing page, showing similar information to that found on Thingiverse.
It sounded like a fun little diversion so I threw together something called githubiverse. It currently consists of a Github Pages template: drop this into the gh-pages branch of any github project, add a little configuration, and your github pages will display the source files, STLs and any images, along with some other information. The beauty here is that the content is dynamically pulled from the github repository so it is always up to date.
The screenshot doesn't do it justice so here is an example site: garyhodgson.github.com/githubiverse-tst. The project has a master branch which contains folders for source files, STLs and images. The project also has a gh-pages branch which contains the template. Within this, _config.yml contains the configuration parameters that allows the gh3 github api client to connect to github and pull the information. Because it's dynamically generated it's a little slower than a standard website, but I think it's an acceptable compromise for always having the latest information.
[Update: The way I have used Thingiview means that only ascii STL files are correctly displayed. I'll see if I an find a way to also load binary STLs.]
To get an idea of how other projects might look I took a few screenshots (via locally running instances) for Nophead's Mendel90 and Josef Prusa's PrusaMendel:
[gallery include="1168,1167" link="file"]
There's a few pros and cons to consider.
- + Free hosting of project site by github.
- + Easy to set up.
- + Always up-to-date.
- + Easy to change the look and feel to suit your needs.
- - Depends on Github, Github Pages and the API - any changes to the terms and conditions, or future availability, of these services could impact the site.
- - No search function, tags or commenting system (although this could be remedied).
An interesting advanced use case is the ability to use the same core template across many projects. You could fork the githubiverse-template project and edit the html/css as you wish. Then, in each project's gh-page branch create a submodule referring to this fork. All that's left would be to create a _config.yml file with the details in the root project gh-pages branch and an additional entry defining the source of the jekyll site as being the submodule folder. I've added details on how to do that in the project's readme. The benefit of doing this is that each project can be updated solely through updating the template submodule. [Update: it seems I had forgotten to actually test this method when deployed to github, whilst it works locally via Jekyll it seems that github modifies the source folder settings during the build. Thanks to dzach for finding this out the hard way. I'll see if there is a way around this as I feel having a shared template system would be quite useful.]
Another idea is to edit the template to utilise the blog aspect of jekyll. The Slic3r.org site runs on Github Pages and already does this to announce releases. The blog could be a development log, release history, or news section for example.
To address the search and discovery aspect I considered trying to implement some form of tracker service, whereby projects could register themselves and use the service for searching, browsing and tagging etc, also as a Github Pages site. However I realised that something like the RepRap Development Tracker would do the job perfectly well, as this is agnostic to where a project is hosted - it only categorises each entry and refers to the originating pages.
Development Tracker is currently tailored specifically for tracking reprap and 3D printing parts and projects, but it wouldn't take much to make it more generic and suitable for tracking all sorts of projects. And of course the underlying software is open source, so anyone can fork and go!
Using Github To Track Hardware Projects By Gary Hodgson « openalia
[...] Hodgson has prototyped his proposal for using github to manage hardware projects. He called it githubiverse and, appropriately enough, hosted it on github. Here is an example of it [...]
Just deleted all my things because of occupy thingiverse and will move on to this solution.
Glad you like it. Let me know if there's any problems, or if you think there are missing features.
Makerbot, Occupy Thingiverse, and the reality of selling Open Hardware - Hack a Day
[...] on GitHub, probably the most Open Source-friendly community in existence. You can do the same with this GitHub template for 3D printed [...]
I agree with your actions. I don't mind them making a new, upscale printer that only they can sell. But I heartily disagree with usurping the license rights of posted Things.
How is that any different than a private individual deciding that Microsoft's licenses are moot and then selling Windows CD on TV @ $10.00 a Disc. No Wait! For a limited time, you get Two WIndows XP CDs for the price of One! (Just pay separate shipping and handling.)
Great work! - Nils Hitze mentioned your work in my G+ stream during a discussion that sprang up while we were commenting on Josef Prusa's Occupy post.
I have NO familiarity with the mechanics of github (another area to study.... oh noooo)
But one of the dreams of the CubeSpawn project is a repository that is both machine accessible and human accessible and can reflect the component dependencies in a BOM for a widget of some sort
I just jotted down some hasty observations on the general general elements of a process here:
looks to me that using the template and the development tracker, most of the heavy lifting would be done to track the individual parts and processes in a given machine
Like this https://docs.google.com/document/d/1oxsmxsyRIiYMfeiawg2I4oFX-9JwC7R0fRF6l9Z3OsE/edit
only much better organized, machine readable and ready to go!!
I started building a site to do the same thing but I am no good at the backend programming that you do so easily. If you would like to collaborate on it this would be the great and we could get it up right away. The site is http://www.tangiblebytes.org you can read more about the goals http://forums.reprap.org/read.php?233,108249 and http://forums.reprap.org/read.php?1,149017,149450#msg-149450 . Also keep up all the good work, your tracker and instructions are great.
My concern at the moment is that there will be a flurry of activity whilst people attempt to build a replacement to Thingiverse after recent events. We'll then have a series of standalone repositories which either lie empty or are filled with duplicate information. My gut tells me that we should first pool the ideas of the community to determine exactly what it is we need (as a community!) before jumping into developing something. It's worth remembering that Thingiverse became the site it is today because the Makerbot guys invested a lot of time and effort, continuously, to promote and develop it. The actual coding part isn't the biggest obstacle (says the programmer!) but rather adoption and sustenance. When I threw together Development Tracker I did it to scratch my own itch and to learn the Gaelyk and GAE frameworks. However I still hoped it would attract some interest and perhaps become a hub for tracking reprap and 3D printing developments. It never caught on and one of the key reasons, I think, is because it was a realisation of only my ideas, rather than taking into account the actual needs of the community. I also didn't promote it very much as I'm not one for marketing and such, and these are the kind of things we have to keep in mind when considering a "Thingiverse" competitor.
I'm not knocking the idea of building something, simply that I think we need to gauge what's needed and then take it from there.
As an aside, one thing I am thinking about is whether it's possible to create some kind of distributed system, similar to bittorrent, which wouldn't rely on one central website or application, but rather collects the information from a network of "Things". Saying that, even with bittorrent though there are central trackers so I don't know if the idea will go anywhere.
From what I gather you could indeed utilise The github template and development tracker for what you want. You might also want to look at Josef Prusa's ThingDoc (http://www.slideshare.net/josefprusa/thingdoc) (https://github.com/josefprusa/ThingDoc) He envisages a documentation system that automatically updates, contains BOMs and Assembly instructions, and (I believe) is based on github. I can really image combining the gihubiverse template and his thingdoc to provide a living repository for a project - particularly large ones. Have a look at his slideshow and see what you think.
You could at least choose an original name instead of just copy and abuse of the ...iverse thing?
Thingiverse is just good and as you say, it's not about the program, you will need to spread the world with this ..
my mother knows thingiverse now , too late .
Well, I actually chose the name as a homage to Thingiverse because it combines the usefulness of both that site and Github. Note: I chose the name before recent events, and fully expect/hope people use the template and rename it to whatever they want.
Thanks for the nice template. I've tried to extend it a bit to support more than one design in one repository (http://t-paul.github.com/things/?design=webcam-holder). Are you planning to support this further?
Hi Torsten, that's a nice improvement, and nicely solves the problem of sharing one template across several projects, plus navigating between them!
In terms of support, sure, I plan on playing with it some more. I just wanted to get the first version out there so people (like yourself!) can hack on it.
I don't know if you're on Google+, but I posted about your modification there: https://plus.google.com/u/0/106465579732448802787/posts/WPcR1GjvFM4
Nice. So the best way to go would be to put my changes into a fork at github?
As for google+, latest Ultimaker post: https://plus.google.com/u/0/105358293156366941620/posts/1FsgETnEr6V :-).
Yup, Forking is the way to go!
gitorious is too a good alternative plateform : good terms and conditions, and free sofware platform
Wouldn't it, also, be pretty easy to write an app to go through Thingiverse; scrape all of the project data/files for every Thingiverse project with a CC license that allows this kind of re-use; and automatically drop that data into this system?
Scraping the data from Thingiverse would be pretty straightforward, and there are already a few projects on github that already do this.
The githubiverse template isn't suitable for accepting this data though, as it relies on there being a github project. Other thing repository sites could do this though.
The other thing I would be careful about: there are many useless Things on Thingiverse, test pieces, junk, spam etc. So indiscriminately pulling all that data into a new system would pollute it quite a bit.
Gary would you have any interest on using your template to develop an official open source alternative to Thingiverse? There is some talk about it here.
Hi James, I think my response to Sublime above sums up my thoughts at the moment, but I'll have a read of the thread and post a response when I get time.
In terms of the actual template, of course this can be used in whatever way people find useful.
STL File Viewing Arrives on GitHub #3dthursday « adafruit industries blog
[...] news from GitHub! Taking a look at this new option, and considering projects like Gary Hodgson’s Githubiverse templates, it is reasonable to expect that GitHub might well be on its way to being the place where many of [...]
Statistical Studies of Peer Production » Thingiverse charted – ‘things’ and commons hegemony
[...] the same time, an alternative for thingiverse was born. It is based on GitHub and is labelled as githubiverse described by Gary Hodgson. Another alternative candidate for thingiverse is cubehero.com. Neither [...]
An open source alternative to Thingiverse would be cool. Copying all of their content without checking with the creators of the content isn't cool.