Debian

Wiki

Login
  • FrontPage
  • RecentChanges
  • FindPage
  • HelpContents
  • AndreasSommer
Debian
Wiki/
  • Login
  • Comments
  • Info
  • Attachments

  • SummerOfCode2012
  • StudentApplications
  • AndreasSommer

  • Name Andreas Sommer

  • Contact/Email: mail/chat

  • Background: I'm 24 years old and studying for my M.Sc. in Informatics at Technical University of Munich, soon entering the fourth and last semester. Before that, I did a dual Bachelor study, i.e. alternating in three month long phases between studying at DHBW Stuttgart and working in internships for Hewlett-Packard (that's a special study programme in Germany, btw). In my free time and also in my current work project, I am trying to get more into using and programming open source projects. While I started reporting bugs and solving "easy pickings" some years ago, I still would like to participate in something bigger. Own projects such as Site Deploy (includes Debian/Ubuntu packaging) or the recently created NSiege (simple benchmarking library for .NET) were/are a good start. I can imagine working in an open source flavored company later on, and also made plans to probably apply at Canonical (or honestly any company that does some cool software engineering with work from home office because I don't know where my girlfriend and me will move when she's finished her programme... see "Other summer plans").

  • Relevant skills In the last years I became an expert in Python, and through university and work projects also in C#, Java and others. I already worked with the Django web framework a lot - for example I created an application "Sportmap" (not public) for easily tracking my running routes without a GPS device using map tiles from Google Maps, OSM and others (application allows to store and reuse parts of a track, thus having a complete route in usually less than 50 clicks; heavy use of ?JavaScript). Like most Django beginners, I worked a bit on a blog (more exactly, porting my PHP-based blog), and recently created a mini-me version of bit.ly for administering permalinks on my soon-to-come website. My aforementioned project Site Deploy supports deployment of Django sites, and even allows to automatically adapt the settings so that a site can be mounted on a different URL path than just "/" without problems. Regarding that, I have my own VServer running on Ubuntu Server (previously Debian) and thus have experience in system administration. From internships at HP, I also gained some experience in using chroot+debootstrap - in that case for the purpose of creating images for running on Xen.

  • Project title Virtual Image creation web interface

  • Project details: A web interface for building customized Debian images (e.g. for use in the cloud) shall be implemented, using grml-debootstrap for filesystem bootstrapping and a web framework like Django for the web application. It must be usable by persons without programming or deep technical background and allow selection of packages (or package groups as in tasksel) and other customizations (scripts, branding, patches to configuration files).

  • Synopsis: Web interface for creating customizable Debian images, using an image creation backend

  • Benefits to Debian For users: A user can create a personal template ("descriptor"), select the Debian version and then just download his personalized image. As an example, whenever I install Linux somewhere, I immediately install vim-full, change its settings to use 4 spaces instead of tabs etc., change root's shell to red, my shell to green, and so on. If implemented correctly, I can even select my old descriptor for Lenny, select the output version to Squeeze, and hit OK without (m)any changes. For companies and sysadmins: They might create a greater amount of images, e.g. for use in the cloud. Predefined package groups such as in tasksel will make it easy to create a Debian image for a specific purpose (e.g. web server or DB server appliance). VM configuration files (e.g. VirtualBox's .vbox files) can be attached to the download. Images for the same descriptor can be cached so they don't have to be recreated every time. For experimenters: It will be easy to create your own distribution, selecting different packages. For instance, wouldn't it be cool to have a minimal Debian with only XBMC running on a Raspberry Pi?

  • Deliverables: Backend library for creating Debian images (based on chroot and grml-debootstrap, can use Linux tools to pack chroot environment into an image), task queue running image creation, descriptor format (possibly JSON), web interface for defining descriptors (package selection, file patches, branding)

  • Project schedule:

    • April 24 - May 13 [3 weeks] - Preparation and architecture design/discussion

      • Get in touch with mentor about his view on the idea (what are his requirements? what to focus on? what use cases are imaginable? what is a must, what is nice-to-have?)
      • Read up about and try SUSE Studio (what's its architecture? anything reusable?)
      • Learn more about how grml-debootstrap creates images and how it can be used (CLI? language bindings?)
      • Study how package information can be retrieved using apt bindings (and probably usage statistics from the "package survey" if such data should be available)
      • With the detailed requirements at hand, write technical project proposal, including all technologies I want to use (e.g. Django)
      • Discuss it with my mentor, change proposal accordingly
      • Clarify miscellaneous questions (e.g. license to apply, project repository hosting, form of documentation such as Sphinx, relevant mailing lists to subscribe to, am I responsible for web design as well?)
      • Discussion of time plan and additional deliverables (presentation?)
    • May 14 - May 20 [1 week] - Architecture and hands on debootstrap

      • Start with the most important parts of the architecture as described in the "final" proposal
      • Create projects and VCS repositories, try to reuse settings from my own projects (e.g. for Django)
      • Split up components in a nice way (as applicable), in other words: Plan the fine-grained Python module architecture
      • Create an own Debian image and test it in VirtualBox (as mentioned, I've done this before for Xen but not with grml-*)

    • May 21 - May 25: My birthday, and then my girlfriend's birthday. Time to have some fun!

    • May 26 - June 3 [1 week, 1 day]

      • Hacking begins!
      • Create a very simple descriptor file for testing (e.g. only including the Debian distribution version)
      • Create a parser for it
      • Start implementing the creation of a minimal (non-customized) image using Python
    • June 4 - June 17 [2 weeks]

      • Implement possibilities for customizing the image, add options to descriptor format accordingly
      • Add unit tests therefore
      • Milestone: Image creation working with many of the defined features (i.e. customizations), report progress to mentor, clarify and misunderstandings in the implementation thus far

      • Begin creating the web frontend and task queue
    • June 18 - July 1 [2 weeks]

      • Continue implementing image customizations
      • Implement backend library and web frontend as necessary
      • Milestone: Have at least package selection and a basic web frontend working

    • June 2 - July 22 [3 weeks]

      • Finish backend and web frontend (no details here, this can't be planned)
    • July 23 - July 29 [2 weeks] - Testing

      • Try on actual hardware and/or on a hypervisor
      • Related bugfixing
      • Milestone: Backend and website working hand in hand on a server (I could run it on my VServer, for instance)

      • Demo for mentor, talk about what's necessary for submission
    • July 30 - August 12 [2 weeks] - Finalization

      • Discuss about remaining problems or bugs that turned up in the demo
      • Optimizations (performance? caching?)
      • Milestone: Remaining bugs from last milestone fixed, documentation etc. all finished for submission

    • August 13 - August 20 [1 week, 1 day] - Pencils down buffer time

      • If time remains
        • Fix small bugs, clean up code
        • Make things shiny (web design)
        • Probably implement nice-to-have features
        • Improve documentation
  • Exams and other commitments: No exams, finished with everything in my study programme except for the thesis. I am working on my master's thesis in the meantime, but I have always been good in planning my time and wouldn't apply if I didn't know that I can manage both without any hassle. In fact I'm already making great progress with my thesis (started in early February), and the deadline is far away in October. As I mentioned a "work project" before - I'm doing the thesis together with the company, but working independently, and apart from the thesis there won't be any time effort necessary for the company. You can contact me if you don't trust me on this ;)

  • Other summer plans: "Are you getting married?" - Close enough, I'm moving to my girlfriend in Ireland at April 4th. There I will work on my thesis as mentioned above. No other big plans over the summer, as my girlfriend will be busy with exams and work.

  • Why Debian?: I like the way the whole OS works together. Packaging being done by a myriad of people around the world. It just works (okay, if I don't add "unstable" :D). And I'm using Debian-based distros for a long time, also for myself.

  • Are you applying for other projects in SoC? I did actually propose my own project idea to Ubuntu for the Bazaar VCS (mailing list thread), but unfortunately Ubuntu had some organizational issues and does not participate in GSoC this year. But I thought I would find another interesting project, and here I am. I choose this project because it caught my eye from the start - this is something I would actually use myself, and I can learn a lot from it. EDIT: Also applied for the Monkey web server project (Git protocol support).

SummerOfCode2012/StudentApplications/AndreasSommer (last modified 2012-04-01 20:37:00)

  • Debian privacy policy, Wiki team, bugs and config.
  • Powered by MoinMoin and Python, with hosting provided by Metropolitan Area Network Darmstadt.