Githubiverse – A Github Pages Template for 3D Printing Projects

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.

githubiverse

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:

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

Further Ideas

 

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!

23 Comments

  • Pingback: Using Github To Track Hardware Projects By Gary Hodgson « openalia

  • September 20, 2012 - 11:23 am | Permalink

    Excellent idea.

    Just deleted all my things because of occupy thingiverse and will move on to this solution.

    • September 20, 2012 - 12:21 pm | Permalink

      Glad you like it. Let me know if there’s any problems, or if you think there are missing features.

  • Pingback: Makerbot, Occupy Thingiverse, and the reality of selling Open Hardware - Hack a Day

  • flink
    September 20, 2012 - 3:15 pm | Permalink

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

  • September 20, 2012 - 11:13 pm | Permalink

    Hi Gary!

    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:

    https://groups.google.com/forum/?fromgroups=#!topic/cube-spawn/HOeiasytZI4

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

    feedback appreciated!

    James

    • September 23, 2012 - 7:30 pm | Permalink

      Hi James,

      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.

  • September 21, 2012 - 10:06 pm | Permalink

    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.

    • September 23, 2012 - 7:29 pm | Permalink

      Hi Sublime,

      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.

  • proman
    September 24, 2012 - 9:39 pm | Permalink

    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 .

    • September 24, 2012 - 9:56 pm | Permalink

      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.

  • Torsten
    September 25, 2012 - 7:30 pm | Permalink

    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?

  • Cédric Doutriaux
    September 30, 2012 - 7:01 pm | Permalink

    gitorious is too a good alternative plateform : good terms and conditions, and free sofware platform

  • Shawn Blaszak
    October 3, 2012 - 8:30 am | Permalink

    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?

    -Shawn

    • October 3, 2012 - 9:55 am | Permalink

      Hi Shawn,

      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.

      Cheers,
      Gary

      • Laird Popkin
        April 8, 2014 - 10:55 pm | Permalink

        Note that scraping Things from Thingiverse violates the IP rights of pretty much every single content designer on the site, and violates the terms of use of the site as well. The authors of the things gave Thingiverse the right to serve the Things, but that gives no rights to anyone else to copy and redistribute the things. The exception would be that the you could check the license on each thing, and if it’s a license that allows for unlimited redistribution, then you could use that.

        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.

  • October 16, 2012 - 3:44 am | Permalink

    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.

    http://forums.reprap.org/read.php?1,160251

    • October 16, 2012 - 2:12 pm | Permalink

      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.

  • Pingback: STL File Viewing Arrives on GitHub #3dthursday « adafruit industries blog

  • Pingback: Statistical Studies of Peer Production » Thingiverse charted – ‘things’ and commons hegemony

  • Leave a Reply

    Your email address will not be published. Required fields are marked *

    You may use these HTML tags and attributes: <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <strike> <strong>