GSoC 2013 - Registry Merging Project

orzhvs orzhvs at gmail.com
Fri May 3 03:05:49 CDT 2013


Hi.
    I'm applying for the Google Summer of Code 2013, this is my proposal
for the registry merging project.
    I'll work on improving Wine's registry in its stability and simulation
to solve frequently seen non user-friendly problems, which usually caused
by that application or system settings are not stored and fetched
correctly.

Project & My Understand:
    I'm most interested in the project "Registry - implement merging
between HKEY_CLASSES_ROOT and HKEY_CURRENT_USER\Software\Classes".
    Its core task is to implement RegOpenUserClassesRoot, which returns a
key token of merging view of HKCU & HKLM classes rather than present
returning HKCR Classes. The difficulity is that as a view of two
independent registry trees, how to treat conflicts and make changes to two
seperated entrys when using HKCR as root, and how to achieve the function
with no or least effect on other part of registry operation such as
RegOpenKeyExX. I have some seed ideas that maybe not mature but I like
solving problems initially from a burst port :
    Scheme 1. Registry operations based on hKey ( handle ) under
HKEY_CLASSES_ROOT will be degeneration to full path in text, like
"HKEY_CLASSES_ROOT\Subdir1", and try the operation after
"HKEY_CLASSES_ROOT" replaced with "HKEY_CURRENT_USER\Software\Classes" and
"HKEY_LOCAL_MACHINE\Software\Classes" in order, only the first success
operation will be applied. This may satisfy the demand, both for query and
modify. For details like the correct order, I'll make it out once get
working on it. In this way, the HKCR key subtree does not exist in fact but
only exists as a name.
    Scheme 2. After the base registry is initialized, build the HKCR's
subkey trees with a new pulled in object type (say it 'symbol link') that
directly point to the correct keys from HKLM or HKCU. Thus operation in
HKCR tree are redirected to corresponding branch internally. When operating
the HKCR itself, like creating new subkeys direct under HKCR, the operation
is redirected to HKCU classes. This scheme seems more fluent but needs some
tricks in the server part.

What I'll Do :
    First of all I'll do a lot of tests on pure winows registry to definite
my questions and guesses, write one or more test reports on different
version of windows, some of which is already being done now.
    Followed by I will design the algorithms and data structures and make a
complete development planation.
    Then enjoying coding and debuging Wine. I love the procedure, during
the longest part of this project, keep writing daily report.
    Got the plan finished, I will applying improvement.
    Finally strict tests will be done to show if I achieved the final goal
and a conclude paper will be carefully submitted.
    I'd like not only settle down the main project, but also several ideas
to make Wine better, which are found in my daily use of Wine, such as add
support for the shell context menu in Wine explorer for many convenient
shotcuts of some software like the famous 7zip. I'll do this once time
allows.

Why Me :
    I myself is a faithful user of Wine. I know the thought of Wine and
know not only basic usage but also a little implement of it.
    I understand Windows registry both Windows API pretty well from nearly
8 years coding. Have done much test and hooks in windows including RegXXX
in advapi32.dll or lower level NtOpenKey in ntdll.dll. Further more, I used
to do some kernel debug tests and hacks on registry, like hiding,
protecting a subkey from regedit, resolving values from hive file rather
than using API. These things are done under interests. I've been learning
Windows API and OS theories from books and network like msdn for long.
Ofcourse there will be no problem in registry knowledge.
    It's usual for me to write codes more than 1000 lines a day, for self
use or for the competation ACM. I believe that I'm a careful man in codes
and other things, I like discovering, guessing and proving.
    To prove I've developed a not too bad coding style, please refer to my
submisions on codeforces http://codeforces.com/submissions/adnim (to view
code click numbers under column "#").
    And this may be a little evidence denoting that at least I've used git
before, https://code.google.com/p/eryapass/
    I know what should I do and what should not. I'm sure aware of the
legal requirements. All of my tests will be done only in the black-box
ways. No reverse work on Windows files is allowed and needed in Wine
project, though I'm good at that. All codes will be written creatively and
nothing will be copied from existing ones like WRK, RcactOS or something
else.
    I love open source. I benefited much from the open source world and I'd
be really happy to contribute to it one day.
    The last but most important, I'm much willing and I'm looking forward
to throwing myself among the crowd of codes this entire summer, making
maxium effort to improve Wine. I'd like schedule my personal activities to
avoid conflicts with the development, meaning it won't be too busy in my
schoolwork.

Wine & Me :
    In my childhood, I've been coding in F-Basic on Subor (a kind of
TV-based computer made in China) when friends are playing football in yard,
at about 8 years old. When I was 12 years old, i was building some little
games to happy classmates, and have learned c and c++ 2 years latter, then
x86 asm 2 more years latter. And have done some graduation-designs for
college brothers before I got to university. Also I've developed some
projects for local companies. I first installed Ubuntu in 2010 and
gradually I'm interested in open source projects.
    I'm 21 years old now, studying software engineering in Shandong
University of Science and Technology in China. I'm a really enthusiastic
user of Wine, who has been using it from version 1.2 to 1.4, on ubuntu,
debian and gentoo. Since the first day I apt-got it I could not help trying
all applications I used in Windows to it and making them running stably,
during which I have learned much about configuring Wine. Another day I
began to emerging that and I was once deep interested in building my
customed Wine and Wine based tests.
    I heard about GSoC last year but missed the time. This year, I decided
that I will try my best to contribute, transform my ideas to powerful codes
that people will run with satisfaction. Please do not hesitate to contact
me.

    Thanks.
    Guo Jian
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://www.winehq.org/pipermail/wine-devel/attachments/20130503/fda53ed6/attachment-0001.html>


More information about the wine-devel mailing list