Current-Users archive

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index][Old Index]

[GSoC 2011]: Sysinst alternative interface

Hello, NetBSD users and developers!

I have found the GSoC idea to rework the sysinst for a better user interaction very interesting and would like to discuss the possibilities of working on it. I have previously sent a mail to tech-install but for some reason it didn't reach the list and. Martin Husemann was the only one who contacted me because I CC'd him, we briefly discussed the idea, but didn't come to a conclusion and he did not reply to my further messages.

What is the goal of the project?
The goal is to refactor the current NetBSD installer to provide an X-based user interface and possibly separate installer frontend and backend. A bit of googling shows that effors to factor out the common code into a separate library was taken during previous years, namely, install-tool for GSoC 2008, so one step would probably be identifying the results achieved by previous projects. The alternative approach might be adding some kind of callbacks so that X installer wraps text-based one but it may not allow to do the fancy stuff X installers usually do, like turning to the previous page.

What will be the deliverables of the project?
I expect to provide the NetBSD project with the following output:
1. A set of patches for the sysinst
2. Document the process of refactoring and write man for the new installer
3. New X-based and text-based installer frontends to work with the modified installer code

Timeline and milestones.
1. Community bonding period
-> Studying current sysinst and menuc code
-> Research ways to separate installer logic from the user interface
-> Discussing the implementation ideas with mentor(s)
2. May 24 - June 23 - working on coding the installer part of the project
-> Factoring out common code into the library
-> Fixing text installer frontend to work with the library
-> Writing X installer frontend
3. June 25 - July 10 - preparing for mid-term evaluation
-> Receiving review from mentor(s)
-> Testing the code and binaries, wikifying the information on the project so that other members of the community can join in and test
-> Bug/Design fixing
4. July 11 - August 6 - further development and integration
-> Add/Modify installer behaviour based on the feedback I receive after testing
-> Build installation CD for i386 to serve as an example of using new installer
-> Clean up makefiles, write manual pages
-> Prepare patches for the software modified
5. August 7 - August 15 - preparing for the final evaluation
-> Receiving review from mentor(s)
-> Testing among the volunteers from the community
-> Fixing newly discovered bugs and other issues
6. August 22, August 30 - submit information and code to Google as specified by the GSoC timeline

Here are some notes on the implementation
1. Separate the existing installer logic from representation
-> Move installer code to a separate library
-> Define the interface between the installer and user interface. For example, structures for passing ui <-> logic callbacks and events and dynamically choose one of them (this can be done via probing available representations via dlopen or defined at compile time)
I do not like the proposed idea of using #ifdefs. Mainly, because supporting it will duplicate code and make building the installer more complex.
2. Implement installer frontends
-> X based installer. using XCB or lightweight toolkit like fltk to make it consume little space on the installer cd and run with low memory footprint to be used on legacy and embedded systems.
-> Reimplementing current text-only interface in case the decision to split backend and frontend is made.
3. Make UX nicer. As we're building the X-based UI, we can add wizards to difficult operations like partitioning and warnings to hint users of potentially difficult actions. This will allow the new users to adapt quickly. Also it could be worth adding the ability to select package groups for common tasks as done in Fedora Core installer or at least as in Debian, to allow to quickly configure the installation for a NAMP server or a laptop installation.  

I think that the project will be beneficial to the community because it will allow to bootstrap different kinds of systems faster which is important for a cross-plaform project like NetBSD.

Now a few words about me. I'm currently a student of Software Engineering department at the russian National Research University - Higher School of Economics. I'm in my second year now. I enjoy learning new stuff about open source projects because I like to get to know how things work and I like hacking on *NIX stuff, especially, Linux kernel, and graphics (qt/gtk, opengl). I also enjoy learning different programming languages because they help you understand how other people express their ideas and what they have in mind when writing code.

Now that i'm planning to work on this project, I should tell you some details about my schedule. As stated in my timeline, i'll begin working on may the 24th, not the 23rd when the program officially starts. That's because I will be working on my coursework project at the university during spring an will be presenting it at the university on the 23rd. Also please note that I may have to miss 3-4 days at the end of June, because I will be having exams on that date, and a week in August because I may be going on a vacation, but if that happens, I will warn my mentor(s) at least two weeks in advance.

Some of the recent projects I have been working on are connected with reverse-engineering embedded devices and I'm currently involved in the XDANDROID project ( My personal contributions include reverse-engineering several drivers (led/pwm, usb phy power control, camera sensor), porting code to the new codebase (from kernel 2.6.27 to 2.6.35) and porting the open-source bootloader LK to allow booting off internal memory ( I was previously involved in upgrading the linux project for FSC Loox 720 PDA. My personal project was porting Linux to Asus P525 PDA (status page is So, you can see that I mostly work with low level stuff and have some experience at bootstrapping system, but I also like to explore anything new... except web programming...

As for my experience with NetBSD, it is not very long. I have been using it on my secondary PC for about a year. Unfortunately I have not been into any kind of development here, but I am willing to get involved. When setting up my box, I have compiled most of the software from sources. I have also used the Gentoo distribution before and have recompiled the kernel in FreeBSD, if this is relevant at all. I have not yet created any package for pkgsrc, but I have built a debian package together with my friend Oleg Kravchenko for his printer driver, which is available at his site -

As for my experience with X, I can tell that I have only played around with raw X widgets, but I have experience with Qt4 and GTK (also GTKSharp, used it for my coursework project last year) and have programmed UI in Microsoft WinAPI, so I understand how event processing and ui building works and think that adapting to XCB/XLib won't take much time.

Sorry for such a long and late letter, but I am willing to hear your response.

Regards, Alexander

Home | Main Index | Thread Index | Old Index