Portál AbcLinuxu, 28. března 2024 15:06

Rozhovor: Miguel de Icaza - I (Mono)

13. 6. 2005 | Filip Vrlík
Články - Rozhovor: Miguel de Icaza - I (Mono)  

Otec Gnome, Mona a řady dalších projektů. Spoluzakladatel Helix Code, pozdější Ximian, dnes koupený Novellem. Jeden z nejvynalézavějších lidí 21. století podle The Times.

Miguel de Icaza přijel do Prahy z Mexika a já měl možnost s ním udělat rozhovor. Během snídaně jsem se dozvěděl spoustu šokujících odhalení a pohledů do zákulisí. No dobře, zas až tak strhující to není, ale pár zajímavých odpovědí ohledně "Mona" vám přinášíme v prvním díle.

  1. Filip Vrlík: Na jaké projekty se teď v poslední době zaměřuješ nejvíce? Mohl bys nám je prosím představit?

    Miguel de Icaza: Nyní nejvíce pracuji na projektu Mono, což je vývojářská platforma založená na .NET. Na této technologii je zajímavá její nezávislost na použitém jazyku. Mnoho lidí strávilo obrovské množství času nad tím, aby tato "virtual machine" byla dost dobrá.

  2. Něco jako Java, ne?

    Je to podobné Javě, ale zde je kladen velký důraz na podporu více jazyků. Například platforma Java neumí pořádně efektivně zvládnout jednu věc, a tou je podpora C a C++.

    Motivací pro Mono je produktivita. V minulosti jsme vytvořili Evolution a OpenOffice.org pomocí C++. Spousta problémů, kterým programátoři čelí dodnes, vychází z toho, že C++ je nízko-úrovňový jazyk. Musíte si vytvořit vlastní správu paměti a tak dále. Také je spousta problémů s narušením paměti: uvolníte pointer dvakrát, použijete buffer, který používá někdo jiný nebo tak narušíte paměť, kterou používá někdo jiný.

    Hledali jsme, Ximian hledal, platformu, která by se dala použít pro tvorbu velkých aplikací, jako je Evolution, v krátkém časovém úseku nebo s méně lidmi. Tedy buď tvořit rychle, nebo vytvořit více s větším týmem. Místo abychom teď Evolution vyvíjeli dva roky, zvládli bychom to za rok.

    icaza

    Podívali jsme se na Javu a C# a zdálo se, že C# zvládá to samé jako Java plus ještě něco navíc. Vždy když něco děláte, ať už je to cokoliv, tak je důležitý čas. Takže jsme to udělali takhle.

    Jak tedy vidíte, Mono je technologie umožňující běh různých programů pro desktop. Já se nejvíce zajímám o Linux jako o desktop, v podstatě vyvíjím pouze pro desktop, ale Mono pokrývá všechny oblasti. Já stále pracuji se skupinou desktop. Teď jsme měli obrovskou konferenci v Německu, odtud jsem teď přijel. Oni nepíší přímo pro desktop, ale já jim poskytuji nástroje. Postavili jsme GTK#, což je toolkit pro tvorbu aplikací pro Linux. Tvoříme designérský nástroj. Poskytujeme lidem kvalitní vývojářské nástroje a dokumentaci. Totiž, spousta lidí si stěžuje, že otevřený software má příšernou dokumentaci. My děláme dokumentaci pro Mono, snažíme se dokumentovat všechno, takže lidé mají dobré dokumenty. Snažíme se také zaplňovat mezery v Linuxu, tvořit věci, které Linuxu chybí, aby byl úspěšným desktopem.

    (Miguelovi zvoní alarm na mobilu)

    Tak teď jsem měl vstávat :-)

    (Miguel se nás ptá na abclinuxu.cz a na situaci okolo Linuxu v ČR.)

    Jedni z nejlepších programátorů, s jakými jsem měl možnost spolupracovat byli z České republiky. Dělal jsem s více takovýma. Já jsem z Mexika a... nebo jinak. Když se na situaci podívám z vnějšku, tak Češi jsou na open source scéně velmi aktivní, procentuálně dvakrát více přispívají a jsou velmi dobří. Možná je to díky systému vzdělání a školství.

  3. Díky školství, eh, to si nemyslím ;-). Ale každopádně moc díky. Tedy za ně samozřejmě :-)

    Nějaké novinky okolo Mona, nějaké konkrétní úspěchy v poslední době?

    Vypustili jsme Mono zhruba před rokem, asi před deseti měsíci. Dostává se do chvíle, kdy dospívá v solidní kód. Mysleli jsme, že 1.0 nebude použitelná, ale byla. Nebyla ale tak vybroušená jako je dnes. Vylepšujeme celkem dost, všechny detaily v Monu. Z používání máte dobrý pocit. To znamená, že je výkonnější. Pro výkonnost jsme toho v poslední době udělali dost. Práce, kterou jsme udělali, se bohužel neobjeví ve verzi 1.2, bude zahrnuta až v pozdější verzi. Jedná se totiž o opravdu velké změny v architektuře. No, nejde ani tak přímo o změny ale spíše o optimalizace; některé jsou velmi těžké a složité. Nebudeme tedy s to stihnout zářijový termín, jak jsme chtěli.

    Lepší výkon, stabilita, to jsou přednosti, které si ale lidé neuvědomují. Poučili jsme se z dlouho běžících serverů a aplikací pro desktop jako je Beagle. Ty jsou stabilnější, než si lidé myslí. Máme tedy tři přednosti, ale lidi moc nezajímá, že je to rychlejší či stabilnější, na tom jim nezáleží. Ale přicházíme s novou GTK#, která podporuje ještě více věcí v GTK. Máme nový toolkit, jež umí wrapovat jakoukoliv GObject knihovnu napsanou v C. Můžeme ji potom přímo použít z C#. Vyvinuli jsme propojení (bindings) do Evolution, takže jej teď můžete naskriptovat pomocí C#. Řekl jsem C#, ale může to být jakýkoliv jazyk podporovaný .NET (Python, Visual Basic, JavaScript, ...). Takže můžete mít Evolution plně pod kontrolou, naskriptovat jej, používat všechny mailové vlastnosti.

  4. Vidím, že obecně preferuješ C#.

    Ano. Já používám C#, ale další v týmu dávají přednost Pythonu nebo jiným. C# je nejlehčí z nich, protože C# v podstatě nemá run-time. C# komunikuje přímo s knihovnou, odpadá tedy prodleva oproti jazykům typu Python nebo Java, které navíc potřebují run-time. Myslím si tedy, že C# je nejlehčí, ale to neznamená, že na tyto vlastnosti musíte hledět při výběru jazyka. Já vždycky říkám, že C# je prostě jazyk, který znám, a tak ho používám.

  5. Někteří lidé mají podivný pocit z Mona - vidí Microsoft, jeho technologie zatažené do Unixu, problémy s autorskými právy...

    (Miguel se dáví houskou)

    Ne, ne, ne! Nejsou žádné problémy s autorskými právy.

    Dobře, tak tedy technologie Microsoft, jeho technologie a tak dále. Ale na druhé straně je dobré mít zadní vrátka pro případ úspěšného rozšíření .NET. Co na to říkáš?

    icaza

    No, já právě pracuji na úspěšném rozšíření .NET. Například, během zhruba devíti měsíců od vypuštění Mona bylo vytvořeno přes 40 desktopových aplikací. Minimálně jsme tedy dosáhli toho, aby programátoři začali psát aplikace pro desktop. Toto bylo v minulosti těžké.

  6. Co by nám třeba přineslo přepsání aplikace jako je Gimp do Mona? Vždyť to bude jen pomalejší, ne?

    Dvě věci. Za prvé si myslím, že bychom neměli přepisovat software, protože pokaždé když si řeknete, že přepíšete nějaký software, tak se pouštíte do mnohaletého projektu. Gimp má kořeny někde kolem roku 1996 a už jednou přepsán byl. Tuším, že to bylo v roce 1997, kdy byl přepsán z Motif do GTK. Ti samí lidé totiž GTK napsali. Mluvíme tedy o aplikaci, která má za sebou osm let vývoje. Nevěřím, že bychom měli investovat čas do přepisování kódu.

    Když bychom potřebovali rozšířit tuto aplikaci lepším programovacím jazykem, můj návrh by zněl - začleňme (embed) Mono. Mono je začlenitelné jako Python, můžete spojit aplikaci s Monem a rozšířit ji v Monu, ale nemusíte přepisovat původní kód. To by bylo na debug milionů řádků. Takže má rada zní - hotovou věc nechte být a jen ji rozšiřujte. Můžete třeba napsat nové vlastnosti v C#, ale zachováte existující kód. Myslím, že toto je cesta k úspěchu. Opravdu odrazuji lidi od přepisování. Byl návrh na přepsání Evolution, ale já řekl, že to nemá smysl, použijme bindings. Kód je funkční, odladěný, používá se, už je nasazený. Nemá význam jej roky přepisovat. Dělali bychom znovu stejné chyby, znovu jej odlaďovali a tak. Jsme jen lidé. Když už něco začínáte, tak to napište v Monu, a pokud už chcete rozšiřovat tak v Monu.

Druhá část rozhovoru, která vyjde za týden, se zaměřuje na GNOME.

  1. Filip Vrlík: On which projects do you focus mostly at this time? Can you introduce these projects to us, please?

    Miguel de Icaza: I work mostly on the Mono project. Which is a developer platform, based on the .NET developer platform. What is interesting about this technology is that it is independ on the language. Many people have spend enormous time by making sure that this virtual machine is good enough...

  2. Something like Java?

    It's similar to Java, but they have put an extra emphasis on multiple language support. For example, one thing that Java can't do efficiently is to support C and C++.

    Motivation for Mono is productivity. We have built Evolution and OO.org in the past with C++. And a lot of the problems that programmers face today are, ehm, C++ is very low-level language. You have to do your own memory management, so your application leak if you are not carefull. Also there is a lot of problems with memory coruption; like you free a pointer twice, you use the buffer that someone else is using, or you corrupt memory that someone else is using, and so on.

    We were looking, or Ximian was, for a platform that would be useful for creating large applications like Evolution in short amount of time or with less people. Either with less people or create more. Instead of creating Evolution that took two years to develop, they can do it in one year. We looked at Java and C# and it seemed that C# has the same as Java plus something more. Whenever you are doing something, whatever it is, time is important. So we have done it this way.

    As you can see, Mono was a technology to make things on the desktop happen. I'm most interested on Linux on the desktop, so, ehm, the reality is that I'm still developing for the desktop, but Mono means for any area. I'm still working with desktop group. We had just huge conference recently in Germany, I'm coming from there. They are not directly hacking desktop, but I'm providing tools for them. We have built GTK#, which is toolkit for building applications for Linux. We are making designer tool. We provide good developer tools for people and documentation. Many people complain that Open-Source documentation is terrible. We are working on documentation for Mono, we document everything in Mono, so people have good docs. We are trying to fill in the holes for thing needed to make linux successful on the desktop.

    (Miguel's mobile is ringing)

    That's my alarm. I was gonna wake up now, imagine that.

    Tell me little bit about your magazine.

    (I'm telling him about Abclinuxu.cz)

    I have another question. In each country is the situation with Linux different. How's Linux doing in Czech republic?

  3. It's not so good, but the situation is going to be better in my opinion. The community of Linux it's not so huge as in other countries. But it isn't bad and it's going to be good...

    I will tell you a story.

    Some of the best programmers I have had chance to work with were from Czech Republic. I worked with many different ones. Coming from Mexico... or this way, if you are looking from the outside not from the inside, Czechs are on the top, percently twice more than the others contribute to Open-Source. Maybe it is because of education system.

  4. I don't think so :-). But thanks.

    You have been talking about Mono. What are the news about Mono project? Any success recently?

    I think the most important thing is that... We released Mono last year, about ten months ago. And it's finally maturing to the point of being a solid code. We thought 1.0 will be never usable and 1.0 was usable, but it wasn't as polished as we have it today. We are polishing so much, every detail in Mono. So, you have better experience. Lots of polish. That means better performance, we recently have made a lot of work for performance. Some of the work we were doing will sadly not show up in 1.2, it's gonna show in the later version. Because of really big architectural changes, well not changes but some optimizations are very very hard. So, we are not gonna have it in September, as we supposed.

    Better performance, stability, right. Again it's a thing, I think, people don't really realize. We have learned from long running servers or long running applications on the desktop like Beagle desktop search. He was more stable than people think. Three big things, features, that people will notice. It's nice that you are stable and faster, but it doesn't really matter. But we are coming out with new GTK# which will suppport even more things in GTK. We have new tool to automaticaly wrap any GObject library, that you have written in C. And you can automaticaly use it from C#. We have developed some bindings to Evolution, you can completly script it with C#. I said C#, but it could be any language supported by .NET Python, Visual Basic, JavaScript or any other third party. So now you can control Evolution, you can script Evolution, use all the Evolution mail features.

  5. I see you prefer C#. Right?

    I prefer C#, because I just use it. But other people in the team prefer Python or others. So, they use that. C# is lighter, lighter of them, because C# doesn't really have a C# run-time. C# directly communicates with libraries. Well, in the case of Python, it has a boot code. Java has run-time and then the class libraries. C# is the lightest of them. But it doesn't mean you should choose it for this reason. It would be stupid, choose it only for this reason. My preference, being an old man, is to choose the one I know.

  6. People have strange feelings about Mono, they see Microsoft and it's technologies, problems with copyrights and so on...

    No, no, no! There are no copyright problems.

    So they see Microsoft and his technologies and they have strange feeling as I said. On the other hand it's good to have a backdoor or something in case of successful spreading of .NET.

    Yes, well, I'm working the successful spreading of the .NET on the Unix platform. Hmm, for example in eight months we realesed Mono they have created at least 40 desktop applications. At least we have succeeded in term how do we get programmers to starts writing desktop apps. Because it was hard in the past.

  7. If you rewrite some application, for example Gimp to Mono. What will it bring? It will be only slower, isn't it truth?

    Ok, two things. First - I do not think we should rewrite software, because everytime you say "let's rewrite the software" you are embarking in multi-year project. And it doesn't matter what language you are translating in. If they want rewrite a Gimp. Mmm. Gimp is a project, that has been around since 1996, maybe. It has been already rewritten one time, in year 1997 or 1996, because it was originaly written for Motif and then he was rewritten for GTK. These same people built GTK. And... so we are talking about an application that had at least eight years to mature. So this is very matured application. I don't believe we should invest our time in rewriting working code.

    Ehm, if we need to, if we need to extend this application with better programming language, my suggestion is to embed Mono, right, Mono is embedable language like Python. So you can embed Mono, link it with app, and then you can write extra code in Mono, but you don't need to rewrite the original code. It's millions of lines to debug. So my suggestion is not to rewrite but to fix box here and to extend it here. (rich mimics). For example you can do scripting from C# and write new features from C#, but you keep the existing code base, right. I think that's the road to success. I really discourage people who want to rewrite things. There was a suggestion to rewrite Evolution in C#. I told them: "don't do it, that's not the point, use the bindings." The code is working, is debugged, is in use, is in production. Why are we going to waste years to rewrite it and get it right? We would make the same mistakes so why exchanging some box for other box. We are human, right? So the point is, I am not suggesting people rewriting, I am suggesting - if they write new application, new ones, write it in Mono. Or extend existing application with Mono.

Seriál Rozhovor: Miguel de Icaza (dílů: 5)

První díl: Rozhovor: Miguel de Icaza - I (Mono), poslední díl: Rozhovor: Miguel de Icaza - V (Osobní).
Následující díl: Rozhovor: Miguel de Icaza - II (Gnome)

Související články

Rozhovor: Miguel de Icaza - II (Gnome)
Rozhovor: Miguel de Icaza - III (Gnome a KDE)
Rozhovor: Miguel de Icaza - IV (GConf)
Rozhovor: Miguel de Icaza - V (Osobní)
Rozhovor: Richard Stallman
Rozhovor s Vladimírem Mlynářem, ministrem informatiky
Živý rozhovor s ministrem informatiky
Rozhovor s Pavlem Cvrčkem z týmu CZilla
Czilla: živý rozhovor
Rozhovor: Petr "Pasky" Baudiš
Rozhovor: Dan Ohnesorg o CZLUG
Rozhovor: Proč je NAVRCHOLU.cz v Javě?
Rozhovor s představiteli neziskových organizací prosazujících otevřený software

Odkazy a zdroje

Miguee Portal

Další články z této rubriky

Michal Švec ze SUSE na téma Virtualizace a SLES
Rozhovor s Radkem Špimrem, IBM na téma nových serverů IBM Power Systems LC
Zpověď startupu na vlně IBM
ČVUT jako MIT? Lendl, Navrátilová, Jágr, Sáblíková, nebo absolvent FELu?
Práce vývojáře je dobrodružství

ISSN 1214-1267, (c) 1999-2007 Stickfish s.r.o.