Friday, July 30, 2004

Building Blocks Conference Notes

Blackboard Developers Conference
Georgetown University, 2004

Monday, July 26

09:00–09:45 a.m.
Keynote Session
Matthew Pittinsky

  • We are in the midst of a transition from e-learning applications in individual courses to a campus-wide network learning environment involving all members of the institution
  • Blackboard is now a public company
  • One third of this year's conference attendees attended last year's conference as well
  • The Blackboard Developers Network (BbDN) has grown from 115 (2003) to 245 (2004)
  • 6141 Building Blocks SDK downloads
  • 7276 Building Blocks (B2) downloads
  • Of the 104 Building Blocks in the catalogue, 74 are for the Academic Suite, and 50% are free
  • .NET SDK released Feb 2004
  • Commitment to standards continues (IMS e-Portfolio, SIF integration)
Top 10 Building Blocks:
  1. 10. User Performance Module (USF)
  2. 9. SCORM 1.2 Compliant Player 1.0
  3. 8. Discussion Grader (JJC)
  4. 7. Dictionary and Thesaurus
  5. 6. User Participation Portal Module (USF)
  6. 5. My Journal (Baylor U)
  7. 4. Blackboard Link Checker
  8. 3. Who's Online Portal Module (Seneca)
  9. 2. Bb Content Player (IMS, SCORM, etc.)
  10. 1. Advanced Group Management (FSU)
Sneak Peaks:
  • Application Pack strategy continues
  • App Pack 2 due in about a month
    • Content System SDK
    • built-in SCORM support
    • internationalization
    • ChalkBox
      • "chalktitles" offered by Houghton Mifflin, Pearson Education, Thomson Learning
      • synchronize rosters, SSO, post to gradebook
    • Continued development of Content System
      • v1.2 Q3 2004
      • v2.0 Q4 2004
    • Academic Suite 7.0 due Q1 2005
2003–2004 Priorities:
  1. Increase access to BbDN
    • Free accounts to Academic Suite clients (enterprise)
    • "Not quite free" accounts to Commerce Suite clients
  2. Comply with evolving standards (SAKAI membership sought)
  3. Improve developer support
    • Provide comprehensive test data
    • Provide B2 training courses (such as B2 Essentials)
  4. Grow market receptivity (e.g., "Blackboard Enabled" program)
  5. Hire Building Blocks Architect/Evangelist

09:45–10:30 a.m.
What is .NET?
Bruce Jackson

Take-Home Lesson:
.NET is a web application framework modeled after J2EE
Important Fact Learned:
CLR runs on Windows only
Important Fact Learned:
Passport is going away!
  • Common Language Runtime (CLR) manages .NET "managed code"
  • Primary advantage of .NET is code agnosticism
  • Source code compiles to "intermediate language" (IL)
  • CLR manages memory automatically (like Java)
  • IL code is portable across architectures (32b, 64b, etc.)
  • .NET is not yet UI independent- .NET addresses security issues (big changes coming!)
  • Objects passed by value (not reference), which assumes copius bandwidth
  • Service Oriented Architecture (SOA) is emphasized
  • WS-Security, a form of "federated trust", is supported
  • WS-Security and Liberty Alliance may be merging!
  • [Even Liberty Alliance and Shibboleth are talking!]
  • Kerberos remains a major player

10:45–11:30 a.m.
Data Storage and Migration (Java)
Bob Alcorn

Take-Home Lesson:
Data storage possibilities are somewhat limited
Important Fact Learned:
Can not write into the Blackboard database!
  • Goals: Portability and structured data
  • Types of data:
    1. private data (config data, e.g.)
    2. content data
    3. tool data (discussion tool, e.g.)
    4. extended attributes
  • Private data stored in properties files in local directories (see blackboard.platform.plugin.PlugInConfig)
  • Extended data provided via "registries" (see
  • Content organized by course
  • Use @X@object.attribute@X@ template variables (which have a corresponding API)
  • Tool storage:
    • Properties files (the lowest common denominator)
    • XML documents
    • 3rd party storage (e.g., Berkeley DB, Lucene)
  • Migration from R5 to R6 is one-time operation
  • Course Copy is a handy tool

11:30–12:15 p.m.
My First Building Block (.NET)
Biran Zhang

Take-Home Lesson:
.NET/C# is very similar to J2EE
Important Fact Learned:
Visual Studio is required for .NET development
  • A Building Block (B2) is a web application
  • See package for access control
  • Possible uses of B2:
    • bridge to external system
    • publish a web service
    • content type
    • tools
      • student tool
      • course tool
      • system tool
      • communication tool
    • portal module
  • MS .NET framework requires Visual Studio .NET
  • File structure is similar to J2EE (/WEB-INF directory, e.g.)
  • MS Virtual PC development environment permits standardization

01:30–02:15 p.m.
.NET APIs in Detail
Biran Zhang

  • Blackboard .NET namespace is very similar to Java API
  • See, e.g.
  • Strongly typed enumerations are useful

02:15–03:00 p.m.
Java APIs in Detail
Bob Alcorn

Take-Home Lesson:
A comprehensive Buidling Block will touch numerous APIs
Important Fact Learned:
Use new reflection-based persistence methods instead of standard persisters and loaders
  • General in-depth introduction to B2 Java APIs
  • Base object:
  • Data objects
    • Content:
    • Course:
    • Gradebook:
  • Persistence objects
  • Use new reflection-based persistence methods (e.g., persist)
  • The persistance manager is proprietary
  • Service lookups via BbServiceManager
  • Other services:
    • Context: blackboard.platform.context
    • Session: blackboard.platform.session
    • File System: blackboard.platform.filesystem
    • Log: blackboard.platform.log
    • Security:
  • Note: Not all clients honor cookies, so sometimes session data is encoded in the URL (URL rewriting)
  • Don't use BbList and BbEnum in package blackboard.base (since J2SE 1.5 is coming)
  • blackboard.base.FormattedText provides "smart" text handling
  • blackboard.base.GenericComparator for sorting
  • Portal: blackboard.portal.external
  • Tag libraries facilitate UI standardization and integration
  • XML manifest file enables deployment

03:30–04:15 p.m.
Blackboard and Content Types
Tracy Engwirda

  • Updated JSPs can be dropped into place without restarting the server
  • Enable the /webapps/manager context in development environment
  • Custom style sheets can not be applied (in a standard way) to custom content
  • External data is stored in properties files

05:00–08:00 p.m.
International Spy Museum

Appetizers, libations, and a delicious catered dinner were provided at the International Spy Museum in downtown Washington, D.C. After dinner, we toured the museum, which was very entertaining! (The highlight exhibit was a working replica of James Bond's Austin-Martin getaway car.) An hour and a half was barely enough time to scratch the surface.

Tuesday, July 27

09:00–09:45 a.m.
Java Event API
Tracy Engwirda

Take-Home Lesson:
The event API is a real-time alternative to the snapshot mechanism
Important Fact Learned:
Event API data model based on IMS specification
Important Fact Learned:
The "event" API is geared towards data integration, not "events" in the usual sense of the word
  • In Bb6, the event API is exposed by package blackboard.admin.*
  • Read:
    • Advanced Integration and Data Management Manual
    • Administrative API Specifications
  • The event API data model mirrors the snapshot mechanism
  • The data model is based on the IMS 1.01 Enterprise Specification)
  • In terms of data model, the event API is an extension of the B2 API (entities and persisters)
  • Classes are stored in cms-admin.jar (add this JAR file to your classpath)
  • Using the event APIs:
    • command-line application
      • on Bb app server
      • on other server via snapshot client
    • Building Blocks application (but use care)
    • Web Service
    • RPC wrappers
  • Event handlers are constructed with database triggers (outside of the LS)
  • Event listener classes will be added in future APIs

09:45–10:30 a.m.
Blackboard 6 Authentication
Tom Scavo

Take-Home Lesson:
A custom authentication module should extend BaseAuthenticationModule
Important Fact Learned:
A lightweight web service can provide validation services to arbitrary web applications
  • Blackboard 6 Standard Authentication
    • Authentication Types
    • Authentication API (HttpAuthModule)
    • BaseAuthenticationModule
    • Authentication Framework
  • Blackboard 6 Custom Authentication
    • LogAuthenticationModule
    • AbstractAuthModule
    • GenericAuthModule
    • Installation
  • BGSU Authentication
    • BGAuth and BGAuthValidator
    • BGAuthModule
  • Developer's Workshop

10:45–11:30 a.m.
Building Blocks and Web Services (Java)
Bob Alcorn

12:45–01:30 p.m.
Security and Authentication with Building Blocks (Java)
Tom Joyce

Take-Home Lesson:
Blackboard security built on Java security model
Important Fact Learned:
Custom authentication is not possible in .NET because Bb security is built on the Java security model
  • General security concepts
    • Authentication
    • Authorization
    • Privacy
    • Integrity
  • Declaring permissions in the manifest file is often a trial-and-error process
  • Blackboard security is based on the Java security model:
    • Java Secure Sockets Extension (JSSE)
    • Java Cryptography Extensions (JCE)
    • Java Generic Security Services (GSS) API
    • CertPath API
    • Java Authentication and Authorization Service (JAAS)
    • Code Security Model
  • Authentication services are available to Building Blocks via AccessManagerService
  • Authorization services are also available to Building Blocks (see PlugInUtil)
  • Two types of roles: system (e.g., admin) and course (e.g., TA)
  • Security information available via java.lang.Class

02:00–02:45 p.m.
Building Blocks and Blackboard—A Look Ahead
Bob Alcorn, Dan Cane, David Yaskin

  • Internal event queues are coming (forced by the introduction of the Content System, which must coordinate with the Learning System)
  • e-Portfolios provided by the Content System
  • Selective release of content is coming
  • Transaction System Account Management
  • JJC's Discussion Board Grader would be useful to faculty