by frik85 | November 28, 2006
Interview with Magnus Olsen by Klemens Friedl
This is the third in a series of interviews with ReactOS developers. In a few weeks we will have a nice collection showcasing the talent of the people behind ReactOS.
Magnus Olsen, born in Skarholmen, Sweden in 1976 been involved with ReactOS since year 2002 and contributed to a lot of different parts throughout the project since that time.
How did you get involved with ReactOS?
I joined the ReactOS project as a developer, after I finished some project and had searched for different open source projects. I had known ReactOS and have had my eyes on the project since 2002. I wanted to start a personal project, an operating system which is compatible with windows. Although, I realize that it is impossible to code such an operating system as a single person in a reasonable timeframe. I had to choose from several projects I found which has as goal windows compatibility. Wine, WineX, EOS, Moblius, ReactOS and some more projects. Wine and WineX, both had been the highest rate of windows compatibility in comparison to the other projects, however I disliked the idea of running windows apps on Linux. Unix (and above all Linux) were not suitable for normal user. Then I looked at EOS, this project is using the Linux kernel and code from ReactOS, Wine and some other project, although I didn’t like that project either. So I had to choose from two projects: Mobius and ReactOS. Both have had the same goal to create a windows compatible operating system (applications and drivers). I compare the differences between: which kernel design, how many developers, which license, etc.. The Moblius project only had 2-3 developers and ReactOS in contrary a lot of more. Additionally Moblius was aiming at Windows 9x and ReactOS at Windows NT. The choice was easy; I decided joining the ReactOS project and write some assembler code to start with, that was in 2003. Then I disappear over one year from ReactOS because of personal reason. However Aleksey Bragin convinced me return and I have committed a lot of work I have done. It has been a lot of DirectX headers and other stuff.
So up until that point you'd been programming for Windows?
I have been programming on the Commadore platform Amiga, C64 and PC. I have never given up programming on any of this platform. Sometimes I also code on other platforms.
Did you have any Windows experience? Or did you just learn it as you needed to?
I have a lot of experience with Windows but I also took the time to study some areas that were new for me before I started writing code or I asked for advice and let the code improve with the time. That's fun, working on ReactOS.
Fun with ReactOS
What's your favorite area of ReactOS to work on?
DirectX, when I have time for it. When it comes to kernel stuff of DirectX, however it's not fun to write the actual user mode dll files. It is most boring thing to do and most complex part of DirectX, as far as I know.
What's been the most challenging work you've done?
Most challenging? I do not know, maybe DirectX, on which I spend most time on; maybe the bugfixes and new stuff in win32k.
If there is one thing you'd like to see ReactOS do, what would it be? Or has it already been done?
I want to see Final Fantasy 7 and Guild Wars working, that's the only games I am playing in my spare time. That's also one of the reasons, I am working on DirectX.
What parts of ReactOS do you really like?
I like Win32k, it is so complex and fun working in and fixing bugs.
You've been involved with ReactOS for a while, and you have been active for some time recently. Any particular reason why?
The only reason I am active in ReactOS, I find this project fun, and if there was not certain person, I would probably had quit this summer as developer of ReactOS. A lot of drawbacks happened early this year and the discussions which lead at the end to a source code auditing and a lot of regressions. However I think we have almost managed to remove all known regressions of ReactOS and it got more Windows compatible at the same time.
Before this recent activity, what was the most significant contribution you made to ReactOS?
I do not know. Maybe fixing bugs and implement "strechblt", and fixing some kind of DirectX support to ReactOS. But, as I said before, I do not know.
Are there any areas of ReactOS you haven't worked on?
Hard to say, I am avoiding "ntoskrnl" [editor's note: the ReactOS kernel], writing code or bugfixing it, because I do not know internal details how it works exactly. Ntoskrnl is extreme complex same the same goes for win32k, although with this one it is pretty easy for me fix bugs and implement some new stuff.
What was the most interesting addition you've made to ReactOS?
DirectDraw hal-support document how to use it. So you do not need to read whole MS msdn and MS ddk documents. And some parts of msdn are wrong, for example which member of a structure you should use, or wrong versions of structures. So you have to look at MS sdk and dx sdk how the structure looks like before you write a code. And of course use your brain.
Are you working on any major ReactOS projects right now?
Please have a look at the current "ReactOS status report", for what exactly I am planning and what I’m trying to concentrate on and follow. In spite of this, I am always doing sidetrack projects as well which are not included in the plan. Sometimes I find such projects more fun for a short timeframe, and as I mentioned before, I like having fun when I code.
In addition to everything else, you're pretty active on the ReactOS mailing lists and irc channels. Does that consume a lot of your time?
Yes it does, but it is important to stay in touch and talk with users and developers of various stuff and have fun. I use most of my free time to ReactOS development.
Have you worked on any other parts of ReactOS?
I am working on a lot of parts of ReactOS, it is hard for me say which part I have not looked at or write code. You need check the changelog in ReactOS svn.
What kind of development environment do you use?
I’m using Windows 2000/XP to build ReactOS. The obvious question people ask about ReactOS
Is why would someone ever want to run a clone of Windows? Why not just run the real thing?
ReactOS is free and open source and you can go into the source code and fix the bug and send the patch to ReactOS. You can report bugs in ReactOS and they will be fixed, some bugs being fixed fast other bit longer time is need to fix them. And if you report to MS about a bug, it will probably take an extreme long time before they fix the bug or do not care fixing it. That's the different, in ReactOS we care about a bug and want all bug be fixed. Sometime it is missing implementation of some thing and if something is missing of an implantation of an API or a stack like USB or network it take time getting it ready, to implement API xx. At moment in release 0.3.0 ReactOS got stable network support. And of course USB stack but USB stack is not ready and it is only good enough for USB mouse and keyboard. In ReactOS 0.3.1 the USB stack will be improved and capable of more, like USB storage. There are so many good things and reasons to for ReactOS. By the way, can you say me why people want a unix clone?
So why is the TODO list the way it is?
We working on what we like and sure also on parts which are not so much fun to work on. We try to agree on a roadmap for each release. Developer x wants to fix y, developer x2 wants to implement some new API and so on. We do not control what each developer should work on, everyone should be able to do what he feels is fun.
Are there any major tasks you're planning on taking on?
I have already one heavy task and do not plan take any more such heavy tasks. But I will take smaller task.
If you could add 'one' feature to ReactOS, what would it be?
At moment, I have some ideas in my mind, but they are not definite yet.
Is there anything you wish ReactOS could do, but can't?
Many things, for example I want USB memory stick get working. Aleksey is already working in this area and we might see USB storage in ReactOS 0.3.1 :-)
Do you ever wish there were just more developers?
Yes some more developer should not hurt. We really need more developers to speed up the development process. So if you are a developer and want work on the ReactOS project, join the #reactos irc channel and/or the ReactOS mailing list, visit reactos.org for more information.
Are there any other things you think ReactOS needs to concentrate on?
We need to concentrate on everything. But each developer can concentrate on what he loves to do.
Do you think .Net will render ReactOS obsolete?
No, I don't think that at all. ReactOS will use Mono or dotGNU as framework for dotnet and that make us in same league as MS Windows. We will see in near future which project fits best for ReactOS needs.
Do you think .Net will render WinAPI obsolete?
No, I don't think so, because the MS dotnet framework use the native Windows API, it's like a layer on existing API.
What area do you think needs the most development right now?
We need concentrate on getting more network apps working and getting rid of some graphic bugs in win32k to gain more apps working and get the graphic the right way. But when I talk with people they want see USB and use USB memory stick in ReactOS and ReactOS should be able to boot from USB storage devices. When I talk with companies they often answer they want to see samba network support in ReactOS. ReactOS 0.3.1 may come with support for USB storage devices and samba-tng.
Microsoft will release DirectX 10 in near future, are there any significant additions in it?
Yes there are, the DirectX driver working different in kmode ["kernel mode"], but the move some API to user mode and add new way how directdraw/d3d enumerate from win32k. I do not know if MS will change that for windows XP or not. I had no time to look into that.
Congratulations on all the accomplishments so far and thanks for the interview.