2011年3月15日火曜日

Moodle

Moodle is a software package for producing Internet-based courses and web sites. It is a global development project designed to support a social constructionist framework of education.

Moodle is provided freely as Open Source software (under the GNU Public License). Basically this means Moodle is copyrighted, but that you have additional freedoms. You are allowed to copy, use and modify Moodle provided that you agree to: provide the source to others; not modify or remove the original license and copyrights, and apply this same license to any derivative work. Read the license for full details and please contact the copyright holder directly if you have any questions.

Moodle can be installed on any computer that can run PHP, and can support an SQL type database (for example MySQL). It can be run on Windows and Mac operating systems and many flavors of linux (for example Red Hat or Debian GNU). There are many knowledgeable Moodle Partners to assist you, even host your Moodle site.

The word Moodle was originally an acronym for Modular Object-Oriented Dynamic Learning Environment, which is mostly useful to programmers and education theorists. It's also a verb that describes the process of lazily meandering through something, doing things as it occurs to you to do them, an enjoyable tinkering that often leads to insight and creativity. As such it applies both to the way Moodle was developed, and to the way a student or teacher might approach studying or teaching an online course. Anyone who uses Moodle is a Moodler.

Come moodle with us!

Moodle/Sakai

troduction

CMS

Name

Language

Server

Database

License

Moodle

PHP

Apache

MySQL, Postgres

GPL

Sakai

Java

Tomcat

HSQLdb, MySQL, Oracle

Educational Community License

[edit]

Moodle

An open source e-learning platform.

§                     Founded: 2002

§                     Funding: $0 initial funding and ~ $12,000 a year from individual donors.

[edit]

Sakai

An open source Collaboration and Learning Environment (CLE) software tailored specifically for the educational community.

§                     Founded: 2004

§                     Funding: $2,200,000 initial grant from Mellon Foundation and Hewlett Foundation and $4,400,000 from core partners.

§                     Partners: University of Michigan, Indiana University, MIT, Stanford, the uPortal Consortium, and the Open Knowledge Initiative (OKI) with the support of the Andrew W. Mellon Foundation

[edit]

Licensing

[edit]

Moodle

§                     License: Open Source software (under the GNU Public License)

§                                 You are allowed to copy, use and modify Moodle provided that you agree to: provide the source to others; not modify or remove the original license and copyrights, and apply this same license to any derivative work.

[edit]

Sakai

§                     License: Educational Community License, Sakai Software License

§                                 As an "open/open" license, the source code is available for unrestricted development by commercial or noncommercial entities, and it does not impose use of a particular license on derivative works.

§                     Sakai Educational Partner's Program (SEPP): A for-fee community that is open to educational institutions. The SEPP was launched to focus on the needs of educational institutions that wish to adopt Sakai tools or to develop tools for inter-institutional portability. The SEPP provides partners early information on the direction of Sakai, strategic briefings to help plan for Sakai at partner institutions, and discussions of the project road map. Partners get early access to Sakai documents and some pre-release software.[1]

§                                 The regular membership fee for partner institutions is $10,000 per year for three years, with a discounted rate of $5,000 per year for institutions with a fall enrollment below 3,000 students. [2]

§                                 Like Red Hat Linux or Zope, you will be free to download the Sakai code and help yourself (even if you are a company looking to build products on Sakai), but you have to pay for anything more than that.[3]

[edit]

Schools

Moodle

Name

Location

Students

-

Aquinas College

Grand Rapids, MI

2,300

-

Augustana College

a

a

Salem College

Winston-Salem, North Carolina

1,100

 

 

 

 

 

 

 

 

Lake Forest College

Lake Forest, Illinois

1,400

 

 

 

 

 

 

 

 

 

[edit]

Architecture

[edit]

Moodle

[edit]

Moodle & LAMP

Moodle will run on any computer that can run PHP, and can support many types of database (particularly MySQL). It utilizes the LAMP architecture, which refers to a set of free software programs commonly used together to run dynamic Web sites or servers:

§                     Linux, the operating system;

§                     Apache, the Web server;

§                     MySQL, the database management system (or database server);

§                     Perl, PHP, Python, and/or Primate (mod mono), scripting/programming languages.

[edit]

Comments

Steve Hamm:

For one, many of the now-large companies built from the ground up to operate on the Internet don't make Java a major piece of their tech strategy. Those include Google (GOOG) and Yahoo! (YHOO). The new generation of lighter-weight programming tools, including AJAX and PHP, are immensely popular with the Web 2.0 startups, including the likes of Friendster, Flickr, and Facebook.[4]

Rosenberg, Asay (Infoworld); LAMP is growing in popularity:

LAMP runs a vast majority of the massively scalable websites out there, and is also the favorite deployment stack for most of the "Web 2.0" crowd, including Friendster, Facebook, MySpace, and Flickr. Both IBM and Oracle announced support for PHP in 2005, and there has been an upswing in enterprise adoption of the LAMP stack.[5]

[edit]

Sakai

[edit]

The Sakai Java Framework

Sakai is a Java 2 Enterprise Edition (J2EE) application combining many prominent Open Source Java frameworks (Hibernate, Spring Framework and JavaServer Faces, to name a few). [6]

Java Platform:

§                     Java Platform, Enterprise Edition (Java EE) - The industry standard for developing portable, robust, scalable and secure server-side Java applications.

§                                 Java Servlet Technology - A simple, consistent mechanism for extending the functionality of a Web server and for accessing existing business systems. A servlet can almost be thought of as an applet that runs on the server side--without a face. Java servlets make many Web applications possible.

§                                 JavaServer Pages Technology - A simplified, fast way to create dynamic web content. JSP technology enables rapid development of web-based applications that are server- and platform-independent.

§                                 JavaServer Faces Technology - Simplifies building user interfaces for JavaServer applications. Developers of various skill levels can quickly build web applications by: assembling reusable UI components in a page; connecting these components to an application data source; and wiring client-generated events to server-side event handlers.

§                                 JavaBeans

§                     Apache Tomcat - Tomcat implements the servlet and the JavaServer Pages (JSP) specifications from Sun Microsystems, providing an environment for Java code to run in cooperation with a web server.

Open Source Frameworks:

§                     Hibernate

§                     Spring Framework

[edit]

Comments

Rosenberg, Asay (Infoworld); Large websites use a Java architecture:

A lot of Java developers are moving away from full blown J2EE to lightweight Java, which includes Tomcat, Spring, and Hibernate, among other open source Java projects. There are some big websites running this architecture, including E*TRADE and EBay. Lightweight Java is built on open source projects, which are a very different set of Java APIs than J2EE and are not officially sanctioned by Sun or the JCP.[5]

[edit]

Java and PHP

[edit]

Sakai

Java and associated technolgies: a steep learning curve.

§                     Limits the universe of potential contributors and 'tinkereres'.

§                     Java programmers have a big learning curve approaching Sakai development. [7]

§                     Many smaller institutions do not have a lot of Java expertise in their IT departments. [8]

§                     Some say this 'tinkering' drives the success of the Moodle project. [9]

§                     Requirements are driven beauracraticly by the universities who pay the bills not by the community of adopters.[9]

§                                 A project done in Java will cost 5 times as much, take twice as long, and be harder to maintain than a project done in a scripting language such as PHP or Perl.[10]

Past the learning curve, Java developers believe large, complex projects projects shine in Java.

§                     Java is not a 'universal pill'. It has to be used where it serves best - complex, heterogenous, geographically spread corporate environment. [10]

§                     I find Java a very good tool as the project ages. It seems more maintainable, especially with multiple coders in serial, than Perl, and more scalable than PHP... Unforunately, these tools do have a learning curve. [10]

[edit]

Moodle

§                     LAMP is accessible; PHP has easy learning curve

§                                 The LAMP architecture is very approachable and reliable for many smaller schools.

[edit]

Scalability

Dictionary.com:

Scalability: How well a solution to some problem will work when the size of the problem increases.

Chris Shiflett; What is Scalability?:

A textbook definition would be something to the effect of, "the ability to scale." This is probably a starting point that everyone can agree to. So why do some people argue that certain technologies (PHP, mod_perl, Java, etc.) don't scale? I have always assumed that these people define scalability as the ability for something to scale well and that they're using their own subjective opinions to define what scales well and what doesn't. This is where things go wrong. It also seems that more and more people use scalability as a measure of performance, when this is not the case either. Something that performs very poorly can still potentially scale very well. Scalability is a relative measurement.[11]

Rasmus Lerdorf; A Shared-Nothing Architecture is Scalable:

Scalability is gained by using a shared-nothing architecture where you can scale horizontally infinitely. A typical Java application will make use of the fact that it is running under a JVM in which you can store session and state data very easily and you can effectively write a web application very much the same way you would write a desktop application. This is very convenient, but it doesn't scale. To scale this you then have to add other mechanisms to do intra-JVM message passing which adds another level of complexity and performance issues. There are of course ways to avoid this, but the typical first Java implementation of something will fall into this trap.

PHP has no scalability issues of this nature. Each request is completely sandboxed from every other request and there is nothing in the language that leads people towards writing applications that don't scale.[12]

Chris Shiflett; HTTP, PHP, and Statelessness:

So how does scalability apply to the Web? First, you should ask yourself whether the Web's fundamental architecture is scalable. The answer is yes. Some people will describe HTTP's statelessness in a derogatory manner. The more enlightened people, however, understand that this is one of the key characteristics that make HTTP such a scalable protocol. What makes it scalable? With every HTTP transaction being completely independent, the amount of resources necessary grows linearly with the amount of requests received. In a system that does not scale (where "does not scale" means that it scales poorly), the amount of resources necessary would increase at a higher rate than the number of requests... PHP, when compiled as an Apache module (mod_php), fits nicely into the basic Web paradigm. In fact, it might be easier to imagine PHP as a new skill that Apache can learn. HTTP requests are still handled by Apache, and unless your programming logic specifically requires interaction with another source (database, filesystem, network), your application will scale as well as Apache (with a decrease in performance based upon the complexity of your programming logic). This is why PHP naturally scales. The caveat I mention is why your PHP application may not scale.[12]

Philip Greenspun; "Java is the SUV of programming tools":

With Web applications, nearly all of the engineering happens in the SQL database and the interaction design, which is embedded in the page flow links.None of the extra power of Java is useful when the source of persistence is a relational database management system such as Oracle or SQL Server. Mostly what you get with Java are reams of repetitive declarations at the top of every script so that the relevant code for serving a page is buried several screens down. With a dynamic language such as Lisp, PHP, Perl, Python, Tcl, you could do bind variables by having the database interface look at local variables in the caller's environment. With Java the programmer is counting question marks in the SQL query and saying "Associate the 7th question mark with the number 4247″, an action that will introduce a bug into the program as soon as the SQL query is modified (since now the 7th question mark has been moved to become the 8th question mark in the query). [10]

Philip Greenspun; "Java is the SUV of programming tools":

JSP is fantastically simpler than "full-blown J2EE", which is the recommended-by-Sun way of building applications, but still it seems to be too complex for seniors and graduate students in the MIT computer science program, despite the fact that they all had at least one semester of Java experience... A project done in Java will cost 5 times as much, take twice as long, and be harder to maintain than a project done in a scripting language such as PHP or Perl. People who are serious about getting the job done on time and under budget will use tools such as Visual Basic (controlled all the machines that decoded the human genome). But the programmers and managers using Java will feel good about themselves because they are using a tool that, in theory, has a lot of power for handling problems of tremendous complexity. Just like the suburbanite who drives his SUV to the 7-11 on a paved road but feels good because in theory he could climb a 45-degree dirt slope.[10]

Michael DeMan; But Java shines with a large stadaradized infrastrcture:

Java is complicated and powerful - the important thing is to use the right tool for the right job. Almost any small project is done much easier with ASP, Perl, PHP, Python or something similar. Java only shines when you begin working on really big infrastructure - where you have myriads of back-end systems that have to be tied together with some kind of cohesive, understandable, standardized architecture. Talking to databases and rendering HTML is only a small peice of what Java does.

[edit]

References

1.      What are the possible levels of involvement in Sakai?

2.      What is the Sakai Educational Partners Program (SEPP), and what are the advantages of joining?

3.      More Sakai details revealed and partner programme presented

4.      Java? It's So Nineties

5.      5.1 5.2 Open Sources By Dave Rosenberg and Matt Asay

6.      University of Arizona Abstract

7.      Earlham and Sakai

8.      Sakai vs. Moodle

9.      9.1 9.2 Comparision of Sakai vs. Moodle

10.   10.1 10.2 10.3 10.4 10.5 Java is the SUV of programming tools

11.   What Is Scalability?

12.   12.1 12.2 PHP Scales

[edit]

External Links

§                     Mark's Guide