"…mais ce serait peut-être l'une des plus grandes opportunités manquées de notre époque si le logiciel libre ne libérait rien d'autre que du code…"

Archive for the ‘Web Frameworks’ Category

Web Python Framework : le retour de Bobo, le framework de Jim Fulton

Posted by patrick sur juin 21, 2009


http://bobo.digicool.com/ (‘Bobo is a light-weight framework for creating WSGI web applications. It’s goal is to be easy to learn and remember.It provides 2 features:

  • Mapping URLs to objects
  • Calling objects to generate HTTP responses

It doesn’t have a templateing language, a database integration layer, or a number of other features that can be provided by WSGI middle-ware or application-specific libraries.Bobo builds on other frameworks, most notably WSGI and WebOb.‘)

http://mail.python.org/pipermail/web-sig/2009-June/003831.html (from Philip J.Eby: « …anybody who knows Python web development should know that Bobo was actually the first Python web framework ever developed, 12 years ago, and that it invented quite a lot of the things found in Python web frameworks today, not to mention being the forerunner of all things Zope.
It’s rather nice to see it back, reincarnated on today’s egg/WSGI infrastructure.  The original Bobo was what convinced me to become a Python programmer 12 years ago. (…after I realized that a Bobo-equivalent framework could not be implemented in Perl without far greater wizardry than I was capable of managing, while in Python it was nearly trivial to do so.  I left Perl and never looked back.
« )

A voir

  • http://pypi.python.org/pypi/bobo
  • http://pypi.python.org/pypi/WebOb/ (‘WSGI request and response object WebOb provides wrappers around the WSGI request environment, and an object to help create WSGI responses. The objects map much of the specified behavior of HTTP, including header parsing and accessors for other standard parts of the environment…The primary object in WebOb is webob.Request, a wrapper around a WSGI environment.’)
  • http://en.wikipedia.org/wiki/Wsgi (…The Web Server Gateway Interface defines a simple and universal interface between web servers and web applications or frameworks for the Python programming language. The latest version 3.0 of Python, released in December 2008, is already supported by mod_wsgi (a module for the Apache Web server…Historically Python web application frameworks have been a problem for new Python users because, generally speaking, the choice of web framework would limit the choice of usable web servers, and vice versa. Python applications were often designed for either CGI, FastCGI, mod_python or even custom API interfaces of specific web-servers. WSGI[1] (sometimes pronounced ‘whiskey’ or ‘wiz-gee’) was created as a low-level interface between web servers and web applications or frameworks to promote common ground for portable web application development. WSGI is based on the existing CGI standard…)

Posted in 2009, python, Python Web Frameworks, Web Frameworks | Leave a Comment »

Une grande nouvelle pour le monde python et django: « Google app engine »

Posted by patrick sur avril 8, 2008

http://www.techcrunch.com/2008/04/07/google-jumps-head-first-into-web-services-with-google-app-engine/ (« Google isn’t just talking about hosting applications in the cloud any more. Tonight at 9pm PT (7 april 2008) they’re launching Google App Engine (Update: The site is live), an ambitious new project that offers a full-stack, hosted, automatically scalable web application platform. It consists of Python application servers, BigTable database access (anticipated here and here) and GFS data store services. At first blush this is a full on competitor to the suite of web services offered by Amazon, including S3 (storage), EC2 (virtual servers) and SimpleDB (database)« )

A voir


http://code.google.com/appengine/articles/django.html (« Google App Engine and Django both have the ability to use the WSGI standard to run applications. As a result, it is possible to use nearly the entire Django stack on Google App Engine, including middleware. As a developer, the only necessary adjustment is modifying your Django data models to make use of the Google App Engine Datastore API to interface with the fast, scalable Google App Engine datastore. Since both Django and Google App Engine have a similar concept of models, as a Django developer, you can quickly adjust your application to use our datastore. »)

Posted in google, logiciel libre, python, Web Frameworks | Leave a Comment »

Des nouvelles de python: Sun supporte Jython et Python, Django, Mailman3 (MM3, REST), Barry Warsaw reçoit le prix Pizzigati pour GNU/Mailman

Posted by patrick sur mars 6, 2008

Jython et Sun

http://ironpython-urls.blogspot.com/2008/03/ironpython-has-serious-competition-sun.html (« In September 2006 Sun hired two JRuby developers to improve the story of dynamic languages on the JVM. This was seen by many as both long overdue and a response to Microsoft developing IronPython (and the Dynamic Language Runtime) for .NET. As Jython has been around for longer than JRuby, many in the Python community wondered why Sun weren’t supporting Python. Finally they have answered, by hiring Ted Leung and Jython lead developer Frank Wierzbicki.« )

http://www.sauria.com/blog/2008/03/03/the-sun-is-going-to-shine-on-python/ (…Over the years, I’ve met many people at Sun who understand a collaborative development style. Many of those folks are committers on Apache projects…How serious is Sun about dynamic languages and how deep does that support go? Sun is (finally?) very serious about this. As part of Sun’s new direction, Sun wants to give developers the ability to use whatever tool sets they want. Ruby, Python, PHP, Java. On or off OpenSolaris. On or off the JVM. There is an official project, John Rose’s DaVinci Machine Frank Wierzbicki, the maintainer of Jython, started at Sun last Monday, so there will be at least two of us working on Python related stuff. That includes Jython, Python support for Netbeans, and some other stuff that we haven’t quite figured out yet. We definitely will be looking for things that we can do to support CPython and the Python language as a whole. This is not just about Python on on the JVM. Sun will try to make its platforms, OpenSolaris and the JVM, the best place to develop and deploy Python applications. But at the moment that’s a goal and not a reality, so there is lots to do. )

http://fwierzbicki.blogspot.com/2008/02/jythons-future-looking-sunny.html (« …So by now you’ve probably guessed it: Sun Microsystems has hired me to work full time on Jython. They have also hired Ted Leung to represent the wider world of Python at Sun. I don’t think I can overstate just how excited I am about this. For a long time now I’ve been obsessed with Jython. Now I will be able to let my obsession take over completely…I have to especially thank Tim Bray, who has been pushing the dynamic language thing at Sun for quite a long time. I’m sure the warm welcome that I got at Sun was in no small part due to the enormous success of the JRuby work that has been going on there, so thanks to Charles Nutter and Thomas Enebo for their work. Also thanks to the many folks at Sun who have been pushing for this, including Eduardo Pelegri-Llopart. And of course thanks to all of you who use, contribute to, and talk about Jython. Jython is above all things a community effort. We should all share in the excitement. Hurray!« )

http://www.tbray.org/ongoing/When/200x/2008/03/03/Python-at-Sun (« So, as of this morning, noted Pythonista Ted Leung and Jython lead Frank Wierzbicki are joining Sun. Plus, we’re sponsoring PyCon and have applied to join the Python Software Foundation (it turns out you not only have to contribute, you have to get voted in). So, what are these guys going to be working on? I’m not sure. While we’re using Python internally for OpenSolaris IPS, nobody would call us real experts on the language. So my opinion is that Frank and Ted need build bridges to the community and figure out how we can help; if we can pitch in as well with Python as we have with Ruby, that’d be a win/win I’d say. Quick Python trivia question: Near as I can tell, Guido works half-time on Python over at Google. Is there anyone in the world, aside from Frank and Ted, getting paid to work full-time on Python ?« )


  • http://www.jacobian.org/writing/2008/feb/21/sailing-on/ (« …However, I’ve been offered every Open Source developer’s dream job. Starting in March, I’ll be spending the majority of my time working on Django….So what exactly will I be doing? My job will entail a bit of internal-only closed-source development, but nearly everything I write will be Open Source. Most of my time will be spent improving Django. In the short term that’ll mean fixing tickets, working on new features, getting active branches finished and merged to trunk, and getting a one-point-omg release out the doorLast year I spent a few days in Boulder helping the Front Range Pythoneers kick off the Oracle backend for Django. It was a huge amount of fun, and I’m going to make myself available to other groups wanting to working on other similar problemsI can’t wait to spend my days hacking on Django. The best part is that this isn’t the only piece of good news about Django I’ll get to share this year. Stay tuned: 2008 is going to be huge« )

Mailman 3

  • http://wiki.list.org/display/DEV/REST+Interface (« I’m interested in working on a REST-style interface for controlling Mailman. One thought: should the web UI be written atop such a REST interface? Pro: it would nicely enforce decoupling the UI and the Mailman engine, and be a good test that the REST interface supports enough functionality. Con: adds an extra layer…I’m really keen on exploring this because I do think the decoupling will be a big win. It’ll let us distribute a turnkey, standalone u/i for those who want something working out of the box, but it’ll also let integrators use the core Mailman engine in their own sites. And it won’t limit you to just Python web frameworks (A sketch of the REST interface is in the wiki at http://wiki.list.org/display/DEV/REST+Interface . It’s written from the 2.1/2.2 point of view; I don’t know if mm3 reworks the basic objects so much that the REST interface no longer applies.). This interface isn’t intended to be exposed to the Internet at large, so there’s no mention of access control. It would be used as a back-end, on top of which the existing Mailman interface, or a fancy GUI application, or administrative scripts, could be built
    I think if we’re careful we can get pretty close. Ideally, we’d have
    the same REST api for both, which would give us a nice migration path, but I don’t yet know if that’s feasible. MM3 does have a more elaborate data model than MM2, but OTOH, everything is formally declared in Zope-style interfaces (and thoroughly tested… woohoo!). One thing that we have to figure out is how to represent all the metadata that currently lives in the Mailman.Gui package of 2.1/2.2. I think any web interface acting through the REST api will want that basic information, e.g. the brief and detailed descriptions of the mailing attributes (the VARHELP). I’m sure there’s a clear way to publish that through the REST api, but it might have an impact on the format used. I like JSON a lot, but html or xml might be more amenable to that type of data. OTOH, it’s all read-only so it might make sense to split it into two trees of information.
    « )


  • http://mail.python.org/mailman/listinfo/mailman-announce(« 
    I realize that I’ve been remiss in announcing this. My apologies. I have been awarded the 2008 Pizzigati Prize for Public Interest
    Computing for GNU Mailman. http://www.pizzigatiprize.org/
    I am deeply honored to win this prize because I believe very strongly
    in Mailman’s role in helping people communicate and organize. I want
    to thank all of you who have supported me and Mailman over the years, and I want to let you know that I am as excited as ever about where Mailman is going. One of the most satisfying aspects of this project for me has been meeting you, the users, developers and contributors to Mailman, both online and face-to-face. I’m looking forward to meeting the Pizzigati family and having some time to spend with them learning about Anthony’s remarkable life, sadly cut too short. So again, thank you all and I’m looking forward to the next 10 years of GNU Mailman!Cheers,
    – -Barry »)
  • http://www.pizzigatiprize.org/news/press_releases/barry_warsaw_named_second_annual_winner_of_the_10,000_pizzigati_prize.html (« San Francisco, January 30, 2008— Tides Foundation announces the winner of the second annual $10,000 Pizzigati Prize. Barry Warsaw, a software developer dedicated to identifying and solving the technological problems that confront social change movements, has won the Antonio Pizzigati Prize for Software in the Public Interest.
    Barry Warsaw is being recognized for his work as the lead developer of GNU Mailman, the open source application that hundreds of nonprofits around the world are now using to manage electronic mail discussions and e-newsletter lists. The Pizzigati Prize — an award program launched two years ago by Tides Foundation’s Florence and Frances Family Fund — aims to honor individuals who, in the spirit of open source computing, fashion outstanding applications that help nonprofits become more effective in their ongoing social change efforts. “Barry Warsaw has displayed, over the years, a powerful personal commitment to the ideals behind the Pizzigati Prize,” notes Jason Sanders, Tides Philanthropic Advisor who coordinates the prize competition. “His work has demonstrated vision and inspired innovation in public interest computing
    .« )

Posted in jython, logiciel libre, python, REST, Web Frameworks | Tagué: , , , | 2 Comments »

Django on the Java Virtual Machine : django on jython 2.5

Posted by patrick sur février 4, 2008

Source: http://www.infoq.com/news/2008/01/django_on_jython

Alors que jython semblait un peu marqué le pas depuis quelques années, on apprend que le développement de la version 2.5 est prévue pour cette année.


The Jython developers are working hard on producing Jython 2.5 which aims to align Jython with CPython 2.5 and provide a much cleaner and consistent code base.

A side goal of Jython 2.5 is to try to get some CPython frameworks working, especially the web frameworks, for example:

  • Django
  • Pylons
  • TurboGears
  • Twisted

InfoQ recently had the opportunity to interview Jim Baker, a python evangelist and contributor to Django on Jython (DoJ), to find out what is expected and when.

What is the expected release date for Django on Jython?

This year. It’s predicated on the next release of Jython. See #2 for that planning. Django in contrast just works, with only minor changes, thanks to a lot of work that many other people did in identifying (minor) Jython incompatibilities. Now most of the problems we have identified actually occur only in testing, where Django makes certain assumptions about Python should run that don’t apply to Jython. An example of such an assumption that the hash algorithm is the same for dictionary implementations; because we use Java’s (ConcurrentHashMap), this is not the case. However, that’s an artifact of the testing process, Django doesn’t really care about that. Still, we plan to certify this by passing all the tests (fixed as necessary).

What version of Jython is going to be required?

Jython 2.5 – equivalent to CPython 2.5 (or what is conventionally called Python!) is what we are targeting in the Jython project. This is actually moving very fast. We have a 2.5 compiler that’s available for experimental usage, but it’s getting more and more robust as we have additional people testing it. This « newcompiler » was initiated by a Google Summer of Code project that I mentored. (Bruce Eckel mentioned this in a blog post. We in fact hit that mid-September date!) At the Python Conference« A New Compiler for Jython » at PyCon. in mid-March, we will be setting the specific target based on where we are. Tobias and I will also be presenting our paper  « A New Compiler for Jython » at PyCon.

Is Django trying to be what Rails is for Ruby and Grails is becoming for Groovy?

Django offers comparable functionality to those web app frameworks, with ostensibly a more robust platform. So Django is written to be multithreaded, unlike RoR, which means we don’t have to go through a lot of tricks to make it work on the Java platform, such as using multiple classloaders. We currently have database support for PostgreSQL, with some work done also on MySQL. I helped write the Oracle backend for Django. We’re also planning to support Java DB (Derby).

Jim also expressed the usefulness of having a preconfigured stack available, to ease the experimentation of using Django on Jython (DoJ),

I’d like to see the following preconfigured stack available for Django on Jython (DoJ): Derby + Tomcat. This should be something that a developer can just access via a plugin from Eclipse or Netbeans or IDE of their choice, which means they can configure Derby and Tomcat directly from the IDE. It also provides an obvious migration path to other containers and databases. Perhaps more importantly, such a setup allows for easy DoJ experimentation, whether that’s for someone building a Django app, or also using tuple spaces, rules engines, PDF tools, or other parts of the heavy-lifting infrastructure available on the Java platform. This is where I think DoJ provides true compelling value.

For additional information try the following links:

———————————–8<—————————————- A voir:





http://www.jython.org/Project/index.html (« Jython is an implementation of the high-level, dynamic, object-oriented language Python written in 100% Pure Java, and seamlessly integrated with the Java platform. It thus allows you to run Python on any Java platform. »)


Posted in java, python, Web Frameworks | Tagué: , , | Leave a Comment »

Nouvelles de python pour la semaine du 14 au 20 janvier 2008

Posted by patrick sur janvier 21, 2008

En vrac, quelques nouvelles de python

http://highscalability.com/youtube-architecture (« – encore sur la liste Tutor, on apprend que YouTube emploie Python: YouTube grew incredibly fast, to over 100 million video views per day, with only a handful of people responsible for scaling the site. How did they manage to deliver all that video to all those users? And how have they evolved since being acquired by Google?

Information Sources

  • Google Video


  • Apache
  • Python
  • Linux (SuSe)
  • MySQL
  • psyco, a dynamic python->C compiler
  • lighttpd for video instead of Apache

    What’s Inside?

    The Stats

  • Supports the delivery of over 100 million videos per day.
  • Founded 2/2005
  • 3/2006 30 million video views/day
  • 7/2006 100 million video views/day
  • 2 sysadmins, 2 scalability software architects
  • 2 feature developers, 2 network engineers, 1 DBA
  • Web Servers

  • NetScalar is used for load balancing and caching static content.
  • Run Apache with mod_fast_cgi.
  • Requests are routed for handling by a Python application server.
  • Application server talks to various databases and other informations sources to get all the data and formats the html page.
  • Can usually scale web tier by adding more machines.
  • The Python web code is usually NOT the bottleneck, it spends most of its time blocked on RPCs.
  • Python allows rapid flexible development and deployment. This is critical given the competition they face.
  • Usually less than 100 ms page service times.
  • Use psyco, a dynamic python->C compiler that uses a JIT compiler approach to optimize inner loops.
  • For high CPU intensive activities like encryption, they use C extensions.
  • Some pre-generated cached HTML for expensive to render blocks.
  • Row level caching in the database.
  • Fully formed Python objects are cached.
  • Some data are calculated and sent to each application so the values are cached in local memory. This is an underused strategy. The fastest cache is in your application server and it doesn’t take much time to send precalculated data to all your servers. Just have an agent that watches for changes, precalculates, and sends….)
  • =============================
    http://www.oreillynet.com/onlamp/blog/2008/01/pymotw_threading.html (« Doug Hellman’s Python Module of the Week is all about threading. »)

    http://www.python.org/dev/peps/pep-0369/ (« This PEP proposes enhancements for the import machinery to add post import hooks. It is intended primarily to support the wider use of abstract base classes that is expected in Python 3.0.The PEP originally started as a combined PEP for lazy imports and post import hooks. After some discussion on the python-dev mailing list the PEP was parted in two separate PEPs « )

    http://www.python.org/dev/peps/pep-3119/ (… Abstract This is a proposal to add Abstract Base Class (ABC) support to Python 3000. It proposes:

    • A way to overload isinstance() and issubclass().
    • A new module abc which serves as an « ABC support framework ». It defines a metaclass for use with ABCs and a decorator that can be used to define abstract methods.
    • Specific ABCs for containers and iterators, to be added to the collections module.

    Much of the thinking that went into the proposal is not about the specific mechanism of ABCs, as contrasted with Interfaces or Generic Functions (GFs), but about clarifying philosophical issues like « what makes a set », « what makes a mapping » and « what makes a sequence ». There’s also a companion PEP 3141, which defines ABCs for numeric types. Acknowledgements Talin wrote the Rationale below [1] as well as most of the section on ABCs vs. Interfaces. For that alone he deserves co-authorship. The rest of the PEP uses « I » referring to the first author. In the domain of object-oriented programming, the usage patterns for interacting with an object can be divided into two basic categories, which are ‘invocation’ and ‘inspection’. Invocation means interacting with an object by invoking its methods. Usually this is combined with polymorphism, so that invoking a given method may run different code depending on the type of an object. Inspection means the ability for external code (outside of the object’s methods) to examine the type or properties of that object, and make decisions on how to treat that object based on that informationone of the criticisms of inspection by classic OOP theorists is the lack of formalisms and the ad hoc nature of what is being inspected. In a language such as Python, in which almost any aspect of an object can be reflected and directly accessed by external code, there are many different ways to test whether an object conforms to a particular protocol or not. For example, if asking ‘is this object a mutable sequence container?’, one can look for a base class of ‘list’, or one can look for a method named ‘__getitem__’. But note that although these tests may seem obvious, neither of them are correct, as one generates false negatives, and the other false positivesThis PEP proposes a particular strategy for organizing these tests known as Abstract Base Classes, or ABC. ABCs are simply Python classes that are added into an object’s inheritance tree to signal certain features of that object to an external inspector. Tests are done using isinstance(), and the presence of a particular ABC means that the test has passed…Specification The specification follows the categories listed in the abstract:

    • A way to overload isinstance() and issubclass().
    • A new module abc which serves as an « ABC support framework ». It defines a metaclass for use with ABCs and a decorator that can be used to define abstract methods.
    • Specific ABCs for containers and iterators, to be added to the collections module. »)

    http://www.webfaction.com/demos/django (« How to install a real-life Django application on our servers. Watch Demo« )

    http://www.vulnerabilite.com/securite-open-source-audit-faille-coverity-actualite-20080110223332.html (« Doté d’une enveloppe initiale de 300 000 dollars, le programme Open Source Hardening Project a été lancé en mars 2006 avec pour mécène le département américain de la sécurité intérieure ( DHS ). Ce programme dont la conduite a été confiée à l’Université de Standford et à la société Coverity, a pour objectif de passer au crible le code de plusieurs logiciels open source (écrits en C et C++) parmi les plus populaires afin d’identifier les failles présentes, et ainsi contribuer au renforcement de leur sécurité... La société basée à San Francisco a par ailleurs défini plusieurs niveaux dans le processus de correction de bugs, soit 3 au total et a annoncé mardi que 11 projets open source ont atteint le niveau le plus élevé ( Rung 2 ). En raison des efforts fournis pour assurer de façon proactive l’intégrité et la sécurité des applications développées, Coverity indique que les entreprises et particuliers peuvent choisir avec encore plus de confiance les logiciels open source suivants : Amanda, NTP, OpenPAM, OpenVPN, Overdose, Perl, PHP, Postfix, Python, Samba et TCL... Si tous les logiciels contrôles ne peuvent pas encore prétendre au Rung 2, certains le pourront dans les prochains mois mais en attendant, Firefox ou encore Apache restent cantonnés au Rung 1 (86 projets), voire au Rung 0 (173 projets) comme nmap ce qui signifie que les bugs détectés n’ont pas encore été corrigés« )

    http://holdenweb.blogspot.com/2008/01/resolver-released.html (« In yet another piece of good news for Python fans, Resolver Systems have released their first product. It’s a spreadsheet that you can manipulate in Python, and it’s received a lot of interest from the financial communities on both sides of the Atlantic. [You would not believe how much of the world’s financial dealing is controlled and managed by spreadsheets; it’s really quite scary]. Resolver One is written in IronPython by a team which includes the Fuzzyman (occasionally also known as Michael Foord), of Voidspace Techie Blog fame, and it’s currently the largest product developed in that languages, with a total codebase (including tests) of over 100 kloc. The company is bravely making the product available (though not, I believe, as open source) free for non-commercial use.« )

    Posted in 2008, Ironpython, python, Web applications, Web Frameworks | Tagué: , , , , , | Leave a Comment »

    Mono : C#, IKVM, Java, Ironpython, Boo, OLPC, Silverlight/Moonlight, etc…

    Posted by patrick sur janvier 11, 2008

    Mono est encore bien méconnu aussi voici quelques liens intéressants pour en savoir plus:

    http://en.wikipedia.org/wiki/Mono_(software) (« Mono is a project led by Novell (formerly by Ximian) to create an Ecma standard compliant .NETC# compiler and a Common Language Runtime. Mono can be run on Linux, BSD, UNIX, Mac OS X, Solaris and Windows operating systems…Mono’s current version is 1.2.6 (as of Dec 12, 2007). This version provides the core API of the .NET Framework as well as partial support for C# 2.0 and Visual Basic.NET and some C# 3.0 support« )

    http://www.mono-project.com/Main_Page (« Le site du projet Mono. Mono provides the necessary software to develop and run .NET client and server applications on Linux, Solaris, Mac OS X, Windows, and Unix. Sponsored by Novell (http://www.novell.com), the Mono open source project has an active and enthusiastic contributing community and is positioned to become the leading choice for development of Linux applicationsFeatures

    http://www.mono-project.com/Moma (« The Mono Migration Analyzer (MoMA) tool helps you identify issues you may have when porting your .Net application to Mono. It helps pinpoint platform specific calls (P/Invoke) and areas that are not yet supported by the Mono project. While MoMA can help show potential issues, there are many complex factors that cannot be covered by a simple tool. MoMA may fail to point out areas that will cause problems, and may point out areas which will not actually be an issue. »)

    http://www.mono-project.com/Languages (« Multiple languages can be used with the Mono platform. The Mono project provides some compilers (C#, Basic, JScript) and there are both open source and commercial compilers that can be used with Mono…Mono-compatible compilers

    • C#: The main C# compiler of the Mono Project is mcs. We also have gmcs, which includes previews of several new C# features, including generics and nullable types. In the future, ‘gmcs’ will become the default compiler.
    • Java: Java applications can run in Mono, see the Java page for more details.
    • Boo: The Boo (http://boo.codehaus.org/Home) language is a scripting language similar to Python designed for the .NET Framework. For details on the particular language features see the Boo Language Features (http://boo.codehaus.org/Language+Features) page.
    • Python There are two possible choices here: PythonNet and IronPython.
      • PythonNet: Brian Lloyd (mailto:brian@No.Spam.zope.com) wrote a bridge to link the Python runtime with the .NET runtime. More information on the PS.NET project can be found here (http://pythonnet.sourceforge.net/). This uses the real Python engine and provides a bridge between the Python world and the .NET world to interoperate.
      • IronPython: is Jim Hugunin’s compiler for Python, it is a complete implementation of Python from scratch that compiles Python code into native CIL. More information is available on the IronPython site
    • GCC: In 2006, the Gcc4cil project was publicly announced. For now it supports the C language but it could be extended to support more gcc front ends..
    • Ruby Ruby.Net (http://www.plas.fit.qut.edu.au/rubynet/) from Queensland University. The compiler can be used to statically compile a Ruby source file into a verifiable .NET v2.0 assembly or it can be used to directly execute a Ruby source file (compile, load and execute). IronRuby (http://www.wilcob.com/Wilco/IronRuby.aspx) from Wilco Bauwer, includes an interactive Ruby Console and works with Mono.
    • …etc »)

    http://www.mono-project.com/Java (« Mono is able to run Java code side-by-side with .NET as well as having Java and .NET object interoperate with each other. This is done with IKVM (http://www.ikvm.net) the Java VM implementation that runs on top of .NET and Mono. IKVM was developed by Jeroen Frijters for the .NET Framework. Zoltan Varga ported it to Mono and fixed the Mono runtime to support the features required by IKVM. The class library runtime for IKVM is the GNU Classpath which is rapidly advancing but not entirely complete. IKVM is fully supported by Mono and its part of the standard Mono package distribution. As it stands today, it is able to run popular applications like Eclipse and DerbyThere are two possible ways of using IKVM: one is to use it as a Just-in-Time compiler which translates the Java bytecodes into .NET Intermediate Language as it goes. But this means that at runtime you are compiling things twice: the Java-to-CIL JIT and the CIL-to-Native JITExposing .NET Libraries to Java Now, Gtk# is a .NET assembly (this is the ECMA lingo for « library »), and Java does not know anything about this. It is necessary first to generate some stubs for these classes to let the Java compiler knows about the types defined in the C# world. This is done using the netexp.exe program from IKVM, like this:

    $ mono netexp.exe /mono/lib/mscorlib.dll
    $mono netexp.exe /mono/lib/mono/gtk-sharp/gtk-sharp.dll
    $ mono netexp.exe  /mono/lib/mono/gtk-sharp/glib-sharp.dll
    $ mono netexp.exe /mono/lib/mono/gtk-sharp/atk-sharp.dll

    The above commands basically « imports » all of the types and their definitions into something suitable for Java to consume, the result is:

    $ ls *.jar
    atk-sharp.jar  glib-sharp.jar  gtk-sharp.jar  mscorlib.jar

    The netexp.exe program will import all of the types into the « cli » namespace. So if you had a class called « Gtk.Window », it will be exposed to Java as « cli.Gtk.Window »…How Complete is Mono/IKVM ? Mono and IKVM depend on the GNU Classpath, so it is as complete as open source Java, but you get the added advantage of accessing any Mono/.NET libraries as well. Today Mono/IKVM can run large applications like Eclipse, Jython and JBoss. Screenshot of Eclipse running on Mono . »)

    http://tirania.org/blog/texts/gtkjava.html (« So today I figured it would be an interesting excercise to write a small Gtk# application with Java. To do this, I used IKVM the Java VM implementation that runs on top of .NET and Mono. There are two possible ways of using IKVM: one is to use it as a Just-in-Time compiler which translates the Java bytecodes into .NET Intermediate Language as it goes. But this means that at runtime you are compiling things twice: the Java-to-CIL JIT and the CIL-to-Native JIT. Gtk# is really a bad name. Because Gtk# is not limited to C#, any programming language in the .NET framework can use it today and because it covers more than only the Gtk API, it covers various other components of the GNOME Development Platform.« )


    • Novell (http://www.novell.com): Novell uses Mono for both client and server applications:
    • Otee (http://www.otee.dk): Their Unity 3D game modeling tool uses Mono so customers can build cross-platform video games. Their engineers have also spoken about their Mono use on the Mono mailing list. Read the Otee success story here.
    • Medsphere (http://medsphere.com): The Medsphere OpenVista software allows physicians to access complete patient health information at the point of care, and it runs on both Windows and Linux, thanks to Mono. Medsphere customers now have the flexibility to choose the OS that is right for them, without worrying about application availability.
    • Quantifi Solutions: (http://quantifisolutions.com) Specialists in complex financial instruments, Quantifi Solutions use Mono to mix C# and C++ code in their finance modeling software. Their financial models are refined constantly, so they need code that is easy to manage and easy to maintain, while still running fast enough to keep up with the markets. One of the Quantifi engineers discusses their implementation here in the mailing list archives
    • Versora : Windows-to-Linux migration specialists Versora used Mono and C# to produce a cross-platform tool that helps companies move system and application setttings and user data. Read their success story here.
    • Mainsoft uses Mono for their Grasshopper product which allows ASP.NET applications to be deployed on J2EE servers.
    • Gaia (http://ajaxwidgets.com) a company that offers Ajax-based ASP.NET controls under a dual-licensing scheme: GPL or proprietary. Learn more from them here .
    • Wikipedia (http://wikipedia.org): WikiPedia uses Mono for its search facilities. The indexing and the actual searching is done by Mono-based applications.

    http://tirania.org/blog/archive/2008/Jan-04.html (« Les motivation de Miguel De Icaza pour développer mono et silverlight:…I have been using Linux as my main desktop operating system since 1992 and endured every missing feature, every broken driver, every broken X setup and every missing application since I started. I did so because it was free software, and I had decided that I wanted to run my entire system with free software. I felt that dog fooding Linux and improving Linux on a day-to-day basis would help improve this OS as opposed to improving a proprietary OS…From my perspective, it is crucial for Linux to have good support for Silverlight because I do not want Linux on the desktop to become a second class citizen ever again. Robert, you are asking those of us that use FOSS operating systems to « take one for the team » by not endorsing Silverlight, but yet, you are not willing to live among us. If you are going to preach, preach by exampleThe core of the debate is whether Microsoft will succeed in establishing Silverlight as a RIA platform or not. You believe that without Moonlight they would not have a chance of success, and I believe that they would have regardless of us. In fact, I believe strongly that it is part of Microsoft becoming more open and adapting itself to the multitude of shifts in this industry (open sourcing IronPython, IronRuby, the DLR, the JS library for ASP.NET, the MS-PL, the MS-RL, opening up their code, and so on)….Now, regardless of the strategic discussion about endorsing Silverlight, there are technicalities about Silverlight that make it a fascinating platform. I personally want to write cross platform web applications using C#, Boo, Python and Ruby. And that matters to me, and matters to others. And I have loved Silverlight since it embedded the CLR runtime. Nothing new there, you can read the gory details of my fascination from back then…What prevents anyone from taking the Moonlight source code, embracing it, extending it, innovate with it, prototype with it, and enter the same cycle that Linux, or web browsers have entered? Or someone turning it into a standard? Nothing. The only thing preventing it is lack of imagination. « )

    http://wiki.laptop.org/go/Mono (« Sugar activities are usually written in Python using the Python Activity API. This page documents how it is possible to use Mono to write a Sugar activity. With Mono, you can use any underlying language like C# or Boo. »)

    http://tquerci.blogspot.com/2008/01/mono-on-olpc-one-laptop-per-child.html (« After a lot of time I’m finally releasing the first version of Sugar assembly to « sugarize » a Mono application. This assembly is needed to integrate a Mono application with the Sugar environment so it can run on an OLPC device. This version allows creating applications that use GTK# forms created programmatically or by a Glade resource fileI have ported two applications to the OLPC device: GBrainy and MonkeysMemory. The first application is an interesting application to « improve » your brain, while the second one is a simple « Memory » game that I wrote to play with my children.« )




    • Gtk# (« This toolkit is a .NET binding for the Gtk+ toolkit. It is in active development, and there are various applications in the Mono world that use it (Monodoc, Monocov, Mono’s Debugger and various smaller applications, a more complete list is available on the Gtk# Wiki. Platforms: Unix, Windows, GPE, MacOS X (using the X server)« ).

    Web Frameworks


    • NPlot (http://netcontrols.org/nplot/wiki/) is a free charting library for .NET and supports various kinds of graphic modes. It boasts an elegant and flexible API. NPlot includes controls for Windows.Forms, ASP.NET and a class for creating Bitmaps. A GTK# control is also available.
    • ZedGraph (http://zedgraph.org) ZedGraph is a set of classes, written in C#, for creating 2D line and bar graphs of arbitrary datasets. The classes provide a high degree of flexibility — almost every aspect of the graph can be user-modified. At the same time, usage of the classes is kept simple by providing default values for all of the graph attributes. The classes include code for choosing appropriate scale ranges and step sizes based on the range of data values being plotted.


    • Mono.Addins is a generic framework for creating extensible applications, and for creating libraries which extend those applications. This framework is derived from the add-in engine used by MonoDevelop, although it has been completely rewritten and improved in many ways to make it more generic and easier to use. The MonoDevelop add-in engine was an improvement over the SharpDevelop engine, which took many ideas from the Eclipse add-in engine. Mono.Addins has been designed to be useful for a wide range of applications: from simple applications with small extensibility needs, to complex applications (such as MonoDevelop itself) which need support for large add-in structures.

    http://www.mono-project.com/Moonlight («  Silverlight 1.1 (http://silverlight.net) is a new development technology for the Web created by Microsoft based on the CLR that augments it with a 2D retained graphics system and media playback engine and ships a subset of the standard .NET libraries. Currently the Moonlight project supports both Silverlight 1.0 (canvas + browser-based scripting) as well as 1.1 applications (canvas + ECMA CLI powered execution engine). Building an open source implementation on top of Mono is an obvious choice as Mono has most of the technologies required to implement it but is missing a few components. In this page we will track the work required and the design decisions involved in creating an open source version of itCurrently Moonlight is not packaged as it is still under heavy development. In the future we will provide package repositories for all major distributions through the OpenSUSE Build Service (http://build.opensuse.org) as well as a Mozilla extension that will make the installation experience similar to the one that Windows and MacOS users have today. « )

    Posted in 2008, Distribution de logiciel, java, logiciel libre, openSUSE build service, packaging, python, Web Frameworks | Tagué: , , , | 1 Comment »

    Compte rendu de la conférence Ruby/Ruby On Rails du mercredi 19 décembre 2007 à Grenoble

    Posted by patrick sur janvier 7, 2008

    Bonjour et bonne année 2008 (1) mais aussi 5768, 1428, 1386, 4405, etc. 🙂

    C’est avec plaisir que j’ai assisté à la conférence sur Ruby et Ruby On Rails. Etant un fan du langage Python, j’apprécie à sa juste valeur le langage Ruby et son framework Web bien connu Ruby On Rails. Cela fait plaisir de voir que je ne suis pas le seul à apprécier ce genre d’environnement (avec Python il y a Django, Grok, Pylons) et qu’il est bien regrettable que les entreprises ne pensent qu’à l’artillerie lourde JEE même pour des applications petites ou moyennes.

    La conférence s’est déroulée en 2 parties. D’abord une présentation de Ruby et ensuite une présentation de Ruby On Rails.

    Ici, le support de la conférence: http://www.guilde.asso.fr/rencontres/20071219/Ruby_Rails_Introduction_PoR_2007_longue_v2.pdf
    Ce que j’ai appris:

    – le modèle objet de Ruby est fortement inspiré de Smalltalk

    – Ruby applique le principe POLS ( principle of least surprise)

    – les blocs sont employés partout dans Ruby

    – il n’y a pas d’héritage multiple mais on peut utiliser des mixins (étend les compétences d’une classe en lui rajoutant une série de méthodes)

    – les conventions de nommage sont importantes

    – il y a un haut niveau de métaprogrammation

    – Ruby est bien adapté pour implémenter des langages spécifiques (DSL)

    – pour les grosses applications il faut utiliser n instances de mongrel derrière un serveur Apache faisant office de répartisseur de charge. (« One popular configuration is to run Apache 2.2 as a load balancer using mod_proxy_balancer in conjunction with several Mongrel instances, with each Mongrel instance running on a separate port. This is something that can be configured very easily using the mongrel_cluster management utility. Apache can divide the incoming requests among the available Mongrel processes, and, with careful configuration can even serve static content itself without having to delegate to Mongrel. »)

    – Sun s’intéresse fortement à Ruby ce qui explique que de plus en plus de développeurs Java s’intéressent à Ruby. La version 6 de Netbeans intègre Ruby et Ruby On Rails (« Since version 6.0, Netbeans allow IDE development with Ruby and JRuby, as well as Rails for these two implementations of Ruby…It is also possible to create directly Ruby projects or Ruby on Rails projects, using the reference Ruby implementation, or using JRuby (the Java implementation of Ruby) . »)
    Sites à voir:

    http://www.rubyfrance.org/ (« Site de l’association francophone des utilisateurs du langage de programmation Ruby« )

    http://www.railsfrance.org/ (« Rails est un framework, basé sur le langage Ruby, permettant le développement rapide d’applications web utilisants le modèle MVC (Modèle-Vue-Contrôleur). »)

    Laurent Julliardhttp://paris.onrails.info/conferenciers (« Laurent Julliard est un fervent utilisateur du langage Ruby depuis 2000. Traducteur de l’ouvrage « Agile Web development with Rails » pour Eyrolles, il a en outre participé a plusieurs projets Ruby dont l’environnement de développement FreeRIDE. Il s’est investi de longue date dans le mouvement Open Source en créant le premier groupe d’utilisateur Linux français en Janvier 1995 (La GUILDE). Après avoir occupé des postes de leader techniques et d’architecte logiciel dans les laboratoires de R&D de Hewlett-Packard et de Xerox en France et aux Etats-Unis, il est aujourd’hui Directeur Associé de Nuxos Group. »)

    http://www.journaldunet.com/developpeur/outils/interview/07/1210-paris-on-rails.shtml (« Quels sont les points forts du framework Ruby on Rails ? Après 10 ans de développement d’applications Web avec des logiques métier fortes, on s’est retrouvé avec une véritable cacophonie au niveau des frameworks, les composants partant un peu dans tous les sens. Face à cette problématique, Rails propose un cadre reposant sur le modèle MVC, Modèle Vue Contrôleur. L’idée était d’appliquer ce modèle de développement qui a fait ses preuves à l’univers de la programmation Web... Ecrit en Ruby, Rails a donc proposé de couvrir ces trois couches. D’où sa qualification de full-stack application framework. C’est d’ailleurs pour cette raison que David Heinemeier Hansson, le créateur du framework, a indiqué qu’il n’avait rien inventé de nouveau. Ruby on Rails agrège des bonnes pratiques en les intégrant à un outil de façon cohérente…

    …Sun sponsorise la conférence Paris on Rails cette année. Comment cet acteur se situe-t-il vis-à-vis du projet ? Le buzz généré par Rails a entraîné l’apparition de clones, notamment PHP (CakePHP, Symphony) et Python (Django, TurboGears, Pylons). Des développeurs ont également travaillé au portage de Ruby sur la machine virtuelle Java. Il s’agit de Charles Oliver Nutter et Thomas Enebo. C’est le projet JRuby. Conscient des potentialités de Rails et des limites de ses propres outils de développement, Sun a décidé de les embaucher. C’est très intéressant, dans la mesure où avec JRuby il devient possible de reprendre des classes Java dans une application Ruby via Rails. Plusieurs grandes entreprises s’intéressent déjà à cette initiative, notamment des banques du Luxembourg. Sun a déjà étendu NetBeans en y ajoutant des greffons pour Ruby on Rails. On note une initiative équivalente chez Microsoft qui a pour but de porter Ruby sur l’infrastructure .Net et la CLR (IronRuby, voir Ironpython). Même démarche du côté d’Apple qui supporte Ruby on Rails dans le système Leopard lorsqu’on installe son kit de développement

    …Quel est aujourd’hui le public de Paris on Rails ? Parmi les inscrits, on compte à la fois des start-up qui privilégient des environnements de développement rapide, mais également des grandes entreprises qui s’intéressent de plus en plus à Rails, notamment au travers de cellules de veille et de projets de prototypage. Beaucoup de sites Web reposent sur Rails. C’est le cas du site de vidéos Eyeka, des sites du Figaro Madame et de la partie shopping du Nouvel Obs. Au niveau des grandes entreprises, la banque RBC Dexia a récemment adopté Ruby on Rails. Cette société a réalisé le déploiement d’une vingtaine d’applications depuis le mois de septembre dernier. Un rythme de livraison jamais atteint au sein de cette banque. Il est clair que l’arrivée de JRuby (voir Jython) est très intéressant pour les structures d’une certaine taille. Il permet en effet d’adopter Rails tout en étant capable de reprendre l’existant Java, et de s’y intégrer. Le changement peut ainsi s’effectuer en douceur…Qu’en est-il des développeurs Rails en France ? Ils sont toujours très peu nombreux comparé aux pays voisins où la communauté est plus importante. De ce fait, le coût des profils de développeur Rails est très élevé chez nous. C’est clairement un facteur bloquant l’extension de Rails en France. Nous organisons Paris on Rails notamment dans l’objectif de sensibiliser les développeurs à la technologie Rails et à ses potentialités. Historiquement, les développeurs Web français se sont beaucoup focalisés sur PHP pour les applications Web. Nous voulons les pousser à sortir des sentiers battus« )

    http://en.wikipedia.org/wiki/Ruby_%28programming_language%29 (« The language was created by Yukihiro « Matz » Matsumoto, who started working on Ruby on February 24, 1993, and released it to the public in 1995. « Ruby » was named as a gemstone because of a joke within Matsumoto’s circle of friends alluding to Perl’s name. As of March 2007, the latest stable version is 1.8.6. Ruby 1.9 (with some major changes) is also in development. Poor performance of the current Ruby implementation in comparison to other more entrenched programming languages has led to the development of several virtual machines for Ruby. These include JRuby, a port of Ruby to the Java platform, IronRuby, an implementation for the .NET Framework produced by Microsoft, and Rubinius, an interpreter modeled after self-hosting Smalltalk virtual machines. The main developers have thrown their weight behind the virtual machine provided by the YARV project, which was merged into the Ruby source tree on 31 December 2006, and will be released as Ruby 2.0. »)

    Dernières nouvelles:

    http://www.rubyfrance.org/articles/2007/12/25/sortie-de-ruby-1-9-0/ (« Ruby 1.9.0 est disponible ! Joyeux Noël ! Ruby 1.9.0 est la première version publique de Ruby comportant une machine virtuelle, ainsi que le nouveau moteur d’expression rationnelles Oniguruma, la gestion de m17n (multilingualization, notamment une meilleure gestion d’Unicode), les fibres, une présence accrue des énumérateurs (enumerator), des nouvelles constructions syntaxiques (->() {} etc.) RubyGems 1.0.1 (sorti la semaine dernière) et Rake 0.8.0 sont désormais intégrés à Ruby, FasterCSV remplace CSV. Matz n’a pas voulu nommer cette version 1.9.1 comme initialement prévue, car certains tests ne passaient pas, cette version n’était pas assez stable à son goût. En passant, notons que Perl, langage qui a influencé le design de Ruby, fête ses 20 ans, avec la mise à disposition de Perl 5.10″)

    http://www.programmez.com/actualites.php?id_actu=2608 (« Depuis le 6 décembre 2007, la version 2.0 du désormais célèbre Ruby on Rails, est disponible en version finale ! Attendue depuis plusieurs mois, cette version consolide les fonctions et les acquis des versions 1.x. Un important travail a été réalisé sur les ressources, notamment dans tout ce qui est RESTful. Dans le multivue, Rails 2 sépare le format du template du moteur de rendu. Ainsi, on peut donner à son application une interface iPhone… Des améliorations concernent aussi le support de HTML, la sécurité (par exemple : gérer une attaque XSS), la gestion des exceptions mise à niveau, l’apparition d’un nouveau stockage des sessions par un mécanisme de cookies (la session n’est plus gérée dans une base). Un gros travail a été réalisé sur Active Record pour l’alléger et l’optimiser, ainsi la désérialisation XML est supportée. Rails 2 réintroduit le debugger (installable via un simple gem, le format d’installation de Rails). Pour toute migration, il faut d’abord installer la version 1.2.6 avant de passer à la 2.0. Quant à la sortie de la 2.0 de Ruby, rien n’est encore fixé. Une première version devrait apparaître vers la mi-2008. »)

    http://linuxfr.org/2007/12/11/23448.html (« Ruby on Rails, le célèbre framework basé sur le langage Ruby, permettant le développement rapide d’applications web selon le modèle MVC (Modèle, Vue, Contrôleur) sort en version 2.0. Le développement qui a duré une année a permis l’ajout de nombreuses fonctionnalités, la résolution de beaucoup de bugs, une orientation tournée vers le REST, et pas mal d’allégements au niveau du core (externalisation de fonctionnalités en greffons)…

    Ressources et webservices Rails a tranché dans le débat REST – SOAP au profit du REST. Le module ActionWebservice a été sorti du core et placé en greffon pour ceux qui veulent continuer à utiliser du SOAP. ActiveResource est le nouveau module qui est similaire à ActiveRecord mais avec une approche ressource. Au passage, l’url des ressources a été modifié, l’utilisation du point virgule ( ; ) pour séparer l’action de la ressource a été remplacé par un slash ( / ), à cause de navigateurs et bibliothèques HTTP qui ne le supportaient pas en tant que séparateur de requêtes...Multi-vues Rails 2.0 sépare le format du template (html, xml, atom, rss, …) du moteur de rendu. Le template show.rhtml devient donc show.html.erb (ERB étant le moteur de rendu par défaut).
    D’autres moteurs de rendus existent aussi, builder utilisé pour générer du atom+xml, et HAML principalement utilisé aujourd’hui pour générer des templates adapté à l’iPhone.
    ..Session basée sur les cookies
    Les sessions ne sont plus stockées par défaut sur le système de fichiers du serveur web mais au niveau du client sous une forme qui ne peut pas être forgée. En revanche, le contenu sera visible, donc ce mécanisme de stockage de sessions n’est pas adapté si vous avez besoin d’y stocker une information que ne doit pas voir l’utilisateur.
    « )

    (1) http://fr.wikipedia.org/wiki/2008 (« L’année 2008 du calendrier grégorien correspondra aux années suivantes :

    Posted in 2007, active record, machines virtuelles, ORM, REST, ruby, Web Frameworks | Tagué: , , , , | Leave a Comment »

    Quelques articles de Linux-Fr: Ruby On Rails, Logiciel libre, Temps réel

    Posted by patrick sur décembre 18, 2007

    Quelques brèves qui m’intéressent:

    1. la sortie de Ruby On Rails 2. On rappelle qu’une conférence a lieu le mercredi 19 décembre à l’ENSIMAG à 19h30 (voir plus bas).
    2. le logiciel libre, le problème des DRM
    3. le temps réel sous GNU/Linux
    • Ruby/ Ruby On Rails

    o Développeur: Sortie de Ruby on Rails 2.0
    Auteur: EppO ( http://www.darox.net ) @ 19:00
    Thème: Ruby

    Ruby on Rails ( http://fr.wikipedia.org/wiki/Ruby_on_Rails ), le
    célèbre framework basé sur le langage Ruby, permettant le développement rapide d’applications web selon le modèle MVC (Modèle, Vue, Contrôleur (
    http://fr.wikipedia.org/wiki/Mod%C3%A8le-Vue-Contr%C3%B4leur )) sort en version 2.0.

    Le développement qui a duré une année a permis l’ajout de nombreuses fonctionnalités, la résolution de beaucoup de bugs, une orientation tournée vers le REST ( http://fr.wikipedia.org/wiki/REST ), et pas mal d’allégements au niveau du core (externalisation de fonctionnalités en greffons).

    DHH, le créateur du framework Ruby on Rails, a commenté ces nouveautés lors de Paris on Rails ( http://paris.onrails.info/ ). Pour les absents, des slides et/ou des podcasts des présentations devraient être mis en ligne prochainement.

    [en] – Ruby on Rails ( http://linuxfr.org/redirect/54864.html )
    [fr] – Architecture REST ( http://linuxfr.org/redirect/54865.html )
    [en] – Blog de Ruby on Rails ( http://linuxfr.org/redirect/54866.html )
    [en] – Rails 2 Upgrade Notes ( http://linuxfr.org/redirect/54867.html )
    [en] – Summary of Major Rails 2 Features ( http://linuxfr.org/redirect/54868.html )
    [fr] – Ruby on Rails sur dmoz ( http://linuxfr.org/redirect/54869.html )


    Conférence: Ruby et Ruby on Rails Mercredi 19 décembre de 19:30 à 21:45, par Laurent Julliard, à l’ENSIMAG, campus de Saint Martin d’Hères, Amphi E

    Résumé: La présentation couvrivra dans un premier temps le langage Ruby. Dans un second temps la conférence s’attardera sur Ruby on Rails, un framework de développement Web 2.0 qui a beaucoup fait parler de lui au cours des deux dernières années. ainsi que les diférents outils et bibliothèques qui l’entourent.

    Communication: Merci de nous aider en relayant largement l’annonce de cette conférence. Vous pouvez également imprimer et diffuser l’affiche (PDF). Dans ce cas, vous pouvez vous inscrire sur la page wiki pour coordonner les efforts des « colleurs d’affiche ».


    • Logiciel Libre/DRM

    Infos Locales : Le consortium QualiPSo organise la première conférence internationale sur la qualité des Logiciels Libres



    Posté par jcspilmont (display_envoyermessageperso(‘jcspilmont’);). Modéré le vendredi 14 décembre. isadmin (‘23461’)


    Le consortium QualiPSo organise les 16 et 17 janvier 2008 sa première conférence internationale sur le thème: « Développer la confiance dans les Logiciels Libres ».
    Organisée à Rome, la conférence QualiPSo 2008 rassemblera des autorités internationales et des experts de l’Open Source. Elle dévoilera les premiers résultats des recherches menées par le consortium et sera un lieu de débat et d’échange sur les moyens d’accroître et de garantir la confiance dans les Logiciels Libres.

    Les défis de l’Open Source seront traités au travers de trois angles complémentaires: politique, économique et technologique :

    • Les stratégies et les modèles de business dans l’Open Source
    • Les questions légales et de propriété intellectuelle
    • La confiance dans les Logiciels Libres et leurs processus de développement
    • L’interopérabilité des Logiciels Libres
    • Les réseaux de compétence sur les Logiciels Libres
    • Les forges logicielles de nouvelle génération.

    > Lire la dépêche (2 commentaires, moyenne: 2).


    Livre: Le guide pratique d’usage des logiciels libres dans les administrations
    Auteur: Nÿco ( https://linuxfr.org/~Nyco/ ) @ 07:47
    Thème: Communaute

    La DGME publie à destination des administrations « Le guide
    pratique d’usage des logiciels libres dans les administrations ». Rédigé
    par Thierry Aimé, le document de 18 pages prend la forme d’une FAQ (
    http://fr.wikipedia.org/wiki/Foire_aux_questions ) et est publié sous
    licence Creative commons « paternité – partage à l’identique » (CC by-sa).

    Il répond à diverses questions – notamment juridiques – que les
    administrations peuvent se poser lorsqu’il s’agit de mettre en place des
    Logiciels Libres :

    Le document commence par rappeler ce qu’est un logiciel,
    comment fonctionne le mécanisme du droit d’auteur, ce qu’est une licence de
    logiciel en général et une licence de logiciel libre en particulier.
    Des aspects plus pratiques sont ensuite abordés, comme la façon de trouver
    un Logiciel Libre, comment vérifier qu’il s’agit bien d’un Logiciel Libre
    en fonction de sa licence, etc.
    Par la suite, les problématiques spécifiques aux administrations sont
    discutées : le passage de marché public pour une mutualisation sous licence
    libre (le principe de payer le développement du logiciel qu’une fois pour
    qu’il soit libre), la rédaction de cahier de charges pour demander
    l’utilisation de composants libres ou de standards ouverts (
    http://fr.wikipedia.org/wiki/Format_ouvert ), le procédé pour reverser un
    développement, etc.

    [fr] – Le guide pratique d’usage des logiciels libres dans les administrations ( http://linuxfr.org/redirect/54882.html )

    |> http://linuxfr.org/2007/12/13/23452.html

    o Humeur: Un DVD enDRMerdant, prélude aux ennuis numériques au pied du sapin
    Auteur: Benoît Sibaud ( http://oumph.free.fr ) @ 11:49
    Thème: Audiovisuel

    Il y a quelques jours, on m’a offert un DVD de courts-métrages (…)
    pour mon anniversaire. (…) Donc je mets ma galette de polycarbonate
    recouvert d’une fine couche d’aluminium dans mon lecteur de DVD. (…) Et
    là le lecteur multimédia Videolan se lance et… rien.
    Ainsi commencent les mésaventures d’un utilisateur de « DVD embrouillé »,
    l’occasion de rappeler comment lire un tel support emDRMerdé avec du
    logiciel libre via libdvdcss, de rappeler que la loi DADVSI est inappliquée
    et inapplicable, de montrer que les DRM sont une stupidité technique, de
    regrouper quelques témoignages d’utilisateurs légitimes en colère contre
    les industries du cinéma et de la musique…

    Bref en cette période d’achats de Noël où un boutiquier du numérique veut
    développer le flicage et le filtrage sur internet sans réellement supprimer les verrous numériques, où l’on évoque un projet de loi DADVSI 2 pour 2008 et de nouvelles dispositions en préparation sur la responsabilité des hébergeurs, un petit article d’humeur qui regroupe divers liens et informations pour mieux guider les « consommateurs » (parfois connus sous le nom de citoyens ou spectateurs).

    [fr] – Texte « Un DVD enDRMerdant » ( http://linuxfr.org/redirect/54854.html )
    [fr] – RMS : Le droit de lire ( http://linuxfr.org/redirect/54855.html )
    [fr] – April : DADVSI m’était conté ( http://linuxfr.org/redirect/54856.html )
    [fr] – StopDRM : On veut un procès : compte-rendu de l’opération des ( http://linuxfr.org/redirect/54857.html )
    [fr] – DLFP : concours contre les DRM ( http://linuxfr.org/redirect/54858.html )
    [fr] – DLFP : EUCD/DADVSI : des contrefacteurs partout ? ( http://linuxfr.org/redirect/54859.html )


    Internet : Quelles libertés défend laCommission Nationale Informatique et Libertés ?

    Posté par Nicolas Limare (Jabber id, page perso, display_envoyermessageperso(‘nilamer’);). Modéré le lundi 17 décembre à 12:00. isadmin(‘23462’)


    Alors que les annonces se succèdent dans l’actualité à propos de filtrage d’Internet et de surveillance des communications électroniques, il peut être légitime de s’interroger sur la place de la Commission Nationale Informatique et Libertés dans tout cela.

    Crée en 1978 par la loi du 6 janvier 1978, cette instance a été crée après le scandale du premier grand projet de fichage informatique par l’État (SAFARI) en 1974. Financée par l’État, avec des commissaires issus en grande partie du gouvernement, son rôle déjà souvent limité à celui de consultation a été encore plus limité par la récente modification de la Loi Informatique et Liberté.

    En effet, en 2004, Alex Türk, actuel président de la CNIL, a rendu cette dernière impuissante face aux fichiers concernant la sûreté d’État (Défense, Sécurité Publique) — ce pour quoi elle avait été initialement créée. Depuis cette légalisation de tous les fichiers de police jusque-là hors la loi, la CNIL a par ailleurs déclaré « compatible avec la liberté » des projets comme les fichiers de prescription des assurés médicaux (AXA en 2004, Groupama et SwissLife en 2005), le passeport biométrique, la biométrie faciale « à des fins de recherche » (février 2007), la pose de mouchards éléctroniques par les compagnie d’assurance dans les véhicules des assurés (septembre 2007).

    En plus de ses « avis », la CNIL est censé nous permettre de faire respecter nos droits à la connaissance et à la rectification des données personnelles. Mais avec des délais de consultation allant jusqu’à 2 ans pour les 4,7 millions de fiches du fichier de police STIC et l’explosion générale du nombre de fichiers informatiques nominatifs, ce droit n’existe quasiment plus que sur le papier.

    Afin de relancer un nouveau débat, plusieurs collectifs ont décidés de prononcer le matin du 14 décembre la dissolution de la CNIL et ont appelé toute personne souhaitant discuter informatique et liberté à venir au 8 rue Vivienne, à Paris (métro Bourse ou Pyramides).

    > Lire la dépêche (12 commentaires, moyenne: 1,7).  

    o Infos Locales: Les logiciels libres dans le Vercors
    Auteur: Frederic Ollivier @ 12:44
    Thème: Lug

    Le Parc Naturel Régional du Vercors organise dans la Salle Communale de
    SAINT JULIEN EN QUINT, le 15 Décembre 2007 à 14H avec la participation de la Guilde des Utilisateurs d’Informatique Libre, une séance d’information
    sur les Logiciels Libres ainsi que des travaux pratiques.

    Participeront également à cette séance qui est gratuite la Commission du
    Haut Débit de Saint Julien en Quint et l’Association E-mage. Après un
    exposé sur l’intérêt de ces logiciels, il sera répondu aux questions de

    L’accent sera mis Sur les moyens d’ouvrir sous Linux les documents
    existants sous d’autres logiciels ;
    Sur l’utilisation de passerelles entre les systèmes PC, MAC, LINUX.
    Des travaux pratiques auront lieu sur quelques ordinateurs. Il sera
    également présenté une solution de virtualisation, virtualbox, pour faire fonctionner sous Linux des logiciels techniques conçus pour fonctionner sous Windows

    [fr] – GUILDE ( http://linuxfr.org/redirect/54870.html )
    [en] – Virtualbox ( http://linuxfr.org/redirect/54871.html )
    [fr] – Saint Julien en Quint ( http://linuxfr.org/redirect/54872.html )
    [fr] – Annonce sur l’AdL ( http://linuxfr.org/redirect/54877.html )


    • Le temps réel sous Linux

    o Articles: La guerre du temps réel
    Auteur: patrick_g ( http://patrickguignot.free.fr/ ) @ 10:33
    Thème: Linux

    Les deux grandes distributions commerciales, Novell et Red Hat, ont
    récemment annoncé la sortie d’une version dédiée spécialement au temps réel
    ( http://en.wikipedia.org/wiki/Real-time_operating_system ) et la
    compétition s’annonce âpre dans ce secteur stratégique. Novell a ouvert le
    feu le 27 novembre avec SUSE Linux Enterprise Real Time 10 (
    http://www.novell.com/news/press/novell-ships-suse-linux-enterprise-real-time-10 ) et Red Hat a immédiatement répliqué le 4 décembre avec Red Hat
    Enterprise MRG ( http://www.redhat.com/about/news/prarchive/2007/mrg.html (Messaging, Realtime et Grid Technologies).

    Cette volonté de ne pas laisser un concurrent en position de monopole sur
    ce secteur, même pour une durée infime, s’explique aisément. En effet de
    plus en plus les entreprises reposent sur l’automatisation poussée de leurs
    processus afin de gagner en réactivité. On se rappelle, lors du sommet
    Linux 2007 ( /2007/09/20/23087.html ), le témoignage du représentant du
    Crédit Suisse qui indiquait qu’un noyau patché pour le temps réel aidait à
    maintenir les profits lors d’une transaction financière.

    La prédictibilité des temps de réponse est donc un enjeu crucial et les
    distributeurs commerciaux de Linux sont en compétition pour couvrir ce
    marché au point, comme nous allons le voir, de déclencher une véritable
    guerre des communiqués.

    [en] – LWN : La compétition autour du temps réel (http://linuxfr.org/redirect/54860.html )
    [en] – Description de la solution Novell ( http://linuxfr.org/redirect/54861.html )
    [en] – Description de la solution Red Hat ( http://linuxfr.org/redirect/54862.html
    [en] – Les patchs RT du noyau ( http://linuxfr.org/redirect/54863.html )

    |> http://linuxfr.org/2007/12/13/23447.html

    Posted in 2007, GNU/Linux, Guilde, linux, logiciel libre, migration vers le libre, open source, ruby, Temps réel, Web Frameworks, web2.0 | Tagué: , , | Leave a Comment »

    Connexion entre composants Java et DotNet: Ikvm, boo, java, .NET, ironpython

    Posted by patrick sur décembre 15, 2007

    Source: http://ironpython-urls.blogspot.com/2007/11/boo-java-net-and-ironpython.html


    Thursday, November 15, 2007

    Boo, Java, .NET and IronPython

    A blogger called Tomo wondered about which .NET language to choose Boo (a mighty fine language) or IronPython. He came down in favour of Boo, and an interesting discussion ensued in the comments:

    The very next thing he tried was taking the Java class library for SWT (the user interface library) and compiled them into a .NET dll with IKVM. He then used them from Boo and IronPython, which worked!

    This is an interesting coincidence, as a few days ago Rodrigo announced on the Boo blog about boojay – a compiler that emits Java bytecode from Boo:


    Source: http://blogs.codehaus.org/people/bamboo/archives/001623_introducing_boojay.html
    (« A boo application using the SWT java GUI library. Thanks to IKVM that’s not only possible but very simple as well. So what’s the news? Well, Friday morning I was chatting with Klaus and he said to me « if you get boo to emit java bytecodes I’ll do all my stuff in boo ». How’s that for a challenge? 🙂 Thanks again to IKVM, ObjectWeb ASM and the extensible boo pipeline architecture boojay was born after a weekend of relaxed hacking « )

    http://boo-extensions.googlecode.com/svn/trunk/boojay/ (« boojay is an attempt at getting the boo compiler to emit java bytecode. Architecture
    Thanks to the amazing IKVM project it is possible to use the great ObjectWeb ASM library from boo running on mono/ms.net to emit native java bytecodes that can be executed by any compliant java virtual machine
    « )

    http://koans.tomo-online.com/2007/11/15/langage-frenzy/ (« Although I should be doing something else, Boo, IronPython and .NET kept occupying my mind. So I made a small coding experiment. First, I downloaded IKVM. Then – SWT. I compiled SWT jar to a dll. No problems here. Then I wrote a SWT hello world in IronPython. To be honest – I took a Java one from SWT website and rewrote line by line. I was surprised that my hello world ran without a glich! Next, I copied a HelloWorldSWT.py into HelloWorldSWT.boo and changed the import statement. Compiled (”By golly! No problems? No warnings?”) and run. And no problems again?? It started to look suspicious… Java run on .NET, calls from Java to native library, two different languages… and everything without a single warning? So I decided to take it to foreign territory… Ubuntu! I fired up a VMWare image with Ubuntu 6.10 (the linux vm I have handy), downloaded Linux SWT, compiled it to dll, copied HelloWorldSWT.exe from Windows along with some ikvm dlls and… no problems again! I’m really, really surprised how smooth the experiment was. Thumbs up! « )

    http://en.wikipedia.org/wiki/IKVM (« IKVM.NET is an implementation of Java for Mono and the Microsoft .NET Framework. IKVM is free software, distributed under a permissive free software licence. IKVM includes the following components: for

    • A Java Virtual Machine implemented in .NET
    • A .NET implementation of the Java class libraries
    • Tools that enable Java and .NET interoperability

    With IKVM you can run compiled Java code (bytecode) directly on Microsoft .NET or Mono. The bytecode is converted on the fly to CIL and executed. Jeroen Frijters is the main contributor to IKVM.NET. He is Technical Director of Sumatra Software, based in The Netherlands. As of June 2007, the machine supports Java 1.6 with the exception of AWT and Swing. IKVM uses OpenJDK as its class library. »)

    http://www.ikvm.net/ (« ..The following projects are related to IKVM.NET in some way:

    http://www.eclipse.org/swt/ (« SWT is an open source widget toolkit for Java designed to provide efficient, portable access to the user-interface facilities of the operating systems on which it is implemented.« )

    http://www.gnu.org/software/classpath/classpath.html (« GNU Classpath, Essential Libraries for Java, is a GNU project to create free core class libraries for use with virtual machines and compilers for the java programming language. Classpath is still a work in progress. The first public release will be version 1.0. There have been no public releases; however, pre-release source code is available via GNU’s anonymous CVS server , and snapshots of the Classpath tree have been released and are available from ftp://ftp.gnu.org/gnu/classpath/« )

    http://en.wikipedia.org/wiki/GNU_Classpath (« GNU Classpath is a project aiming to create a free software implementation of the standard class libraryJava programming language. Despite the massive size of the library to be created, the majority of the task is already done, including Swing, CORBA, and other major parts. The Classpath developers have implemented almost all of the classes from J2SE 1.4 and 5.0. Classpath can thus be used to run popular Java-based software such as Azureus and Eclipse. It is a part of the Free Software Foundation‘s GNU project and was launched so that computer users could use Java programs without giving up the freedoms which the free software movement works to secure. GNU Classpath was originally developed in parallel with libgcj due to license incompatibilities, but later merged...Since version 0.95, Java 1.5 additions like generics have been fully integrated into the main branch. The branch allows GCJ to use Eclipse compiler, ecj, to compile Java 1.5 source code to bytecode, which is then changed into native code by GCJ itself« )

    http://en.wikipedia.org/wiki/Boo_programming_language (« Boo is an object oriented, statically typed programming language developed starting in 2003, which seeks to make use of the Common Language Infrastructure support for Unicode, internationalization and web style applications, while using a Python-inspired syntax and a special focus on language and compiler extensibility. Some features of note include type inference, generators, multimethods, optional duck typing, macros, true closures, currying, and first class functions. Boo is open sourcelicensed under an MIT/BSD style license.Boo can be used with Microsoft .NET or Mono. »)

    (« Grasshopper 2.0 enables you to produce .NET Web and server applications that run on Linux & other Java-enabled platforms using ASP.NET 2.0 controls, role-based security, and C# generics. Check out our developer blogs, interop forums, code samples, and how-to articles to learn how« )

    – http://blog.mainsoft.com/blog/net-java-interop-8-links-to-get-you-started/(« 

    Posted in 2007, ASP.NET, Développement logiciel, DotNet, FSF, IDE-GUI, Ironpython, J2EE, java, JEE, python | Tagué: , , , | Leave a Comment »

    Les nouveautés dans ASP.NET Extensions: ASP.NET MVC et ASP.NET AJAX

    Posted by patrick sur décembre 15, 2007

    Comme le précise ce billet http://dosimple.ch/articles/MVC-ASP.NET/ écrit le 2 mai 2006 et celui-ci écrit le 13 mars 2007, le framework ASP.NET n’incite pas particulièrement à la séparation stricte de type Modèle, Vue, Contrôleur. On a vu que Monorail, projet open source, implémente le modèle MVC. Microsoft emboite le pas avec un grand retard en introduisant ASP.NET MVC: voir le billet suivant: http://weblogs.asp.net/scottgu/archive/2007/10/14/asp-net-mvc-framework.aspx (« One of the things that many people have asked for over the years with ASP.NET is built-in support for developing web applications using a model-view-controller (MVC) based architecture. Last weekend at the Alt.NET conference in Austin I gave the first public demonstration of a new ASP.NET MVC framework that my team has been working on. You can watch a video of my presentation about it on Scott Hanselman’s blog here.

    What is a Model View Controller (MVC) Framework?

    MVC is a framework methodology that divides an application’s implementation into three component roles: models, views, and controllers.

    • « Models » in a MVC based application are the components of the application that are responsible for maintaining state. Often this state is persisted inside a database (for example: we might have a Product class that is used to represent order data from the Products table inside SQL).

    • « Views » in a MVC based application are the components responsible for displaying the application’s user interface. Typically this UI is created off of the model data (for example: we might create an Product « Edit » view that surfaces textboxes, dropdowns and checkboxes based on the current state of a Product object).

    • « Controllers » in a MVC based application are the components responsible for handling end user interaction, manipulating the model, and ultimately choosing a view to render to display UI. In a MVC application the view is only about displaying information – it is the controller that handles and responds to user input and interaction.

    One of the benefits of using a MVC methodology is that it helps enforce a clean separation of concerns between the models, views and controllers within an application. Maintaining a clean separation of concerns makes the testing of applications much easier, since the contract between different application components are more clearly defined and articulated.

    The MVC pattern can also help enable red/green test driven development (TDD) – where you implement automated unit tests, which define and verify the requirements of new code, first before you actually write the code itself.

    A few quick details about the ASP.NET MVC Framework

    I’ll be doing some in-depth tutorial posts about the new ASP.NET MVC framework in a few weeks once the bits are available for download (in the meantime the best way to learn more is to watch the video of my Alt.net presentation).

    A few quick details to share in the meantime about the ASP.NET MVC framework:

    • It enables clean separation of concerns, testability, and TDD by default. All core contracts within the MVC framework are interface based and easily mockable (it includes interface based IHttpRequest/IHttpResponse intrinsics). You can unit test the application without having to run the Controllers within an ASP.NET process (making unit testing fast). You can use any unit testing framework you want to-do this testing (including NUnit, MBUnit, MS Test, etc).

    • It is highly extensible and pluggable. Everything in the MVC framework is designed so that it can be easily replaced/customized (for example: you can optionally plug-in your own view engine, routing policy, parameter serialization, etc). It also supports using existing dependency injection and IOC container models (Windsor, Spring.Net, NHibernate, etc).

    • It includes a very powerful URL mapping component that enables you to build applications with clean URLs. URLs do not need to have extensions within them, and are designed to easily support SEO and REST-friendly naming patterns. For example, I could easily map the /products/edit/4 URL to the « Edit » action of the ProductsController class in my project above, or map the /Blogs/scottgu/10-10-2007/SomeTopic/ URL to a « DisplayPost » action of a BlogEngineController class.

    • The MVC framework supports using the existing ASP.NET .ASPX, .ASCX, and .Master markup files as « view templates » (meaning you can easily use existing ASP.NET features like nested master pages, <%= %> snippets, declarative server controls, templates, data-binding, localization, etc). It does not, however, use the existing post-back model for interactions back to the server. Instead, you’ll route all end-user interactions to a Controller class instead – which helps ensure clean separation of concerns and testability (it also means no viewstate or page lifecycle with MVC based views).

    • The ASP.NET MVC framework fully supports existing ASP.NET features like forms/windows authentication, URL authorization, membership/roles, output and data caching, session/profile state management, health monitoring, configuration system, the provider architecture, etc. »)

    A voir:

    • https://pvergain.wordpress.com/2007/03/13/critique-de-larchitecture-aspnet/ (« Le problème avec ASP. Net est qu’il n’y a qu’un objet qui traite les demandes http, c’est l’objet PAGE. C’est lui qui a le contrôle de tout, et donc il mélange le code dit de «contrôle», et le code qui pilote la «visualisation» des éléments en html. Et bien souvent, on mélange aussi le code qui pilote le «Modèle» c’est à dire l’obtention des données directement depuis la base de données avec Ado.Net (c’est ce qu’on obtient lorsqu’on fait du WYSIWYG dans Visual Studio en choisissant les Sql Data Source et les glissant-déposant sur l’ihm). Cet anti-modèle (ou anti–pattern) a été souvent pointé du doigt par les architectes et développeurs, car en plus de faire produire du code spaghetti (bien que orienté objet), il rend impossible les tests systématisés (automatisés).« )
    • http://dosimple.ch/articles/MVC-ASP.NET/ (« Dans le framework ASP.NET la vue est un fichier HTML agrémenté de balises ASP. Le contrôleur et le modèle sont en général mélangés dans un objet qui dérive de la classe System.Web.UI.Page. »)
    • http://www.castleproject.org/monorail/index.html (« MonoRail is a MVC Web Framework inspired by Action Pack. MonoRail differs from the standard WebForms way of development as it enforces separation of concerns; controllers just handle application flow, models represent the data, and the view is just concerned about presentation logic. Consequently, you write less code and end up with a more maintainable application. Although the project name is MonoRail, we do not have any affiliation with the Mono project. MonoRail runs on Microsoft .Net 1.1, 2.0 and Mono.« )
    • http://en.wikipedia.org/wiki/ASP.NET_MVC_Framework (« ASP.NET MVC Framework is a Model-view-controller framework which Microsoft is adding to ASP.NET. It allows an application to be built as a composition of three roles: Model, View and Controller. A Model represents the state of a particular aspect in the application. Frequently, a model maps to a database table, with the entries in the table representing the state of the table. A Controller handles interactions and updates the model to reflect a change in state of the application. A View ASP.NET MVC Framework couples the models, views and controllers using interface-based contracts, thereby allowing each component to be easily tested independently. The view engine in the MVC framework uses regular .aspx pages to design the layout of the UI pages onto which the data is composed; however any interactions are routed to the controllers rather than using the postback mechanism. Views can be mapped to REST-friendly URLs. ASP.NET MVC Framework has been launched as a Community Technology Preview on December 10, 2007 extracts necessary information from a model and renders a UI to display that.. »)
    • http://www.hanselman.com/blog/ScottGuMVCPresentationAndScottHaScreencastFromALTNETConference.aspx ( » I attended the ALT.NET Conference last weekend in Austin, TX. I personally find the name « Alt » as in « Alternative » too polarizing and prefer terms like « Pragmatic.NET » or « Agile.NET. » At the conference I suggested, partially in jest, that we call it « NIH.NET » as in « Not Invented Here.NET. » 😉 Ultimately this is a group that believes in:
      • Continuous Learning
      • Being Open to Open Source Solutions
      • Challenging the Status Quo
      • Good Software Practices
      • DRY (Don’t Repeat Yourself)
      • Common Sense when possible.

      ScottGu gave an hour long presentation on the upcoming MVC Framework and I took some guerilla video. ScottGu’s presentation is here in Silverlight and it’s about 60 minutes long. Considering it’s so long, the video squished nicely. This was the first time the MVC Framework was shown publicly. Note that this was a Prototype, not the Production code and both ScottGu and I make that point a number of times to drive home that it’s early. Some of the code was written on a plane, just to give you an idea. After The Gu did his piece on the MVC Framework, I showed some prototype hacking that I’d done over the previous few days along with some work Phil Haack did. My presentation is here as Silverlight and it’s about 30 minutes long. I showed the Model View Controller with Controllers in IronPython and an IronPython view using a WebFormViewEngine. Then I talked about the possibilities of alternate ViewEngines and showed Phil Haack’s prototype RubyViewEngine. »)

    • http://weblogs.asp.net/scottgu/archive/2007/11/13/asp-net-mvc-framework-part-1.aspx ( » ASP.NET MVC Framework (Part 1) I’m going to use a simple e-commerce store application to help illustrate how the ASP.NET MVC Framework works. For today’s post I’ll be implementing a product listing/browsing scenario in it. Specifically, we are going to build a store-front that enables end-users to browse a list of product categories when they visit the /Products/Categories URL on the site>>Since it adds a testing project, does this require Team System? No – the good news is that Test Projects with VS 2008 are now supported with the VS 2008 Professional edition – and no longer require team system. You will also be able to use the VS Express and Standard edition products as well, and then use NUnit, MBUnit or some other testing framework with them (we’ll ship project templates for these as well…>> 2. Is it also possible to have this URL mapped: /Products/Beverages/3 instead of /Products/Beverages?page=3 or does it _need_ the parameter name? Yes – this is totally supported. Just set a route rule for /Products/Beverages with the format /Products/<Category>/<Page> – they’ll then get passed in as arguments to the action method:public List(string category, int? page) {}>>Also, some ideas and general remarks: 1. I’d love to see more helper methods for use in the views, I like how Ruby on Rails has many shortcuts for creating forms and formfields etc. Yes – we’ll have a rich library of helper methods for the views. They’ll include helpers to create all the standard forms, formfields and more.

    >>2. Migrations! Not a part of MVC but from my experience with Ruby on Rails I would love to see support for this somewhere, anywhere! It would fit perfectly with the more agile way of developing that is possible with ASP.NET MVC. Rob Conery is building .NET Migrations support as part of the SubSonic project, and recently joined Microsoft. You’ll be able to use this with ASP.NET MVC

    >>I’m also very keen to get my hands on the CTP. Scott, you mention, using Inversion of Control containers with the MVC framework. I’d be very interested in seeing a blog post on this subject. Also, will there be a sample application (with tests and IoC) available alonside the CTP? We have a IControllerFactory extensiblity point that owns creating Controller instances. You can use this with a IOC container to customize any Controller instance prior to it being called by the MVC framework. We’ll be posting samples of how to use this with ObjectBuilder and Windsor with the first CTP I believe

    >> Very cool! One thing I’d like to see guidance on is developing MVC apps with multiple UIs. You say here that it’s best to put your models and controllers in the web app, but say we want a Winforms, WPF, Silverlight, and Web UI all doing similar things. Or a Mobile Web UI and Desktop Web UI… Would these still each need their own Models and Controllers, or does it make sense to have one library that they all share? If so, how is that supported? I’m still new to MVC, so if I’m missing something conceptually here, tell me! That is a good question, and one we’ll need to provide more guidance on in the future. In general it is often hard to share the same controller across both client and web UI, since the way you do data access and the stateful/stateless boundaries end up being very different. It is possible – but some guidance here would ceretainly be useful. My team should hopefully be coming out with this in the future

    >>I really appreciate this material. Do you support the MVC pattern over the MVP pattern? Or are there just better scenarios for using each? The above approach I showed uses a MVC based pattern – where the Controller and the View tend to be more separate and more loosly coupled. In a MVP pattern you typically drive the UI via interfaces. This works well with a controls model, and makes a lot of sense with both WinForms and WebForms where you are using a postback model. Both MVC and MVP are perfectly fine approaches to use. We are coming out with the MVC approach for ASP.NET partly because we’ve seen more demand for it recently for web scenarios…

    >> When can we expect a similar chapter with SubSonic as the DAL and scaffolding provider? (see http://oakleafblog.blogspot.com/2007/11subsonic-will-be-toolset-for-microsofts.html I’ll be covering scaffolding in a future blog post. LINQ to SQL scaffolding is built-in with ASP.NET MVC and doesn’t require SubSonic. SubSonic will also obviously be adding new ASP.NET MVC features as well.

    >> My applications in .NET works with « 3 layers » pattern (business logic and data access in your own dll). How can i use this wonderfull MVC with my Models (data access) and Controllers (B.Logic)?? Because if i’m not reuse this, i’ve repeat code in every layer; then this MVC is not DRY (don’t repeat yourself) and the community don’t accept. There is no need to put your business and data logic in the same assembly as your controllers. You can split them up across multiple class library projects if you prefer

    >> Does this mean that with MVC, we no longer use LinqDatasource in the View section? While the LinqDataSource control will technically work in MVC Views, if you are using a MVC model you wouldn’t want to place it there. Instead you want to perform all of your data and application logic in the Controller layer – and then pass the needed data to the view.

    >> Perhaps I missed it somehow, but can you explain on which version of asp.net will this ctp run? The MVC framework builds on top of .NET 3.5

    >> Scott, this is amazing timing! The URL mapping features inherit in an MVC application are PERFECT for the upgrade to ASP.NET 3.5 I’m making to my spelldamage.com site. Hosting question, will hosts simply need to support the ASP.NET 3.5 framework to allow us to run ASP.NET MVC applications? Your hoster will need to support .NET 3.5 for the MVC support.

    >> Is’nt the MVC framework, in fact the Controller, implementation of the Front Controller pattern? Yes – the ASP.NET MVC framework uses a front-controller pattern. »)

    • http://weblogs.asp.net/scottgu/archive/2007/12/03/asp-net-mvc-framework-part-2-url-routing.aspx (« Last month I blogged the first in a series of posts I’m going to write that cover the new ASP.NET MVC Framework we are working on. The first post in this series built a simple e-commerce product listing/browsing scenario. It covered the high-level concepts behind MVC, and demonstrated how to create a new ASP.NET MVC project from scratch to implement and test this e-commerce product listing functionality. In today’s blog post I’m going to drill deeper into the routing architecture of the ASP.NET MVC Framework, and discuss some of the cool ways you can use it for more advanced scenarios in your application… What does the ASP.NET MVC URL Routing System do? The ASP.NET MVC framework includes a flexible URL routing system that enables you to define URL mapping rules within your applications. The routing system has two main purposes:
      • Map incoming URLs to the application and route them so that the right Controller and Action method executes to process them
      • Construct outgoing URLs that can be used to call back to Controllers/Actions (for example: form posts, <a href= » »> links, and AJAX calls)

    Having the ability to use URL mapping rules to handle both incoming and outgoing URL scenarios adds a lot of flexibility to application code. It means that if we want to later change the URL structure of our application (for example: rename /Products to /Catalog), we could do so by modifying one set of mapping rules at the application level – and not require changing any code within our Controllers or View templates.

    >> BTW, can you explain in short about the Active Record Type support in our MVC.

    .NET 3.5 has LINQ to SQL built-in – which is a great ORM. LINQ to Entities will also be built-into .NET 3.5 in the future (it also ships with the MVC setup). The MVC framework doesn’t require LINQ to SQL or LINQ to Entities as the data model – it also works with NHibernate, LLBLGen, SubSonic, DataSets, DataReaders, and/or any other data model with .NET. We will, though, provide out of the box scaffolding support for LINQ to SQL and LINQ to Entities that delivers nice integration with the MVC support.

    >> Question : What is this MockHttpContext in the UnitTest class? I mean, i can guess what it is .. but is it new in .NET 3.5 or the MVC framework? The MockHttpContext is an example mock object. It isn’t currently built-in with the MVC framework (with the first preview you’d need to create this yourself). I’m hoping that before the MVC framework ships, though, that there are a built-in set of mock objects and test helpers that you can use out of the box (without having to mock them yourself). Note that all core contracts and types with the MVC framework are mockable (non-sealed and interfaces). So you can also use any existing Mock framework to test it (RhinoMocks, TypeMock, etc).

    >> 1) Is it possible to use routes with a file extension if I don’t want to enable wildcard script mappings? For example, /Products/List/Beverages.rails or /Products/Detail/34.rails ? Yes – this is fully supported. We recommend changing your route rule to /[controller].mvc/[action]/[id]. When you install the ASP.NET MVC Framework we automatically register this .mvc extension – although you are free to use any other one you want.

    >> Hypothetically, do you think it would be possible to customise the route creation process so that route data could be gathered from attributes on actions? We don’t currently support this built-in, but hypothetically you could load all the controllers at app-startup and use reflection on them to calculate the route rules. This would enable the scenario you are after.

    >> Is it possible to use IronRuby as the coding language to target the MVC framework?? Yes – we’ll support both IronRuby and IronPython with the ASP.NET MVC Framework.

    >> I am liking this more and more. I can see how the routing configuration code in global.asax.cs could become quite large. In my application, I can see dozens, maybe hundreds of unique routing rules. Is there any way this configuration can be put in a file somewhere? That file would be read on Application start. Seems like that would make deployment of routing changes easier, too. We don’t currently have a pre-built file format for reading in mapping rules. But it should be relatively easy to build (you could even use LINQ to XML to read in and construct the rules).

    >> Just out of curiosity where in the HttpApplication cycle are the routing rules evaluated and are they exposed in any way to the rest of the HttpApplication cycle? My current security system grants permissions at what would become the controller-action level so if the route determination is made early enough I’d really like to drive my authorization off of it.
    The routing rules are resolved after the OnPostMapRequestRequestHandler event. This means that it will happen *after* your authorization rules evaluate. The good news is that this means you should be able to re-use your existing security system as-is.

    >> Will there be any way to use an XML document to create the routing rules outside of the Global.asax code? Yep – this scenario will be supported.

    >> I noticed that in Django, you have to repeat yourself kind of often when you have a deep nested hierarchy of pages. Your search & search-results pages seem to be continuing that trend. I’m sure I could come up with some hierarchical data structure which can be serialized into Route objects, but is the ASP.NET team planning anything along those lines that would come stock?

    With our first preview the Route type is not extensible (you can’t subclass it) – which means you sometimes need to register multiple routes for a series of things. For the next preview we are looking at enabling Route to be sub-classed – in which case you could easily encapsulate multiple URL mappings into a single registration.

    >> Have you thought about being able to define a regular expression for url matching and using backreferences or named captures as the tokenized url? I think this would allow for much more flexibility while keeping the list of routing rules down to a minimum.

    Yes – this is something we are looking at. The challange with regular expressions is that only a subset of people really understand them (and importantly – understand how to optimize them). But I agree that having this as an option would be super flexible.

    >> I must say that i am still worried about having to leave all the knowledge that we ave until now with webforms and start a new technology and still think that we would need some kind of a bridge to close the gap between today solution of webforms and tomorrow solution of MVC. Although the way you structure application flow will be different, I think you’ll be pleasantly surprised by the amount of knowledge overlap that exists. Authentication, Authorization, Caching, Configuration, Compilation, Session State, Profile Management, Health Monitoring, Administration, Deployment, and many, many other things are exactly the same. MVC views are also .aspx pages (that use .ascx user controls and .master files). So the concept re-use is quite heavy there as well. »)

    • http://weblogs.asp.net/scottgu/archive/2007/12/06/asp-net-mvc-framework-part-3-passing-viewdata-from-controllers-to-views.aspx (« The last few weeks I have been working on a series of blog posts that cover the new ASP.NET MVC Framework we are working on. The ASP.NET MVC Framework is an optional approach you can use to structure your ASP.NET web applications to have a clear separation of concerns, and make it easier to unit test your code and support a TDD workflow. The first post in this series built a simple e-commerce product listing/browsing site. It covered the high-level concepts behind MVC, and demonstrated how to create a new ASP.NET MVC project from scratch to implement and test this e-commerce product listing functionality. The second post in this series drilled deep into the URL routing architecture of the ASP.NET MVC framework, and discussed both how it worked as well as how you can handle more advanced URL routing scenarios with it. In today’s blog post I’m going to discuss how Controllers interact with Views, and specifically cover ways you can pass data from a Controller to a View in order to render a response back to a client. In Part 1 of this series, we created an e-commerce site that implemented basic product listing/browsing support. We implemented this site using the ASP.NET MVC Framework, which led us to naturally structure the code into distinct controller, model and view components. When a browser sends a HTTP request to our web site, the ASP.NET MVC Framework will use its URL routing engine to map the incoming request to an action method on a controller class to process it. Controllers in a MVC based application are responsible for processing incoming requests, handling user input and interactions, and executing application logic based on them (retrieving and updating model data stored in a database, etc). When it comes time to render an HTML response back to the client, controllers typically work with « view » components – which are implemented as separate classes/templates from the controllers, and are intended to be focused entirely on encapsulating presentation logic. Views should not contain any application logic or database retrieval code, instead all application/data logic should only be handled by the controller class. The motivation behind this partitioning is to help enforce a clear separation of your application/data logic from your UI generation code. This makes it easier to unit test your application/data logic in isolation from your UI rendering logic.Views should only render their output using the view-specific data passed to it by the Controller class. In the ASP.NET MVC Framework we call this view-specific data « ViewData ». The rest of this blog post is going to cover some of the different approaches you can use to pass this « ViewData » from the Controller to the View to render.

    >> One question Scott: Let say i’m jumpng on MS MVC bandwagon, do i have to abandon asp.net Page Life cycle godddies, should i set up my mind to different approach. When you use the ASP.NET MVC approach you’ll want to have all post in your site go to your Controller. This helps ensure that the application can be easily tested and preserves the separation of concerns. This is different from using ASP.NET server controls which postback to themselves (which is very powerful too – but means that it can sometimes be slightly harder to test). What doesn’t change is that all of other ASP.NET pieces (forms authentication, role management, session state, caching, profiles, configuration, compilation, httprequest/response, health monitoring, etc, etc) works with both web forms based pages and MVC based pages. MVC UI are also built with .aspx, .master, and .ascx files – so there is a high level of skill re-use there as well.

    >> Some asp.net controls require <form runat=server>. If we use a asp:dropdownlist for example, we have to place in the asp:form. And this means viewstate comes back! Is there any way to get rid of hidden form fields? Or you suggest that we do must use classic HTML controls ? I’ll cover this more in my next blog in this series. We have helpers that can automate generating things like dropdownlists, etc. Think of them as controls for MVC. These don’t use viewstate and give you a little more control over the output of your HTML.

    >> It would be nice if you can just compare a bit our MVC with ROR. Within ROR, we can create tables, Columns and Rows with Ruby, without using a single line of SQL, and all its done through ActiveRecord. In short all CRUD advantages.

    >> SubSonic is almost in this line. Can you explain more in this line or how SubSonic can be used to take ActiveRecord Type advantages.

    RoR is made up of several components.

    « Action Controller » is the name of the MVC framework that Rails uses. That is the closest analogy to the ASP.NET MVC Framework – and at a high-level the ASP.NET MVC framework uses many of the same core concepts (URLs map to controller actions). The ASP.NET MVC Framework has a few additional features (like the ability to map incoming parameters directly to action method parameters). It is also more explicit about calling RenderView within the request.

    « Active View » is the name of the View engine that Rails uses. This is analagous to the .aspx/.master/.ascx infrastructure ASP.NET has. Our view engine is IMO a little richer, and supports several additional features (declarative controls/components, templating, multiple regions for nested master pages, WYSIWYG designer, strongly typed ViewData access, pluggable storage provider, declarative localization, etc).

    « Active Record » is the name of the ORM (object relational mapper) that RoR uses. This is analagous to an ORM in the .NET world – whether it is LINQ to SQL, LINQ to Entities, LLBLGen, SubSonic, NHibernate, ActiveRecord (the .NET version), etc. All of these ORMs have ways to map rows and columns in a database to objects that a developer then manipulates and works against (and can save changes back). The LINQ to SQL ORM is built-in to .NET 3.5 today, and LINQ to Entities will be built-in with .NET 3.5 SP1.

    I think from your follow-up question above you are referring specifically to the « migrations » feature in RoR – which allows you to define table schemas using code, and version the schemas forward/backward. There isn’t a built-in version of this in the core .NET Framework today – although the SubSonic project has recently released a version that allows you to-do this using .NET. You can find out more about it here: www.subsonicproject.com.

    >> Superb, …but I still longing for the IOC integration (Spring.NET, Windsor, StructureMap)…maybe in the next post ? I am planning on posting about IOC and dependency injection in the future (the ASP.NET MVC framework fully supports it and can be used with Spring.NET, Windsor, StructureMap, etc). I have a few other more basic MVC tutorials I need to get out of the way first – but testing and dependency injection are on the list for the future.

    >> Nice series, eagerly waiting to see AJAX approach in the new ASP.NET MVC Framework, so when shall we expext that.
    We will have ASP.NET AJAX support with the ASP.NET MVC Framework. I’ll talk more about this in a future tutorial series post.

    >> This is coming together nicely. I was just hoping you might explain why there are 3 different ways to pass the ViewData? Does each method offer something that the others don’t? If not, surely it would be best to choose one method and force all developers to follow the same practice? Conceptually there are two ways to pass viewdata – either as a dictionary, or as a strongly typed object. In general I recommend using the strongly typed dictionary approach – since this gives you better compilation checking, intellisense, and refactoring support. There are, however, some times when having a more latebound dictionary approach ends up being flexible for more dynamic scenarios« )

    • http://blog.wekeroad.com/2007/10/26/microsoft-subsonic-and-me/ (« Rather than try and come up with some lame metaphors and trite pop-culture references, I’ve decided to use some advice from English 101 Professor:

      “Whatever the hell you’re trying to say, just say it”

      So I will: I’m going to work for Microsoft. I just signed the offer letter. I’ll be working with the ASP.NET guys on the new MVC platform as well as some other groovy things like Silverlight. I get to work “across the hall” from one of my very good friends – Phil Haack. I think it’s worth pointing out that SubSonic hasn’t been “bought”. Some might smell a conspiracy here, but I’ll leave that to the X-Files and Cap’n Crunch crowd to drum up all the evil reasons why the mothership has “beamed me up”. SubSonic will remain under the same MPL 1.1 license it always has, and will remain as completely Open Source as it always has – nothing will change at all. I’m just getting paid, essentially, to work on it 🙂...This is crucial to me. I decided to be direct with him and make sure we both understood these important points:

      “I want to be sure I have complete creative control over SubSonic, and that you don’t censor my blog… is that cool?”

      Shawn’s response is why I took the job:

      “Well Duh…” (he added some more things that were a bit more eloquent than “duh” – but I don’t think I was listening).

      I can make jokes about the UAC on my blog? And make up fictional Matrix converstations with ScottGu? Sign me up! I start on November 12th, right after DevConnections in Vegas (come on by if you’re out that way at the DNN Open Force« )

    • http://www.subsonicproject.com/ (« A Super High-fidelity Batman Utility Belt. SubSonic works up your DAL for you, throws in some much-needed utility functions, and generally speeds along your dev cycle. Why SubSonic ? Because you need to spend more time with your friends, family, dog, bird, cat… whatever. You work too much. Coding doesn’t need to be complicated and time-consuming. »)
    • http://en.wikipedia.org/wiki/Test-driven_development (« Test-Driven Development (TDD) is a software development technique consisting of short iterations where new test cases covering the desired improvement or new functionality are written first, then the production code necessary to pass the tests is implemented, and finally the software is refactored to accommodate changes. The availability of tests before actual development ensures rapid feedback after any change. Practitioners emphasize that test-driven development is a method of designing software, not merely a method of testing. Test-Driven Development began to receive publicity in the early twenty-first century as an aspect of Extreme Programming, but more recently is creating more general interest in its own right. Along with other techniques, the concept can also be applied to the improvement and removal of software defects from legacy code that was not developed in this way . »)
    • ss
    • http://weblogs.asp.net/scottgu/archive/2007/12/09/asp-net-mvc-framework-part-4-handling-form-edit-and-post-scenarios.aspx
    • (« ASP.NET MVC Framework (Part 4): Handling Form Edit and Post Scenarios   The last few weeks I have been working on a series of blog posts that cover the new ASP.NET MVC Framework we are working on.  The ASP.NET MVC Framework is an optional approach you can use to structure your ASP.NET web applications to have a clear separation of concerns, and make it easier to unit test your code and support a TDD workflow. The first post in this series built a simple e-commerce product listing/browsing site.  It covered the high-level concepts behind MVC, and demonstrated how to create a new ASP.NET MVC project from scratch to implement and test this e-commerce product listing functionality.  The second post drilled deep into the URL routing architecture of the ASP.NET MVC framework, and discussed both how it worked as well asthird post discussed how Controllers interact with Views, and specifically covered ways you can pass view data from a Controller to a View in order to render a response back to a client.  In today’s blog post I’m going to discuss approaches you can use to handle form input and post scenarios using the MVC framework, as well as talk about some of the HTML Helper extension methods you can use with it to make data editing scenarios easierClick here to download the source code for the completed application we are going to build below to explain these concepts… Our Data Model. We are going to use the SQL Server Northwind Sample Database to store our data.  We’ll then use the LINQ to SQL object relational mapper (ORM) built-into .NET 3.5 to model the Product, Category, and Supplier objects that represent rows in our database tables. We’ll begin by right-clicking on our /Models sub-folder in our ASP.NET MVC project, and select « Add New Item » -> « LINQ to SQL Classes » to bring up the LINQ to SQL ORM designer and model our data objects…To learn more about LINQ and LINQ to SQL, please check out my LINQ to SQL series here The HtmlHelper object (as well as the AjaxHelper object – which we’ll talk about in a later tutorial) have been specifically designed to be easily extended using « Extension Methods » – which is a new language feature of VB and C# in the VS 2008 release.  What this means is that anyone can create their own custom helper methods for these how you can handle more advanced URL routing scenarios with it.  The objects and share them for you to use. We’ll have dozens of built-in HTML and AJAX helper methods in future previews of the ASP.NET MVC Framework.  In the first preview release only the « ActionLink » method is built-into System.Web.Extensions (the assembly where the core ASP.NET MVC framework is currently implemented).  We do, though, also have a separate « MVCToolkit » download that you can add to your project to obtain dozens more helper methods that you can use with the first preview release.
    • >> This is nice. But do you handle subcomponents? subviews? Is view reuse possible inside other view? This is very important for even for modest sized applications? How would you handle posts correcly inside of subviews 😉 ?The first public MVC preview doesn’t have the concept of SubControllers yet (where you can attach them for regions of a larger view).  That is something we have planned for to tackle soon though.

      >> However, liviu raises good questions about Sub-Controllers, Composite Views and AJAX scenarios. How Will the MVC framework address the complex wiring of different parts of a page to different controllers for async updates?? My brain hurts thinking about it, yet I have implement these portal pages all the time cos our customers demand it. The first ASP.NET MVC Preview allows you to call RenderView (for example: RenderView(« Edit »)) and have it apply to either a .aspx viewpage or a .ascx viewusercontrol.  This ends up being really useful for scenarios where you are doing AJAX callbacks and want to refresh a portion of a page.  These callbacks could either be to the same Controller that rendered the origional page, or to another Controller in the project. We don’t have all the AJAX helper methods yet for this – but you could roll them yourself today.  We’ll obviously be releasing an update that does include them in the future.

    • >> Can you provide an example of how we might use a server side control to generate the drop down list or a textbox (a la WebForms) along with the pro’s and con’s of each approach? Personally, I do not like the old ASP <%= … %> syntax; but if there is a good reason to use it then I am willing to change that opinion. The main reason I showed the <% %> syntax in this post was that we don’t have the server-side MVC control equivalents available yet for this dropdown and text scenario.  That is on our roadmap to-do though – at which point you don’t need to necessarily use the <% %> syntax. In general what we’ve found is that some developers hate the <% %> syntax, while others prefer it (and feel that controls get in the way).  We want to make both sets of developers happy, and will have options for both. 🙂
    • >> Great work on the MVC model, it is a clean and intuitive model that appears to scale well. My only recommendation is that your actions (verbs) appear after the ids (nouns), e.g. [Controller]/[Id]/[Action]/  That would keep the architecture noun focused, opposed to verb focused. With this approach you can easily build an administrative interface on a public read-only site by adding verbs such as /edit/ or /delete/ at the end of your URL. A simple security rule can be added to the Controller that says ignore all Verbs after a noun, such as category or product, if user is not part of an administrative group. Thanks for the suggestion Josh.  You can do this today by creating your own custom route registration.  In the next preview I believe Route will be extensible so that you could also create a single resource route that supports these semantics.>> I was wondering if we could get an idea of the official « roadmap » for asp.net mvc?  Specifically, I’d like to know what features the team plans to release on what dates … ultimately, when this thing will RTM.  As I’ll be evaluating mvc and monorail for an upcoming app, this kind of information would really be helpful in determining which direction to go. We don’t have a formally published roadmap just yet – we will hopefully publish one early next year though.« )
    • http://en.wikipedia.org/wiki/ASP.NET_AJAX (« ASP.NET AJAX, formerly code-named Atlas, is a set of extensions to ASP.NET developed by Microsoft for implementing Ajax functionality. Including both client-side and server-side components, ASP.NET AJAX allows the developer to create web applications in ASP.NET 2.0 (and to a limited extent in other environments) which can update data on the web page without a complete reload of the page. The key technology which enables this functionality is the XMLHttpRequest object, along with Javascript and DHTML. ASP.NET AJAX was released as a standalone extension to ASP.NET in January 2007 after a lengthy period of beta-testing. It was subsequently included with version 3.5 of the .NET Framework, which was released alongside Visual Studio 2008 in November 2007.« )

    Posted in 2007, Acces aux données, active record, AJAX, Architecture logicielle, ASP.NET, Développement logiciel, design pattern, DotNet, IDE-GUI, Ironpython, javascript, open source, ORM, RIA, ruby, tests, Web Frameworks | Tagué: , , , , , , , | Leave a Comment »