Here’s the only recent and still valid book for Mono: “Mono: A Developer’s Notebook” by Edd Dumbill and Niel M. Bornstein. The book is under O’Reilly’s “notebook” series, which are meant to be books mainly consisted by notes. Here’s our quick review.The foreword of the book belongs to Miguel de Icaza, founder of the Mono project. Then, the book quickly presents Mono and MonoDevelop and how to install them on the various supported platforms.
Then, you get into the meat of the book, introduction to C# itself and .NET/Mono. GTK# is next, where you learn how to create windows, menus, graphics and add widgets with or without Glade. In the advanced GTK# chapter you will learn about GConf, how to render HTML, interact with the Gnome subsystem, create installation wizards etc. XML is following along with a quick chapter about ASP.NET and web applications. At the last chapter, you will learn to use the GNU autotools, how to run Java with Mono, how to use generics, how to use Basic instead of C# and more.
The book’s style is divided into the actual topic at hand, the “how it works” explanation, “where to learn more” section, “what about…” which explains common pitfalls, and the little notes left and right of the main text, in italics, giving that impression of a “note”. As of the writing style, it is clear and to the point, easy to understand and to follow. However, to fully follow the book, you will need not only MonoDoc (the mono API reference) but also a .NET reference guide, as MonoDoc is pretty incomplete.
This brings us to the main problem of the whole Mono experience in conjunction to this book. While Mono 1.0.2 and its C# implementation is optimal, Mono’s surrounded dev tools are incomplete (debugger, beta IDE and less than satisfactory Glade/integration) and what’s more, documentation/tutorials are even more incomplete. This situation would make this book the ultimate book for Mono, but the fact that it was not written with this in mind, removes some points of its overall usefulness. I would much have prefer to see a 1000+ page “Mono Bible” book that takes both the new and experienced developer by the hand and guides him/her through Mono and GTK/# from Alpha to Omega. This is a step much needed to assure more new developers join Mono.
Mind you though, even at the current state, the book is extremely valuable for experienced Java or C++ developers who want to jump into GTK# and Mono. If you already have OOP experience with the above said languages, then this book is a must-have. But if you are a complete newbie, you will definitely need an additional book to read first, a book that would guide you through C#, and after that, you will need to study some existing GTK# open source code out there to learn more. But no matter in which experience point you belong, at some point in your Mono adventure you will need to purchase this beautiful book anyway.
Overall: 9/10
Buy “Mono: A Developer’s Notebook“ at Amazon.com |
Special thanks to co-author Edd Dumbill for signing my book copy!
one more for the collection, and it fit the budget nicely considering it was 10bucks (used, from a friend)
The first pass at Gtk# 2.0, which is based off of Gtk+ 2.4 should be hitting cvs soon.
Despite the emphasis on Mono, this is the best GTK+/GNOME development book on the market, even for developers who do not want to use Mono. The book could be ‘ported’ to any of the major GNOME bindings – C, C++, Python, Java – and still be fantastic, because it is just so clear, informative and concise. Bloody good job, Edd and Niel. 🙂
For a beginner?
Or anything good online as a start? I guess with more a mono gtk# focus rather than learning window.forms
Jeff,
Do you really mean that? Do others concur? I am trying to get into GTK+ development with C (I want to eventually work on Glade3), and am currently using The Official Gnome 2 Developer’s Guide, which isn’t bad, but definitely could be better. Would it be worth it for me to find a copy of this book to guide me through GTK+ development with C, or am I better off sticking with the Official Guide plus the online tutorials/API reference?
-Andrew
The author meant C#. Windows.Form isnt covered in the book.
For a beginner, with no experince in programming or OOP, try http://www.functionx.com/csharp/Lesson01.htm [down ATM] or the other great tutorials on http://www.programmingtutorials.com
If you know Java, Mono is remarkably easy to get into – it only took me an hour before I had mastered basic usage of Glade and C#.
Use the monodoc packages – they’ll give you a quick start and the tools to help yourself along the way.
-Erwos
The thing I would love is a book covering all of GTK and gnome in respect to c#. The hardest part for me has been trying to figure out how to develop to GTK and gnome in general (I’ve tried some of the widgets and been unable to find good documentation for them).
That said making a gnome application defenitley is simplified greatly thanks to mono (I’m guessing python is a pretty good language too but I’ve heard the documentation is pretty bad for gtk, gnome bindings).
Also all GTK stuff should be documented before the release of GTK# 2.0, this is great news for me atleast.
Next is what the future holds (from what I’ve gathered):
First is the already mentioned gtk# 2.0 which bind to the 2.4 api. I wonder why they arent’ following the same versioning? Seems like it would be much more clear.
Next will be a UI built into Mono Develop for the debugger, next version I think.
Lastly will be the best part, the UI builder specifically for mono, that I’m guessing will be built into MD as well.
When all these are in place, more specifically the last two, then developing usin mono should be much simpler indeed.
It doesn’t cover a bunch of whackass C stuff you need to know, so you’ll still have to ask questions and read other documents around the place. But for learning the fundamental ideas, it’s great stuff. Well worth reading, even if you’re targeting another language.
I’ve found the python tutorials and references to be good info for gtk+ info.
Frankly, if you’re just starting out with gtk+ it might be a good idea to learn the api with a higher-level language and then move onto C at a later point. The interactiveness of Python would make it pretty fun.