Why Sakai Rocks!

Joshua Kim of Dartmouth University had a provocative post in Inside Higher Education that has provoked a lot of great comments:

http://www.insidehighered.com/blogs/technology-and-learning/please-push-back-my-d2l-sakai-biases

I’m hoping that the Desire2Learn (D2L) and Sakai folks among our IHE community will tell me that I don’t know what I’m talking about. When it comes to the LMS (or really anything in life), where you stand is where you sit. I’ve been on Blackboard for 10 years now (across 2 different institutions and in roles ranging from instructor to learning designer to program manager), so naturally I’m biased toward what I know best. I tend to see the LMS race as falling out between 3 competitors (and 3 models): Blackboard, Moodle and Instructure.

There are lots of great comments and I encourage you to read them all.

Here is my comment:

Fun discussion and fun comments.

I would say that Sakai is different and distinct from all the other products mentioned in terms of the amount of choice you are offered.   With Sakai you can choose self-hosted or cloud hosted.   With Sakai you can be involved with the community anywhere from becoming a core contributor (takes some effort and commitment) to silently downloading and using the product or even purchasing a branded version that barely calls itself “Sakai”. 

Sakai is by far the most customizable LMS in the marketplace because the primary developers are from higher education institutions that need unique solutions based on how different schools, different countries, and different cultures teach.    Sakai can be highly customized and still upgraded.  If you looked at the University of Michigan Sakai and then looked at the Oxford University Sakai, you might be amazed that under the highly customized navigation and authorization these two LMS’s share 99.5% of their code.  We are *not* just talking skins, images and color here – we are talking about different functionality and philosophy matching the pedagogy of each school.  This flexibility overwhelms small schools that want to have one way to do things and that is OK – those schools should buy a cloud hosted version of something generic and leave the upgrades and choice of functionality, look and feel to some cloud-hosted product manager somewhere.

But perhaps the most important difference is that the core people moving Sakai forward are not motivated by money or profits.  There are over 20 commercial vendors in the Sakai ecosystem that do want to make money.   But the core leadership of Sakai and its product direction and contribution is overwhelmingly led by Higher Education.  There are great contributions from some of our commercial partners, but when they participate in core activities, they participate as individuals and not members of their companies.  There are meetings where decisions get made in Sakai by a core set of great people – but the people making the decisions are mostly the *customers/adopters of the product*.  There is no separation between those who make the product and those who use the product – they are the same people.   No other LMS in the marketplace is as open in its governance than Sakai.

One of the advantages of Sakai not being venture capital funded or dominated by commercial concerns is that if the marketplace changes dramatically, Sakai will still be there for you even if you never invested a minute of your time or a penny of your money.  Venture Capitalists can pull the plug if a company does not progress to profitability rapidly enough.  A company can have a giant VC-paid-for Educause booth one year and then sold for pennies on the dollar a year later.   A product that is making money and paying its development and sales team is vulnerable to market shifts.  If OpenClass is successful or Instructure gets significant market share, that market share comes from someone else.   If there is too much of a market shift and revenues drop, then companies need to cut their development teams and then the product kind of deflates.  I won’t mention any names, but there is one product in the marketplace that seems likely to me to have a lower market share this time next year because of some combination of Instructure and OpenClass taking business away.   If the market share drop and revenue drop is significant, that might be a little scary to a product that has enjoyed a number of years of very solid and increasing revenue.

If of course you were at a Sakai school, you could sit back and smile, knowing that you controlled your own destiny and that while the world of Sakai is not rolling in cash to do tons of stuff for you, we have passion, heart, dedication, and you are working arm-in-arm with people from some of the most brilliant schools in the world in the form of Oxford, Cambridge, Capetown, ANU, Rutgers, Michigan, Indiana, Stanford, Duke, UNC, Berkeley, Nagoya, Georgia-Tech, and many others large and small.  And our commercial ecosystem is rich and competitive and does not rely on sweetheart deals, proprietary IP, trademark licensing, or revenue sharing to keep somebody’s business model propped up.

As I try to point out in my book, Sakai is about freedom, not low price.   And in particular, whether you or Dartmouth contributes or not, we are as committed to *your* freedom as much as we are committed to our own freedom.

So sit back and relax in your cloud-hosted, vanilla-flavoured, revenue driven, product-manager controlled LMS and smile knowing that you have traded freedom for having no responsibility.   Like in the Matrix, the real world is a little more raw.  When/If your organization decides to take the the steering wheel of the LMS and decides to be a driver instead of a rider, Sakai will be here waiting with open arms.   We miss you, where have you been?  :)

IMS Learning Tools Interoperability 1.1 is in “Member Draft”

IMS Learning Tools Interoperability (LTI) 1.1 has moved from the working group to “Internal Draft” / “Member Draft”. This means that we consider the specification development 100% done and locked down.

The scope of IMS LTI 1.1 is the addition of grade return from a tool to an LMS using web services. It is simple and easy to implement and we expect pretty rapid market uptake.

IMS LTI is already supported in the trunk of Sakai 2.9 in the BasicLTI portlet, tracked under

https://jira.sakaiproject.org/browse/BLTI-123

Designating an IMS spec as “Member Draft” triggers the implementation activity of our members so we can make sure that there are no little “gotchas” in the spec. Having developers actually implement the spec is a great way to cause them to read it *very carefully*.

If you are not an IMS member, there will soon be a public draft of the specification once we have developed the certification and seen demonstrations of two interoperable products. The standard is pretty simple and mature so I hope that the public draft is ready in two months or less.

You can wait until public draft to see the spec or join IMS to be part of the member draft evaluation. The cost is not all that great to on the Alliance and it can be done online.

http://www.imsglobal.org/joinims.html

If you already are an IMS member – the discussion of the LTI 1.1 Member Draft is here:

http://www.imsglobal.org/community/forum/categories.cfm?catid=138&entercat=y

Here is an Educause presentation about LTI from this past week:

http://www.slideshare.net/csev/educause-ims-update-learning-tools-interoperability

Let me know if you have any questions.

This is a great time to publicly thank the co-Chairs of the IMS LTI Working Group for their hard work and dedication: Greg McFall of Pearson Education and Lance Neumann of Blackboard. They have put an amazing amount of work into this specification and we all benefit from their knowledge and skill. It has been a great personal learning experience and I consider it a privilege to have worked with them on the preparation of this specification.

Note: I am a member of the IMS staff part-time – but my compensation is not linked to changes in IMS memberships.

What are the Key Challenges for the OER Movement?

The OLNet project (www.olnet.org) is assembling a list of the key challenges facing to Open Educational Resources. They ask the question, “What are the Key Challenges for the OER Movement?” in their blog post at http://olnet.org/node/639

This is my response.

I think that the single largest challenge in OER is the complete lack of a standardized interchange format and free/open software to create, manage, edit, and remix open educational content.

Until we have rich and powerful editing tools in the hands of the people creating the content, we will never reach “escape velocity” in the OER space. We will continue to pay large sums of money to accumulate large repositories of expensively gathered/produced materials that are uneditable.

We need tools that allow teachers to manage their materials in a way that will enhance their teaching as they teach and then as a trivial side effect, produce high-quality reusable and editable content.

Once we accomplish this a repository has a format for its artifacts and many repositories exist (i.e. like YouTube, uStream , Vimeo, etc etc) then we have the ability to actually make OER part of the teaching cycle rather than something we do long after the teaching cycle is complete.

This is a challenging task and will require significant sustained effort. There are four formats that come to mind that might serve as OER exchange: (a) SCORM, (b) IMS Common Cartridge, (c) Connexions CNXML, and (d) PowerPoint.

I add PowerPoint because of the four, it is the only one that does a really good job of remixing. While everyone ridicules PowerPoint, you must admit that it is nice to be able to send a complex, structured content collection to virtually anyone on the planet and know that they can read it, edit it and convert it to a number of useful formats. It is not because PowerPoint is an amazingly elegant file format, it is simply because we all have software to read and edit the format on our computers.

Lets briefly critique the other formats and their shortcomings.

SCORM – This format is aimed at instructional design, not teaching – it is great for training but not so good for teaching. The problem is less the file format and more the ecosystem of products aimed at a training centered market that uses a write-once run without modifications pattern. Also as more advanced features of SCORM are used, the resulting packages are less and less interoperable.

IMS Common Cartridge – IMS CC understands teaching and is designed to allow remixing, but since it is focused on maintaining interoperability of content, it is rather conservative in its scope. It is expanding its scope slowly but it needs to speed up if it is to become a real OER format that teachers would author their original courses in IMS CC. Also there are no good free open source tools that read and write IMS CC. CLosed source tools are better than nothing, but leave innovation in the hands of the software owners.

Connexions CNXML – This is a good start as a format, but it is far too wrapped up in the specialized server code developed by Connexions. Also, the CNXML is a little too focused on book-style resources and sequential ordering. CNXML would need to evolve to be able to represent the wider ranger of interoperable OER materials. I wish Connexions would be funded to start over and build a portable desktop application for authoring and then put a much simpler server infrastructure behind it rather than putting all the rich capabilities in their server software.

PowerPoint – rocks but its pedagogy is a bit limiting.

Software

What would the software look like? Frankly the closest I have seen to the right software is SoftChalk (www.softchalk.com). It is a word-processor like interface, uses its own internal format, but can export to SCORM, IMSCC, HTML and many other formats.

The weakness of SoftChalk is that it is commercial and as such its requirements are driven by what sells. And OER is not a significant enough marketplace yet to cause commercial product roadmaps to bend in the right direction.

So I think we need to write our own.

Conclusion

Building such a format and software to support the format would take an amazing leap of faith. It would take millions of pounds/euros/dollars to jump-start such a project to the point that it worked well enough to build a self-sustaining community of users and developers who could maintain and innovate in the space.

Given that all the funding seems to be going to building another repository or analyzing usage logs, it is not likely this will ever get funded. But that is the nice thing about grand challenges – they stay grand.

P.S. The second biggest problem is the ability to link content together around learning objects like Khan Academy and enable highly dynamic learning paths through content with great tracking. Maybe the other great challenge is an open, extensible version of Khan Academy.

P.P.S. The third biggest challenge is to have a learning management system that allows for the dynamic formation of cohorts of learning around web content. Such a system needs to have a light touch UI-wise and be easy to figure out. My favorite example here is Edmodo – but again, closed, proprietary, and with an intent to make money off its captive customers. So again, we need to write our own open extensible Edmodo.

Educause: Openness Discussion Session

I will be participating in the Openness Discussion at Educause along with Patrick Masson, Ken Udas, and Luke Fernandez. Here are the details of the session:

Wednesday Oct 19th, 2011
3:30 PM – 4:20 PM
Meeting Room 102A/B
http://www.educause.edu/E2011/Program/DISC18

This discussion will focus on the emergence and adoption of principles and methods that can help develop and enable open communities of practice. Topics will include the characteristics, attributes, principles, and behaviors that promote open access; open-source software; open content; open educational resources; open courseware; open research; open standards; management practices like open governance; and more.

Patrick sent the following note to the CIO List about the session:

We are planning our Openness CG for the Educause conference and I was hoping to get a bit of input for the meeting. I have asked Luke Fernandez to “interview” Chuck Severance about his new book, “Sakai: Free as in Freedom.”

Luke has posted a very nice review of the book (http://itintheuniversity.blogspot.com/2011/08/review-of-sakai-free-as-in-freedom.html), as have others (Jim Farmer: http://mfeldstein.com/charles-severance%E2%80%99s-%E2%80%9Csakai-free-as-in-freedom%E2%80%9D-a-review/ Free Software magazine, http://www.freesoftwaremagazine.com/columns/book_review_sakai_free_freedom_written_charles_severance#).

Chuck offers several thoughts about how Sakai, as both an open source project and a foundation succeeded, and where he felt it might have missed stepped. Many of these observations are specific to openness, and as Luke highlights from the text, “My opinion was that the purpose of the Foundation was to have a light touch and focus on nurturing the individual and organizational members of the community. The opposing view held by the majority of the board members was that the Foundation and Foundation staff were a form of command and control with the top of the authority hierarchy as the Sakai Foundation Board of Directors. The…stakeholders were concerned that letting individuals….make their own priority decisions….would be too risky for the adopting schools…..Central control and guidance was needed to insure that the product would move forward according to a well-defined and well-understood roadmap and do so on an agreed-to schedule.”

I think this touches on some of the key aspects of not only openness as a value proposition and operational paradigm, but also how organizations can be challenged to adopt, and thus take advantage of openness. In the past the Openness CG’s have been poorly attended. I think this event could provide quite a draw, and I was wondering if those on the list here might be able to help promote our meeting?

I would appreciate it if folks could respond with suggestions, and volunteer to see those suggestions through for promoting the event. Also if you have any topics of interest for Luke to cover with Chuck, it might help us with ensuring we touch on all of the areas of interest in the openness cg. hopefully we can spark a lively and informative discussion.

Thanks,
Patrick

Open Source Copyright Thoughts

A colleague asked me the following question:

For software produced here (UMichigan) that is going to be released under an open source license, who should be listed as the copyright holder in the source code? Would it be “The University of Michigan”?

Here is my answer:

I am not a lawyer but I do a lot of Open Source stuff in many projects. This is what I do and what people in Sakai generally do.

(1) If the project is primarily written by me from scratch, I use Apache 2.0 as the copyright in my own name. Anyone can reuse or include the code I build (including me) because of the license with a simple acknowledgement – with the right license the “owner” does not matter. If someone wants to switch the copyright to a GPL license – the copyright owner can give that permission and one person is easier to ask than to ask a university. The answer may be yes or no with a person – with a university you are most likely never to get any answer. Using your own name is not seen as arrogance unless someone asks if they can change the copyright and you say ‘no’. An example of this is if I build a new experimental part of Sakai I will initially make it copyright me Apache 2.0 – if the code matures and ends up in the core of Sakai I voluntarily change the license to be Copyright the Sakai Foundation using the Educational Community License 2.0 as that is the preferred copyright for Sakai core source and it is considered tacky and arrogant to maintain your name in the copyright of Sakai core code. I emphasize that it is not tacky to use your own name initially. It *is* considered tacky to refuse to allow the name to be changed when asked by a reasonable open source organization / project.

(2) If I am writing in the context of a project like Sakai, Moodle, or ATutor I simply use the copyright of the rest of the code with a clear indication of the extent of my authorship where appropriate. If you say anything about keeping your own name in the copyright in their code base – they will punt you as far as they can. They will kick you out of the project and talk about you behind your back for years to come.

(3) If I am writing a tool for an organization that I am doing consulting for, I insist on the code being copyright them, but Apache 2.0 – so I and others can reuse the code with no further permission except for an acknowledgement. I have not faced a situation where a client insists on me building significant code that is not open source – but frankly I would likely not even be willing to write code for such an organization. I do advise closed-source organizations on how they should go about writing code – I just won’t write their code.

(4) If I am building a tool where multiple UMich authors are involved and in particular paid staff are involved and neither (1), (2) or (3) apply, I copyright the code University of Michigan Apache 2.0.

Interestingly, w.r.t. Sakai, UM has a master agreement that lets them take Michigan contributions and change the copyright to Sakai Foundation. Indiana, and Stanford have similar master agreements. To my knowledge, MIT and Berkeley never executed such agreements and so bits of code still have those universities named in copyright statements in the code. You will not see a Stanford, Indiana or Michigan copyright anywhere in Sakai code – that is considered a badge of honor by the cool tribes. Interestingly, deep in one tool, we use some Stanford code for a concurrent hash map that was built well before the Sakai Project and used in Sakai. We did *not* request change the copyright in that utility code because it was clearly not produced as a contribution to the Sakai project.

All this is evidenced by the Sakai acknowledgements page:

http://nightly2.sakaiproject.org:8082/library/content/gateway/acknowledgments.html

The most awesome and giving schools are in the first list because they are the ones that contributed and transferred copyright or simply contributed with the foundation’s name as copyright in their contributions. They of course are in alphabetical order so as not to characterize any contribution as more important than any of the others.

Probably more than you wanted to know :)

/Chuck

Introducing FOORM – Form Oriented Object Relational Mapper

FOORM Presentation and Persistance

Note: This is extracted from one of my earlier blog posts. FOORM is still a work in progress and while I love using it and think it is the best presentation and persistence framework the world has ever seen – it is still early days and the framework maker must endure using it for a *long* time before accepting any new customers. So this is and will continue to be a work in progress for quite some time with the Sakai support for LTI as my test bed for FOORM.

In FOORM you build a model using an array of strings that look as follows;

  static String[] CONTENT_MODEL = { 
      "id:key", 
      "tool_id:integer:hidden=true",
      "SITE_ID:text:maxlength=99:label=bl_content_site_id:role=admin",
      "title:text:label=bl_content_title:required=true:maxlength=255",
      "frameheight:integer:label=bl_frameheight",
      "newpage:checkbox:label=bl_newpage",
      "debug:checkbox:label=bl_debug",
      "custom:textarea:label=bl_custom:rows=5:cols=25:maxlength=1024",
      "launch:url:hidden=true:maxlength=255",
      "xmlimport:text:hidden=true:maxlength=16384", 
      "created_at:autodate",
      "updated_at:autodate" };

This is kind of like a Rails model in colon-separated form. One thing that FOORM assumes is that you will be internationalizing your UI and so it even encodes the field labels..

You can build an input form with the following lines of code:

String formInput(Object previousData, String [] modelInfo, Object resourceLoader)

This returns a set of input tags, one for each field, repopulated from the previous data (can be Properties, Map<String,Object>, or ResultSet) and using the provided resource loader.

You embed the form tags in some Velocity as follows:

<form action="#toolForm("")" method="post" name="customizeForm" >
    $formInput
    <input type="hidden" name="sakai_csrf_token" value="$sakai_csrf_token" />  
   <input type="submit" accesskey ="s" class="active" name="$doAction" 
        value="$tlang.getString('gen.save')" />
   <input type="submit" accesskey ="x" name="$doCancel" 
        value="$tlang.getString('gen.cancel')" 
        onclick="location = '$sakai_ActionURL.setPanel("Content")';return false;">
</form>

There are utilities to validate incoming data, and extract it into the right objects and type for inserting into a database. with a very few lines of code. Here is an extract from request properties into newMapping and insert into the database:

    HashMap<String, Object> newMapping = new HashMap<String, Object>();

    String errors = foorm.formExtract(requestProperties, formModel, 
        rb, true, newMapping, null);
    if (errors != null) return errors;

    String[] insertInfo = foorm.insertForm(newMapping);
    String makeSql = "INSERT INTO " + table + " ( " + insertInfo[0] + 
          " ) VALUES ( " + insertInfo[1] + " )";
    final Object[] fields = foorm.getInsertObjects(newMapping);
    m_sql.dbInsert(null, sql, fields);

It supports a very REST-style property bag approach to data models except that all the fields are properly and fully realized as database columns so they can be searched, selected, grouped, and ordered with as sophisticated query as you want to create.

FOORM is designed to be extended so you have the generic Foorm and you extend it to make a SakaiFoorm that captures all the Sakai-specific rules for generating fields, handling internationalization, etc.

I even dispensed with the “CREATE TABLE” scripts – since Foorm knows the entire model, it can make the tables and sequences automatically. It know about the various rules for fields in MySql, HSQL, and Oracle. The AutoDDL code looks as follows:

 String[] sqls = foorm.formSqlTable("lti_content", 
     LTIService.CONTENT_MODEL, m_sql.getVendor(), doReset);
        for (String sql : sqls)
          if (m_sql.dbWriteFailQuiet(null, sql, null)) M_log.info(sql);

I could make this more succinct with an overridable method in Foorm. Foorm still needs to learn about changes to data models and automatically generate “ALTER TABLE” commands. I will write that code when I need to do a conversion when I release a future version of DBLTIService is released and I need to expand the model.

I think that Foorm has a lot of potential. It is kind of a weird combination of a partial presentation layer and partial object relational mapper. It is focused on providing useful library utilities that let the developer get as tricky as they want, making sure that the nasty repetitive common tasks take as little effort as possible.

You can ask me “Why not Hibernate?” or “Why not Spring JDBC?” at a bar sometime. Be prepared to hear my voice raise a few notches as I rail about “Hibernate’s is an overbearing over-engineered steaming pile of…(oops did I say that out loud?)” or “Spring JDBC makes SQL portable in Java only to the level that they solve the trivial problems and punt on anything mildly interesting or complex…”. If I have had a few beers before the conversation starts, it will be more (or less) interesting.

Oh by the way, Foorm provides a nice, generic way to handle paged SQL queries. I still need to build advanced WHERE clauses, and support ORDER BY and GROUP BY operations.

This is why Foorm is still a prototype and I don’t want anyone else using it for a while. I feel that any library / framework should be used by its creator for a long time, solving lots of real-world problems before they claim to have anything truly reusable. But I figured I would show folks what I am thinking.

I have been experimenting with finding the right combination of power and convenience for both display layers and persistence. Before FOORM there was OMG-ORM (http://omg-software.com/) – it too was an exploration of the balance between powerful capabilities and intrusiveness as well as trying to make things intuitive. FOORM is much simpler than OMG and I find it more natural to use.

Dave Johnson: A Simple Explanation of Open Licenses (Updated)

I ran across this classic from 2006 and just had to make sure to remember it.

Dave Johnson humorously and insightfully reduces open source licenses to this over-simplified form by creating three classes of licenses: (a) Gimme Credit, (b) Gimme Patches, and (c) Gimme it ALL!

I cannot say it better than Dave Johnson does in this classic 2006 blog post:

http://rollerweblogger.org/roller/entry/gimme_credit_gimme_fixes_gimme

Read the blog comments. The second one in particular that refines the over simplified notion of GPL making it clear that “Gimme All!” only matters when you redistribute.

And actually, with the new Affero GPL, the list should be:

  • Gimme Credit! (Apache, BSD, MIT)
  • Gimme Patches! ( MPL, CDDL, LGPL)
  • Gimme it ALL! if you redistribute. (GPL)
  • Gimme it ALL! (Affero GPL)

That somewhat completes Dave’s list nicely and brings it up to date.

Abstract: Disruptive Innovation (Keynote)

Keynote Speaker: Charles Severance
Wednesday September 28, 2011
European Sakai Conference: http://www.eurosakai.nl

The Sakai effort intended to take the reins of innovation in teaching and learning technology back from the commercial vendors in the marketplace. The success of the Sakai CLE to date is largely because it effectively reflects the dual nature of reaching and collaboration in higher education. Because the Sakai CLE serves these two roles, it has taken some time to get to to the point where the CLE has feature parity with the other Learning Management Systems in the marketplace. With the Sakai 2.9 CLE release, we need to think about what it means to be capable of direct competition with the other vendors in the LMS marketplace. At the same time as our CLE product is maturing, we need to find a way to move out community closer to the “innovation front”. The Sakai OAE is building wonderful new academic collaboration capabilities with a user and content-centered focus. Yet another innovation front is building the teaching and learning technology for self organizing learning activities like Khan Academy as well as providing technology that is a better fit for K12 education. As the Sakai CLE reaches maturity in the marketplace, we need to look at ways to consolidate our gains as well as pursue new areas where the Sakai community can positively influence teaching and learning with technology around the world.

Abstract: Sakai 2.9 , 2.10 and Especially the Portal Innovations

Speaker: Charles Severance
Tuesday September 27, 2011
European Sakai Conference: http://www.eurosakai.nl

The Sakai 2.9 CLE portal has a whole new look and feel focused on a more efficient and engaging user experience in Sakai. This session will present new features of the Sakai CLE 2.9 Portal including the new navigation, site preferences, and Chat/Instant message system. The session will look at both the user experience as well as the technical underpinnings of how the new portal works. We will discuss the remaining CLE 2.9 challenges and issues to be worked on over the summer and through to the code freeze. We will also discuss possible areas for investment for the Sakai 2.10.

Management Versus Leadership

I was collecting thoughts on the notion of the difference between management and leadership in a file on my desktop. I want to clean up my desktop so I will store them here for now.

Leadership appears when it is most needed. Management is inveterate.

Leadership benefits those who are led. Management benefits itself.

Leadership has been and will be part of the human experience for all time. Management is an invention of the industrial revulsion.

Leadership is an attribute of a person. Management is an attribute of a position.