InfoQ

InfoQ

News

My Bookmarks

Login or Register to enable bookmarks for unlimited time.

The content has been bookmarked!

There was an error bookmarking this content! Please retry.

In Case You Missed It: A .NET OpenID Library

Posted by Jonathan Allen on Feb 23, 2007

Sections
Development,
Architecture & Design
Topics
Interop ,
.NET ,
Dynamic Languages
Tags
Boo ,
OpenID ,
Mono ,
C#
For those of you looking at using OpenID, there is a .NET compatible library available. The Library was written in Boo, a .NET language inspired by Python. It also leverages a library from the Mono project.
 
There is a surprising amount of backlash over this library. Not because of the normal Open Source vs. Microsoft debates we see so often, but rather because it was written in Boo instead of C#. One commenter wrote:
Why on earth its not on c#, Visual Basic or Delphi at least? Why take exotic language for public library? How one would add changes to library implementation without knowing something extraudinary like chinese. Do you know that english and c# are standard in communication- one in speech and another in programming in dotnet?
Another says:
I think that open libraries must be on common and standard language. For DOTNET is C#. Other language is exotic way to make troubles for programmers. We did openId server implementation ourselves on C#, its difficult and errorprone. Industry needs library on standard languages!
Other comments were more charitable:
While C# may be the most common language in .NET, the entire point and spirit of .NET is that you can write in any language and your program/library interops with anything else. If this author provides a useful library to you that happens to be written in Boo, thank him for the library and use it as a compiled library if you don't want to work in Boo. Ungrateful people. grumble grumble
Scott Hanselman wrote of his attempts to convert the library from Boo to C# in The Programmer Phases of Grief: or Language Translation is Harder Than It Looks. He opens with his first impressions:
 
I was of course, like any religious zealot C# programmer, shocked and offended and looked on with disbelief that anyone would use any language that wasn't the One True Way® to produce perfectly viable and runnable IL. Microsoft's whole multi-language, single-runtime was just to prove a point to the Java guys right? I looked at the code with disdain
 
No curly braces? Duck typing? Is this how these people live and code? Freaks. Toy Languages, man, toy languages.
After describing many of the translation techniques he tried such as manually rewriting or the .NET Reflector, he has a realization:
Wait a second. I've already got a library that works. It's got unit tests. It depends on a tested and released Mono library and a 3 year old non-mainstream language, but it works. It's been used and implemented live before and someone has already wrapped it into an even better and more useful abstraction. Maybe it'll work after all.
The “better and more useful abstraction” he refers to is the ASP.NET 2.0 Web Control that Andrew Arnott created.
 
InfoQ Asks: Does it matter what language an open source, .NET compatible library is writen in?
 
InfoQ Asks: Does it matter what language an open source, .NET compatible li by Eirik Mangseth Posted
RE: InfoQ Asks by Tomas Petricek Posted
Missing the point entirely by Christian Romney Posted
  1. Back to top

    InfoQ Asks: Does it matter what language an open source, .NET compatible li

    by Eirik Mangseth

    Of course not. Why should it? If it is well written (and documented), comes with unit tests, then it is for the "market" to decide whether it is a viable option or not. Maybe those C#-only people should heed the advice of The Pragmatic Programmers (www.pragmaticprogrammer.com) and learn one new language every year, just to stay on top of things.

    Eirik M

  2. Back to top

    RE: InfoQ Asks

    by Tomas Petricek

    Hi, I think it's difficult question -

    If the library is open-source and you may need to modify than exotic language can be problematic for two reasons. First problem is that it will be difficult to find a developer who can do this and second problem is that compliler may be no longer supported (which will make it impossible to modify library). If you know that you won't need to modify it and it is well tested than I don't see any reasons for not using it. And finally, if the library is commercially supported than the use of exotic language is not a problem at all.

    One additional reason for not using library like this is that exotic languages may create classes with "strange" interface, but I think that Boo is allright from this point of view.

    Tomas

  3. Back to top

    Missing the point entirely

    by Christian Romney

    Isn't the whole value proposition of the .NET framework the fact that you can consume libraries written in other .NET languages? Talk about missing the big picture. And if Boo is too difficult for someone to learn, they have no business trying to patch open source software. I guess when all you have is a hammer....

Educational Content

New-age Transactional Systems - Not Your Grandpa's OLTP

John Hugg discusses high volume transaction processing applications with high and low frequency profiles, and how VoltDB can be used for that purpose.

Cool Code

Kevlin Henney examines code samples to see what can be learned from them starting from the premise that one won’t write great code unless he knows how to read it.

Collaboration: At the Extremities of Extreme

Jason Ayers share the observations he made watching a team of developers collaborating in real time on the same code base, pushing XP, pair programming and continuous integration to their extremes.

Yesod Web Framework

Michael Snoyman presents Yesod, a web framework written in Haskell and containing a web server, templating, ORM, libraries (templating, gravatar, etc.).

Transactions without Transactions

Richard Kreuter and Kyle Banker on how to avoid classical RDBMS transactional systems by using compensation mechanisms, transactional messaging or transactional procedures.

Attila Szegedi on JVM and GC Performance Tuning at Twitter

Attila Szegedi talks about performance tuning Java and Scala programs at Twitter: how to approach GC problems, the importance of asynchronous I/O, when to use MySQL/Cassandra/Redis, and much more.

10 tips on how to prevent business value risk

One category of risk that project teams need to ensure they address is business value failure – delivering a product that fails to provide value for the business investor.

Interview: Software Systems Architecture: Working With Stakeholders Using Viewpoints and Perspectives

InfoQ spoke to the authors of Software Systems Architecture on a couple of new topics, the System Context viewpoint and Agile, which have been added to the second edition.