<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0"
	xmlns:content="http://purl.org/rss/1.0/modules/content/"
	xmlns:wfw="http://wellformedweb.org/CommentAPI/"
	xmlns:dc="http://purl.org/dc/elements/1.1/"
	xmlns:atom="http://www.w3.org/2005/Atom"
	xmlns:sy="http://purl.org/rss/1.0/modules/syndication/"
	xmlns:slash="http://purl.org/rss/1.0/modules/slash/"
	xmlns:georss="http://www.georss.org/georss" xmlns:geo="http://www.w3.org/2003/01/geo/wgs84_pos#" xmlns:media="http://search.yahoo.com/mrss/"
	>

<channel>
	<title>Il y a du thé renversé au bord de la table &#187; Firefox</title>
	<atom:link href="http://dutherenverseauborddelatable.wordpress.com/category/informatique-computer-science/firefox/feed/" rel="self" type="application/rss+xml" />
	<link>http://dutherenverseauborddelatable.wordpress.com</link>
	<description>De l&#039;informatique, d&#039;intenses réflexions et quelques autres absurdités</description>
	<lastBuildDate>Fri, 18 May 2012 14:39:19 +0000</lastBuildDate>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.com/</generator>
<cloud domain='dutherenverseauborddelatable.wordpress.com' port='80' path='/?rsscloud=notify' registerProcedure='' protocol='http-post' />
<image>
		<url>http://s2.wp.com/i/buttonw-com.png</url>
		<title>Il y a du thé renversé au bord de la table &#187; Firefox</title>
		<link>http://dutherenverseauborddelatable.wordpress.com</link>
	</image>
	<atom:link rel="search" type="application/opensearchdescription+xml" href="http://dutherenverseauborddelatable.wordpress.com/osd.xml" title="Il y a du thé renversé au bord de la table" />
	<atom:link rel='hub' href='http://dutherenverseauborddelatable.wordpress.com/?pushpress=hub'/>
		<item>
		<title>C data finalization &#8211; in JavaScript</title>
		<link>http://dutherenverseauborddelatable.wordpress.com/2012/05/02/c-data-finalization-in-javascript/</link>
		<comments>http://dutherenverseauborddelatable.wordpress.com/2012/05/02/c-data-finalization-in-javascript/#comments</comments>
		<pubDate>Wed, 02 May 2012 13:39:47 +0000</pubDate>
		<dc:creator>yoric</dc:creator>
				<category><![CDATA[Firefox]]></category>
		<category><![CDATA[In English / En anglais]]></category>
		<category><![CDATA[Informatique / Computer science]]></category>
		<category><![CDATA[JavaScript]]></category>
		<category><![CDATA[ctypes]]></category>
		<category><![CDATA[ffi]]></category>
		<category><![CDATA[finalization]]></category>
		<category><![CDATA[foreign function interface]]></category>
		<category><![CDATA[garbage-collection]]></category>
		<category><![CDATA[javascript]]></category>
		<category><![CDATA[js-ctypes]]></category>
		<category><![CDATA[mozilla]]></category>
		<category><![CDATA[open-source]]></category>
		<category><![CDATA[resources]]></category>

		<guid isPermaLink="false">http://dutherenverseauborddelatable.wordpress.com/?p=1103</guid>
		<description><![CDATA[A few iterations ago, the Mozilla Platform introducefd js-ctypes, a very nice Foreign Function Interface (FFI) for JavaScript. As its inspiration, Python&#8217;s ctypes, js-ctypes lets (privileged) JavaScript code open native libraries, import their functions and call these functions almost as if they were regular JavaScript functions. Here is an example using the Unix libc: If [...]<img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=dutherenverseauborddelatable.wordpress.com&#038;blog=1202429&#038;post=1103&#038;subd=dutherenverseauborddelatable&#038;ref=&#038;feed=1" width="1" height="1" />]]></description>
			<content:encoded><![CDATA[<p style="text-align:justify;">A few iterations ago, the Mozilla Platform introducefd js-ctypes, a very nice Foreign Function Interface (FFI) for JavaScript. As its inspiration, Python&#8217;s ctypes, js-ctypes lets (privileged) JavaScript code open native libraries, import their functions and call these functions almost as if they were regular JavaScript functions.</p>
<p style="text-align:justify;">Here is an example using the Unix libc:</p>
<p><pre class="brush: jscript;">
// Open the C library
let libcCandidates = [
  'libSystem.dylib',// MacOS X
  'libc.so.6',      // Linux
  'libc.so'         // Android, B2G
];
let libc;
for each(let candidate in libcCandidates) {
  libc = ctypes.open(candidate);
  if (libc) {
    break;
  }
}

// Import some functions from libc
let open = libc.declare(&quot;open&quot;, ctypes.default_abi,
  /*return int*/ ctypes.int,
  /*const char* path*/ctypes.char.ptr,
  /*int oflag*/ ctypes.int
  /*int mode*/ ctypes.int);
let read = libc.read(&quot;read&quot;, ctypes.default_abi,
  /*return ssize_t*/ ctypes.ssize_t,
  /*int fildes*/ ctypes.int,
  /*void *buf*/ ctypes.voidptr_t,
  /*size_t nbytes*/ ctypes.size_t);
let close = libc.read(&quot;close&quot;, ctypes.default_abi,
  /*return int*/ ctypes.int,
  /*int fd*/ ctypes.int);

// Now use them
let myfile = open(&quot;/etc/passwd&quot;, 0, 0);
if (myfile == -1)
  throw new Error(&quot;Could not open file&quot;);
// ...
</pre></p>
<p style="text-align:justify;">If you are familiar with XPConnect, the mechanism generally used in the Mozilla Platform for letting JavaScript and C++ interact, you can see that using js-ctypes to call native code directly is much nicer than adding a C++ XPCOM/XPConnect layer. From what I hear, it seems to be also much faster, as XPConnect needs to perform expensive magic to ensure that memory is properly passed between JavaScript and C++. In addition, this selfsame memory magic now prevents XPConnect from being executed from threads other than the main thread, which makes js-ctypes the only manner of doing any system access from worker threads.</p>
<p style="text-align:justify;">Now, js-ctypes nicely solves the issue of calling native code from JavaScript. However, JavaScript and C are very different languages, with very different paradigms, so getting them to coexist requires a little more than simply the ability to place calls or convert values. In particular, C has:</p>
<ul style="text-align:justify;">
<li>manual resource management (memory must be released, file descriptors must be closed, locks must be released, etc.);</li>
<li>no language-level mechanism for error management (a task smaller than a process cannot be killed because of an error).</li>
</ul>
<p style="text-align:justify;">By contrast, Javascript has:</p>
<ul style="text-align:justify;">
<li>automated memory management, but no support for managing automatically resources other than memory (no user-level finalization or scoped resources mechanism);</li>
<li>several language/vm-level mechanisms that can kill a task in non-trivial manners (exceptions, &#8220;this script is busy&#8221;, etc.)</li>
</ul>
<p style="text-align:justify;">Unfortunately, putting all of this together makes it quite difficult to write JavaScript code that manipulates C resources without leaking. Such leaks can cause both performance issues (memory leaks, in particular, tend to slow down the whole system) and hard-to-track errors (leaking file descriptors can prevent the application from opening any new file, or, under Windows, can prevent the application from reopening some files that were improperly closed, while leaking locks can completely freeze an application).</p>
<h2 style="text-align:justify;">Introducing C data finalization</h2>
<p style="text-align:justify;">For this reason, we have recently added a new features to js-ctypes, designed to add automated resource management to JavaScript: <em>C data finalization</em>.</p>
<p style="text-align:justify;">Specifying a finalizer is simple:</p>
<p><pre class="brush: jscript;">
function openfile(path, flags, mode) {
  let fd = open(path, flags, mode);
  if (fd == -1) {
    throw new Error(&quot;Could not open file &quot; + path);
  }
  return ctypes.CDataFinalizer(fd, close);
}
</pre></p>
<p style="text-align:justify;">What this code does is ensure that, whenever the file descriptor is garbage-collected, function <code>close</code> is called, releasing the C resources represented by that file descriptor. This value is<em> C data with a finalizer</em>, aka <code>CDataFinalizer</code>.</p>
<p style="text-align:justify;">You can use it just as you would use the C data through js-ctypes:</p>
<p><pre class="brush: jscript;">
let myfile = openfile(&quot;/etc/passwd&quot;, 0, 0);
let result = read(myfile, myarray, 4096); // Read some data
// Wherever required, |myfile| is automatically converted to
// the underlying integer value.
// Once |myfile| has no reference, it will (eventually) be
// closed.
</pre></p>
<p style="text-align:justify;">It is, of course, possible (and <strong>strongly recommended</strong>) to close the file manually to ensure that resources are immediately available for the process and the rest of the system:</p>
<p><pre class="brush: jscript;">
let myfile = openfile(&quot;/etc/passwd&quot;, 0, 0);
// ...
// ... do whatever you wish to do with that file
let result = myfile.dispose(); // This calls |close|.

// From this point, |myfile| cannot be converted to the underlying
// integer value anymore. Any attempt to do so will raise an
// exception.
</pre></p>
<p style="text-align:justify;">Or, an equivalent but more verbose solution, using <code>forget</code>:</p>
<p><pre class="brush: jscript;">
let myfile = openfile(&quot;/etc/passwd&quot;, 0, 0);
// ...
// ... do whatever you wish to do with that file
let fd = myfile.forget();
// From this point, |myfile| cannot be converted to the underlying
// integer value anymore. Any attempt to do so will raise an
// exception.
let result = close(fd);
</pre></p>
<p style="text-align:justify;">This mechanism is, of course, not restricted to file descriptors. It has been used with success to other data structures, including <code>malloc</code>-allocated strings.</p>
<h2 style="text-align:justify;">Details and caveat</h2>
<p style="text-align:justify;">JavaScript does not feature finalization and might never do so. There are good reasons for this: finalization considerably complicates the garbage-collector and introduces the possibility of subtle bugs and leaks that the various JS implementors do not want to inflict to their users (if you are curious, two of the main problems are <em>resurrection of dead references</em> and <em>finalization of cyclic data</em><em> structures</em>).</p>
<p style="text-align:justify;">Consequently, C data finalizers are not full-featured finalizers. Indeed, the main limitation of C data finalizers is that its first argument must be a C value and its second argument must be a pointer to a C function – for the above mentioned reasons, letting users specify any JavaScript function as a finalizer would open a can of worms that nobody really wants to see crawling around.</p>
<p style="text-align:justify;">Also, before using a finalizer, you should be aware that JavaScript garbage-collection is not necessarily deterministic – during the testing phase of CDataFinalizer, we have encountered memory errors caused by developers (ok, I will confess, that was me, sorry guys) making invalid assumptions about just when values would be garbage-collected. Let me emphasize this: <strong>any hypothesis you make about when a value is finalized is bound to be regularly false</strong>. In other words, C data finalizers should be used as a last line of defense, <strong>not</strong> as the default mechanism for recovering resources.</p>
<p style="text-align:justify;">Still, C data finalizers are a powerful mechanism that make manipulation of C values with JavaScript much more reliable. Indeed, it is one of the core mechanisms used pervasively by the OS.File library.</p>
<p style="text-align:justify;">
<p style="text-align:justify;"><strong>edit</strong> As per Steve Fink&#8217;s suggestion, I have emphasized that users should not rely on the behavior of garbage-collection/finalization, and clarified the can of worms.</p>
<br />  <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/dutherenverseauborddelatable.wordpress.com/1103/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/dutherenverseauborddelatable.wordpress.com/1103/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godelicious/dutherenverseauborddelatable.wordpress.com/1103/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/delicious/dutherenverseauborddelatable.wordpress.com/1103/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gofacebook/dutherenverseauborddelatable.wordpress.com/1103/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/facebook/dutherenverseauborddelatable.wordpress.com/1103/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gotwitter/dutherenverseauborddelatable.wordpress.com/1103/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/twitter/dutherenverseauborddelatable.wordpress.com/1103/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gostumble/dutherenverseauborddelatable.wordpress.com/1103/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/stumble/dutherenverseauborddelatable.wordpress.com/1103/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godigg/dutherenverseauborddelatable.wordpress.com/1103/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/digg/dutherenverseauborddelatable.wordpress.com/1103/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/goreddit/dutherenverseauborddelatable.wordpress.com/1103/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/reddit/dutherenverseauborddelatable.wordpress.com/1103/" /></a> <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=dutherenverseauborddelatable.wordpress.com&#038;blog=1202429&#038;post=1103&#038;subd=dutherenverseauborddelatable&#038;ref=&#038;feed=1" width="1" height="1" />]]></content:encoded>
			<wfw:commentRss>http://dutherenverseauborddelatable.wordpress.com/2012/05/02/c-data-finalization-in-javascript/feed/</wfw:commentRss>
		<slash:comments>4</slash:comments>
	
		<media:content url="http://0.gravatar.com/avatar/26385ab59b5a13c50262c302a3bcd17c?s=96&#38;d=identicon&#38;r=G" medium="image">
			<media:title type="html">yoric</media:title>
		</media:content>
	</item>
		<item>
		<title>Scoped resources for all</title>
		<link>http://dutherenverseauborddelatable.wordpress.com/2012/04/12/scoped-resources-for-all/</link>
		<comments>http://dutherenverseauborddelatable.wordpress.com/2012/04/12/scoped-resources-for-all/#comments</comments>
		<pubDate>Thu, 12 Apr 2012 16:12:28 +0000</pubDate>
		<dc:creator>yoric</dc:creator>
				<category><![CDATA[Firefox]]></category>
		<category><![CDATA[In English / En anglais]]></category>
		<category><![CDATA[Informatique / Computer science]]></category>
		<category><![CDATA[c++]]></category>
		<category><![CDATA[delete]]></category>
		<category><![CDATA[gc]]></category>
		<category><![CDATA[memory]]></category>
		<category><![CDATA[mozilla]]></category>
		<category><![CDATA[raii]]></category>

		<guid isPermaLink="false">http://dutherenverseauborddelatable.wordpress.com/?p=1093</guid>
		<description><![CDATA[A small class hierarchy has been added to MFBT, the &#8220;Mozilla Framework Based on Templates&#8221; which contains some of the core classes of the Mozilla Platform. This hierarchy introduces general-purpose and specialized classes for scope-based resource management. When it applies, Scope-based resource management is both faster than reference-counting and closer to the semantics of the [...]<img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=dutherenverseauborddelatable.wordpress.com&#038;blog=1202429&#038;post=1093&#038;subd=dutherenverseauborddelatable&#038;ref=&#038;feed=1" width="1" height="1" />]]></description>
			<content:encoded><![CDATA[<p style="text-align:justify;"><em>A small class hierarchy has been added to MFBT, the &#8220;Mozilla Framework Based on Templates&#8221; which contains some of the core classes of the Mozilla Platform. This hierarchy introduces general-purpose and specialized classes for scope-based resource management. When it applies, Scope-based resource management is both faster than reference-counting and closer to the semantics of the algorithm, so you should use it <img src='http://s0.wp.com/wp-includes/images/smilies/icon_smile.gif' alt=':)' class='wp-smiley' /> </em></p>
<p style="text-align:justify;">The codebase of Mozilla is largely written in C++. While C++ does not offer any form of automatic memory management, the (sometimes scary) flexibility of the language has allowed numerous projects to customize the manner in which memory and other resources are managed, and Mozilla is no exception. Largely, the Mozilla C++ codebase uses reference-counting, to provide automatic memory management in most cases.</p>
<p style="text-align:justify;">While reference-counting is quite imperfect, and while future versions of Mozilla might possibly <a href="http://www.rust-lang.org/">use other forms of memory management</a>, it is also a very useful tool for such a large codebase. However, in some cases, reference-counting is just too much. Indeed, in a number of simple cases, we prefer the simpler mechanism of scope-based resource management, that is both more predictable, faster and more resource-efficient – at the cost of not being able to scale up to the more complex cases for which reference-counting or even more powerful mechanisms become much more suited.</p>
<p style="text-align:justify;">Scope-based resource management is designed to handle resources that should be cleaned-up as soon as you leave a given scope (typically, the function), regardless of how you leave it (by reaching the end, with a break, a return or an exception).</p>
<p style="text-align:justify;">The following extract illustrates the use of scoped resource allocation:</p>
<p><pre class="brush: cpp;">
// returns true in case of success, false in case of error
bool copy(const char* sourceName, const char* destName, size_t bufSize) {
   ScopedFD source(open(sourceName, O_RDONLY));
   if (source.get() == -1) return false;

   ScopedFD dest(open(destName, O_WRONLY|O_CREAT, 0600));
   if (dest.get() == -1) return false;
     // source is closed automatically

   ScopedDeleteArray buf(new char[bufSize]);
   if (buf.get() == NULL) return false;
     // source, dest are closed automatically

   while (true) {
     const int bytesRead = read(source.get(), buf.rwget(), bufSize);
     if (bytesRead == 0) break;
     if (bytesRead == -1) return false;
       // source, dest, buf are cleaned-up

     const int writePos = 0;
     while (writePos &lt; bytesRead) {
       const int bytesWritten = write(dest.get(), buf.get(),
                                      bytesRead - writePos);
       if (bytesWritten == -1) return false ;
         // source, dest, buf are cleaned-up
       writePos += bytesWritten;
     }
   }

   return true;
      // source, dest, buf are cleaned-up
}
</pre></p>
<p>As you can see, the main point of these scope-based resource management classes is that they are cleaned up automatically both in case of success and in case of error. In some cases, we wish to clean up resources only in case of error, as follows:</p>
<p><pre class="brush: cpp;">
// returns -1 in case of error, the destination file descriptor in case of success
int copy(const char* sourceName, const char* destName, size_t bufSize) {
   ScopedFD source(open(sourceName, O_RDONLY));
   if (source.get() == -1) return -1;

   ScopedFD dest(open(destName, O_WRONLY|O_CREAT, 0600));
   if (dest.get() == -1) return -1;
      // source is closed automatically

   ScopedDeleteArray buf(new char[bufSize]);
   if (buf.get() == NULL) return -1;
      // source, dest are closed automatically

   while (true) {
     const int bytesRead = read(source.get(), buf.rwget(), bufSize);
     if (bytesRead == 0) break;
     if (bytesRead == -1) return -1;
      // source, dest, buf are cleaned-up

     const int writePos = 0;
     while (writePos &lt; bytesRead) {
       const int bytesWritten = write(dest.get(), buf.get(),
                                      bytesRead - writePos);
       if (bytesWritten == -1) return -1 ;
        // source, dest, buf are cleaned-up
       writePos += bytesWritten;
     }
   }

   return dest.forget();
   // source and buf are cleaned-up, not dest
}
</pre></p>
<p style="text-align:justify;">While both examples could undoubtedly be implemented with reference-counting or without any form of automated resource management, this would either make the source code much more complex and harder to maintain (for purely manual resource management) or make the executable slower and less explicit in terms of ownership (for reference-counting). In other words, scoped-based resource management is the right choice for these algorithms.</p>
<p style="text-align:justify;">Now, the Mozilla codebase has offered a few classes for scope-based resource management. Unfortunately, these classes were scattered throughout the code, some of them were specific to some compilers, and they were generally not designed to be reusable.</p>
<p style="text-align:justify;">We have recently starting consolidating these classes into a simple and extensible hierarchy of classes. If you need them, you can find the root of this hierarchy, as well as the most commonly used classes, on mozilla-central, as part of <a href="http://mxr.mozilla.org/mozilla-central/source/mfbt/Scoped.h">the MFBT</a>:</p>
<ul>
<li><code>ScopedFreePtr&lt;T&gt;</code> is suited to deallocate C-style pointers allocated with malloc;</li>
<li><code>ScopedDeletePtr&lt;T&gt;</code> is suited to deallocate C++-style pointers allocated with new;</li>
<li><code>ScopedDeleteArray&lt;T&gt;</code> is suited to deallocate C++-style pointers allocated with new[];</li>
<li>root class <code>Scoped&lt;Trait&gt;</code> and macro <code>SCOPED_TEMPLATE</code> are designed to make it extremely simple to define new classes to handle other cases.</li>
</ul>
<p>For instance, class <code>ScopedFD</code> as used in the above examples to close Unix-style file descriptors, can be defined with the following few lines of code:</p>
<p><pre class="brush: cpp;">

struct ScopedFDTrait
{
public:
  typedef int type;
  static type empty() { return -1; }
  static void release(type fd) {
    if (fd != -1) {
      close(fd);
    }
  }
};
SCOPED_TEMPLATE(ScopedFD, ScopedFDTrait);
</pre></p>
<p>So, well, if you need scoped-based resource management, you know where to find it!</p>
<p>I will blog shortly about the situation in JavaScript.</p>
<br />  <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/dutherenverseauborddelatable.wordpress.com/1093/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/dutherenverseauborddelatable.wordpress.com/1093/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godelicious/dutherenverseauborddelatable.wordpress.com/1093/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/delicious/dutherenverseauborddelatable.wordpress.com/1093/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gofacebook/dutherenverseauborddelatable.wordpress.com/1093/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/facebook/dutherenverseauborddelatable.wordpress.com/1093/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gotwitter/dutherenverseauborddelatable.wordpress.com/1093/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/twitter/dutherenverseauborddelatable.wordpress.com/1093/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gostumble/dutherenverseauborddelatable.wordpress.com/1093/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/stumble/dutherenverseauborddelatable.wordpress.com/1093/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godigg/dutherenverseauborddelatable.wordpress.com/1093/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/digg/dutherenverseauborddelatable.wordpress.com/1093/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/goreddit/dutherenverseauborddelatable.wordpress.com/1093/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/reddit/dutherenverseauborddelatable.wordpress.com/1093/" /></a> <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=dutherenverseauborddelatable.wordpress.com&#038;blog=1202429&#038;post=1093&#038;subd=dutherenverseauborddelatable&#038;ref=&#038;feed=1" width="1" height="1" />]]></content:encoded>
			<wfw:commentRss>http://dutherenverseauborddelatable.wordpress.com/2012/04/12/scoped-resources-for-all/feed/</wfw:commentRss>
		<slash:comments>2</slash:comments>
	
		<media:content url="http://0.gravatar.com/avatar/26385ab59b5a13c50262c302a3bcd17c?s=96&#38;d=identicon&#38;r=G" medium="image">
			<media:title type="html">yoric</media:title>
		</media:content>
	</item>
		<item>
		<title>Student project updates</title>
		<link>http://dutherenverseauborddelatable.wordpress.com/2012/04/12/student-project-updates/</link>
		<comments>http://dutherenverseauborddelatable.wordpress.com/2012/04/12/student-project-updates/#comments</comments>
		<pubDate>Thu, 12 Apr 2012 14:53:59 +0000</pubDate>
		<dc:creator>yoric</dc:creator>
				<category><![CDATA[Enseignement]]></category>
		<category><![CDATA[Firefox]]></category>
		<category><![CDATA[Informatique / Computer science]]></category>

		<guid isPermaLink="false">http://dutherenverseauborddelatable.wordpress.com/?p=1086</guid>
		<description><![CDATA[As mentioned a few times on this blog, I take part in a few Mozilla-related Student Projects as a mentor or a helper. For this year, projects are finished. Let us take a look at the results. Save as .epub (Firefox add-on) (Kevin CORRE, Benjamin ROCHER, Elie AHUMA, Sylvestre ANTOINE – Université d’Orléans, MIAGE + [...]<img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=dutherenverseauborddelatable.wordpress.com&#038;blog=1202429&#038;post=1086&#038;subd=dutherenverseauborddelatable&#038;ref=&#038;feed=1" width="1" height="1" />]]></description>
			<content:encoded><![CDATA[<p style="text-align:justify;">As mentioned a few times on this blog, I take part in a few Mozilla-related <a href="http://dutherenverseauborddelatable.wordpress.com/2012/02/02/student-projects-update/">Student Projects</a> as a mentor or a helper. For this year, projects are finished. Let us take a look at the results.</p>
<h2>Save as .epub (Firefox add-on)</h2>
<p style="text-align:right;">(Kevin CORRE, Benjamin ROCHER, Elie AHUMA, Sylvestre ANTOINE – Université d’Orléans, MIAGE + IRAD)</p>
<p><strong>Objective</strong> Add the following feature to Firefox, as an add-on: Save a page and its resources as one file, using open standard .epub. This open-standard file can then be transferred to just about any device, edited with LibreOffice, etc.</p>
<p style="text-align:justify;"><strong>Current status</strong> I have seen version 0.1 on addons.mozilla.org, although it seems to have disappeared in the meantime. I suppose it still needs a little polish, but, hey, it&#8217;s a good start.</p>
<p><strong>Follow this project</strong> This project lives <a href="https://github.com/Sparika/Firefox-html-to-epub">on github</a>.</p>
<h2></h2>
<h2>Detect use of the wrong account (Thunderbird add-on)</h2>
<p style="text-align:right;">(Baptiste MEYNIER, Johan JANS, Maxime DENOYER, Mustapha OUCHEIKH – Université d’Orléans, MIAGE + IRAD)</p>
<p><strong>Objective</strong> Add the following feature to Thunderbird, as an add-on: Detect that a message is being sent to a correspondant using the wrong account (e.g. using a professional account for a personal message or a personal account for a professional message).</p>
<p style="text-align:justify;"><strong>Current status</strong> The project has reached an important milestone and has become usable. I have the impression that no version has been released, which is a shame, but it already offers some useful features. I really hope that the students continue the project and turn it into a complete add-on.</p>
<p><strong>Follow this project</strong> This project lives <a href="https://github.com/BaptisteMeynier">on github</a> (currently on a <a href="https://github.com/BaptisteMeynier/ThunderBird-Multi-Accounts-Manager/tree/addressBookOverlay">non-master branch</a>).</p>
<h2></h2>
<h2>Simplify the addition of several alarms for the same event in Lightning (Thunderbird add-on)</h2>
<p>(Loïc LE MÉRO aka Morkai – Université d’Évry, MIAGE 2)</p>
<p><strong>Objective</strong> Lightning offers the ability to add several alarms for the same event (e.g. 1 day before then 15 minutes before). Improve the user interface to make this more discoverable.</p>
<p><strong>Current status</strong> Code is complete, what is left is to submit it upstream.</p>
<p><strong>Follow this project</strong> This project lives on <a href="https://bugzilla.mozilla.org/show_bug.cgi?id=718418">Bugzilla</a>.</p>
<h2>Extend Lightning alarms (Thunderbird add-on)</h2>
<p>(Anto DOMINIC PAUL – Université d’Évry, MIAGE 2)</p>
<p style="text-align:justify;"><strong>Objective</strong> Lightning offers the ability to attach alarms to an event. Extend this feature to make it possible to play a music or execute a script when the alarm is triggered.</p>
<p><strong>Current status</strong> I have seen a working version. Not 100% about security, but it looks very promising. Guys, I hope you can finish that alarm, I want to use it.</p>
<p><strong>Follow this project</strong> This project lives <a title="Back to white" href="https://bugzilla.mozilla.org/show_bug.cgi?id=718419">on Bugzilla</a>.</p>
<h2>Handle resources in Lightning events (Thunderbird add-on)</h2>
<p>(Julien LACROIX – Université d’Évry, MIAGE 2)</p>
<p style="text-align:justify;"><strong>Objective</strong> Add the ability to attach resource requirements to events: a picnic requires food (one resource), drinks (one resource), cutlery (one resource), etc… Who will bring them? Also, add the ability to attach a geolocation to events, to help finding the way. Who brings the beer?</p>
<p><strong>Current status</strong> It works! And it was submitted as an add-on on for Thunderbird.</p>
<p><strong>Follow this project</strong> This project lives <a href="https://github.com/plazi91/lightning-resource-reservation">on github</a>.</p>
<h2>Remind me that I need to reply within 24h/remind me that I expect a reply within 24h (Thunderbird add-on)</h2>
<p>(Vincent LEGUEVEL, Mickael MAINGE – Université d’Évry, MIAGE 2)</p>
<p><strong>Objective</strong> Add the ability to mark a message as “I need to answer within …” / “I expect an answer within …”. Nag the user as long as she hasn’t sent or received the reply.</p>
<p><strong>Current status</strong> A little disappointed. A subset of the features is here, but as far as I can tell, not unified as one single add-on.</p>
<p><strong>Follow this project</strong> This project lives on two Bugzilla bugs: <a title="Back to white" href="https://bugzilla.mozilla.org/show_bug.cgi?id=718428">need to send</a> / <a title="Back to white" href="https://bugzilla.mozilla.org/show_bug.cgi?id=718429">expect to receive</a>.</p>
<br />  <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/dutherenverseauborddelatable.wordpress.com/1086/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/dutherenverseauborddelatable.wordpress.com/1086/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godelicious/dutherenverseauborddelatable.wordpress.com/1086/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/delicious/dutherenverseauborddelatable.wordpress.com/1086/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gofacebook/dutherenverseauborddelatable.wordpress.com/1086/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/facebook/dutherenverseauborddelatable.wordpress.com/1086/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gotwitter/dutherenverseauborddelatable.wordpress.com/1086/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/twitter/dutherenverseauborddelatable.wordpress.com/1086/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gostumble/dutherenverseauborddelatable.wordpress.com/1086/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/stumble/dutherenverseauborddelatable.wordpress.com/1086/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godigg/dutherenverseauborddelatable.wordpress.com/1086/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/digg/dutherenverseauborddelatable.wordpress.com/1086/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/goreddit/dutherenverseauborddelatable.wordpress.com/1086/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/reddit/dutherenverseauborddelatable.wordpress.com/1086/" /></a> <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=dutherenverseauborddelatable.wordpress.com&#038;blog=1202429&#038;post=1086&#038;subd=dutherenverseauborddelatable&#038;ref=&#038;feed=1" width="1" height="1" />]]></content:encoded>
			<wfw:commentRss>http://dutherenverseauborddelatable.wordpress.com/2012/04/12/student-project-updates/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
	
		<media:content url="http://0.gravatar.com/avatar/26385ab59b5a13c50262c302a3bcd17c?s=96&#38;d=identicon&#38;r=G" medium="image">
			<media:title type="html">yoric</media:title>
		</media:content>
	</item>
		<item>
		<title>Student projects update</title>
		<link>http://dutherenverseauborddelatable.wordpress.com/2012/02/26/student-projects-update-2/</link>
		<comments>http://dutherenverseauborddelatable.wordpress.com/2012/02/26/student-projects-update-2/#comments</comments>
		<pubDate>Sun, 26 Feb 2012 20:05:16 +0000</pubDate>
		<dc:creator>yoric</dc:creator>
				<category><![CDATA[Enseignement]]></category>
		<category><![CDATA[Firefox]]></category>
		<category><![CDATA[In English / En anglais]]></category>

		<guid isPermaLink="false">http://dutherenverseauborddelatable.wordpress.com/?p=1082</guid>
		<description><![CDATA[It has been a few weeks since the latest update on the Student Projects in which I take part as mentor or helper. Let us see what has changed. Save as .epub (Firefox add-on) (Kevin CORRE, Benjamin ROCHER, Elie AHUMA, Sylvestre ANTOINE – Université d’Orléans, MIAGE + IRAD) Objective Add the following feature to Firefox, [...]<img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=dutherenverseauborddelatable.wordpress.com&#038;blog=1202429&#038;post=1082&#038;subd=dutherenverseauborddelatable&#038;ref=&#038;feed=1" width="1" height="1" />]]></description>
			<content:encoded><![CDATA[<p>It has been a few weeks since the latest update on the <a href="http://dutherenverseauborddelatable.wordpress.com/2012/02/02/student-projects-update/">Student Projects</a> in which I take part as mentor or helper.</p>
<p>Let us see what has changed.</p>
<h2>Save as .epub (Firefox add-on)</h2>
<p style="text-align:right;">(Kevin CORRE, Benjamin ROCHER, Elie AHUMA, Sylvestre ANTOINE – Université d’Orléans, MIAGE + IRAD)</p>
<p style="text-align:justify;"><strong>Objective</strong> Add the following feature to Firefox, as an add-on: Save a page and its resources as one file, using open standard .epub. This open-standard file can then be transferred to just about any device, edited with LibreOffice, etc.</p>
<p style="text-align:justify;"><strong>Current status</strong> Unfortunately, I have not had contact from the students in a few weeks. Looking at the source code, I have the impression that it is rather advanced, and that they are only a few hours of work away from a first version. I am counting on you guys! Also, do not forget that I want you to communicate publicly.</p>
<p><strong>Follow this project</strong> This project lives <a href="https://github.com/Sparika/Firefox-html-to-epub">on github</a>.</p>
<h2>Detect use of the wrong account (Thunderbird add-on)</h2>
<p style="text-align:right;">(Baptiste MEYNIER, Johan JANS, Maxime DENOYER, Mustapha OUCHEIKH – Université d’Orléans, MIAGE + IRAD)</p>
<p style="text-align:justify;"><strong>Objective</strong> Add the following feature to Thunderbird, as an add-on: Detect that a message is being sent to a correspondant using the wrong account (e.g. using a professional account for a personal message or a personal account for a professional message).</p>
<p style="text-align:justify;"><strong>Current status</strong> Still experimenting. A first version of the user interface is in place, some experiments on how to react to the &#8220;send&#8221; event, a database (empty so far, afaict), but no learning of accounts yet. Hey guys, I hope you manage to complete that project before the deadline.</p>
<p><strong>Follow this project</strong> This project lives <a href="https://github.com/BaptisteMeynier">on github</a>.</p>
<h2>Simplify the addition of several alarms for the same event in Lightning (Thunderbird add-on)</h2>
<p style="text-align:right;">(Loïc LE MÉRO aka Morkai – Université d’Évry, MIAGE 2)</p>
<p><strong>Objective</strong> Lightning offers the ability to add several alarms for the same event (e.g. 1 day before then 15 minutes before). Improve the user interface to make this more discoverable.</p>
<p><strong>Current status</strong> I have seen a working demo. Next step is submitting the patch to Lightning. Keep up the good work!</p>
<p><strong>Follow this project</strong> This project lives on <a href="https://bugzilla.mozilla.org/show_bug.cgi?id=718418">Bugzilla</a>.</p>
<h2>Extend Lightning alarms (Thunderbird add-on)</h2>
<p>(Anto DOMINIC PAUL – Université d’Évry, MIAGE 2)</p>
<p><strong>Objective</strong> Lightning offers the ability to attach alarms to an event. Extend this feature to make it possible to play a music or execute a script when the alarm is triggered.</p>
<p><strong>Current status</strong> Unclear. I have not seen any working code yet. Anto?</p>
<p><strong>Follow this project</strong> This project lives <a title="Back to white" href="https://bugzilla.mozilla.org/show_bug.cgi?id=718419">on Bugzilla</a>.</p>
<h2>Handle resources in Lightning events (Thunderbird add-on)</h2>
<p style="text-align:right;">(Julien LACROIX – Université d’Évry, MIAGE 2)</p>
<p><strong>Objective</strong> Add the ability to attach resource requirements to events: a picnic requires food (one resource), drinks (one resource), cutlery (one resource), etc… Who will bring them? Also, add the ability to attach a geolocation to events, to help finding the way. Who brings the beer?</p>
<p><strong>Current status</strong> I understand that we now have working demos. I do not know about packaging as an add-on yet.</p>
<p><strong>Follow this project</strong> This project lives <a href="https://github.com/plazi91/lightning-resource-reservation">on github</a>.</p>
<p>&nbsp;</p>
<h2>Remind me that I need to reply within 24h/remind me that I expect a reply within 24h (Thunderbird add-on)</h2>
<p style="text-align:right;">(Vincent LEGUEVEL, Mickael MAINGE – Université d’Évry, MIAGE 2)</p>
<p><strong>Objective</strong> Add the ability to mark a message as “I need to answer within …” / “I expect an answer within …”. Nag the user as long as she hasn’t sent or received the reply.</p>
<p style="text-align:justify;"><strong>Current status</strong> I have seen demo of a small subset of the features. It&#8217;s a good start, guys, but I certainly hope that you will deliver something complete by the deadline.</p>
<p><strong>Follow this project</strong> This project lives on two Bugzilla bugs: <a title="Back to white" href="https://bugzilla.mozilla.org/show_bug.cgi?id=718428">need to send</a> / <a title="Back to white" href="https://bugzilla.mozilla.org/show_bug.cgi?id=718429">expect to receive</a>.</p>
<br />  <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/dutherenverseauborddelatable.wordpress.com/1082/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/dutherenverseauborddelatable.wordpress.com/1082/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godelicious/dutherenverseauborddelatable.wordpress.com/1082/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/delicious/dutherenverseauborddelatable.wordpress.com/1082/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gofacebook/dutherenverseauborddelatable.wordpress.com/1082/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/facebook/dutherenverseauborddelatable.wordpress.com/1082/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gotwitter/dutherenverseauborddelatable.wordpress.com/1082/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/twitter/dutherenverseauborddelatable.wordpress.com/1082/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gostumble/dutherenverseauborddelatable.wordpress.com/1082/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/stumble/dutherenverseauborddelatable.wordpress.com/1082/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godigg/dutherenverseauborddelatable.wordpress.com/1082/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/digg/dutherenverseauborddelatable.wordpress.com/1082/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/goreddit/dutherenverseauborddelatable.wordpress.com/1082/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/reddit/dutherenverseauborddelatable.wordpress.com/1082/" /></a> <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=dutherenverseauborddelatable.wordpress.com&#038;blog=1202429&#038;post=1082&#038;subd=dutherenverseauborddelatable&#038;ref=&#038;feed=1" width="1" height="1" />]]></content:encoded>
			<wfw:commentRss>http://dutherenverseauborddelatable.wordpress.com/2012/02/26/student-projects-update-2/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
	
		<media:content url="http://0.gravatar.com/avatar/26385ab59b5a13c50262c302a3bcd17c?s=96&#38;d=identicon&#38;r=G" medium="image">
			<media:title type="html">yoric</media:title>
		</media:content>
	</item>
		<item>
		<title>Just a question regarding ACTA</title>
		<link>http://dutherenverseauborddelatable.wordpress.com/2012/02/10/just-a-question-regarding-acta/</link>
		<comments>http://dutherenverseauborddelatable.wordpress.com/2012/02/10/just-a-question-regarding-acta/#comments</comments>
		<pubDate>Fri, 10 Feb 2012 15:35:49 +0000</pubDate>
		<dc:creator>yoric</dc:creator>
				<category><![CDATA[Firefox]]></category>
		<category><![CDATA[In English / En anglais]]></category>
		<category><![CDATA[Informatique / Computer science]]></category>
		<category><![CDATA[Société]]></category>
		<category><![CDATA[acta]]></category>

		<guid isPermaLink="false">http://dutherenverseauborddelatable.wordpress.com/?p=1075</guid>
		<description><![CDATA[I am currently reading the official text of ACTA. This international treaty against brand name abuse, forgery and illicit data sharing has been negotiated for two and a half years being a veil of absolute secrecy. Since early December, it is now finally public. Reading it, I wonder. Here is article 11, for instance: « [...]<img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=dutherenverseauborddelatable.wordpress.com&#038;blog=1202429&#038;post=1075&#038;subd=dutherenverseauborddelatable&#038;ref=&#038;feed=1" width="1" height="1" />]]></description>
			<content:encoded><![CDATA[<p style="text-align:justify;">I am currently reading <a href="http://www.dfat.gov.au/trade/acta/Final-ACTA-text-following-legal-verification.pdf">the official text of ACTA</a>. This international treaty against brand name abuse, forgery and illicit data sharing has been negotiated for two and a half years being a veil of absolute secrecy. Since early December, it is now finally public.</p>
<p>Reading it, I wonder. Here is article 11, for instance:</p>
<p style="text-align:justify;">« <em>Without prejudice to its law governing privilege, the protection of confidentiality of information sources, or the processing of personal data, each Party [= each country] shall provide that, in civil judicial proceedings concerning the enforcement of intellectual property rights, its judicial authorities have the authority, <strong>upon a justified request of the right holder</strong>, to order the infringer or, in the alternative, <strong>the alleged infringer</strong>, to <strong>provide to the right holder</strong> or to the judicial authorities, at least for the purpose of collecting evidence, <strong>relevant information</strong> as provided for in its applicable laws and regulations that the infringer or alleged infringer possesses or controls. Such information may include information regarding<strong> any person involved in any aspect of the </strong>infringement or<strong> alleged infringement</strong> and regarding<strong> the means of production or the channels of distribution</strong> of the infringing or allegedly infringing goods or services,<strong> including the identification of third persons</strong> alleged to be involved in the production and distribution of such goods or services and of their channels of distribution.</em> »</p>
<p>Do I understand correctly that, to comply with such orders:</p>
<ul>
<li style="text-align:justify;">a library must keep watch over its uers, so as to be able to identify those who <em>might</em> be implied in <em>alleged</em> infringements?</li>
<li style="text-align:justify;">a university must keep watch over its professors, so as to be able to identify those who might be implied in distributing documents and exceeding fair use?</li>
<li>&#8230; or a highschool? or a kindergarten?</li>
<li>&#8230; and no element of proof is required from the right holder?</li>
</ul>
<p>Have I mentioned that I am a little worried by ACTA?</p>
<br />  <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/dutherenverseauborddelatable.wordpress.com/1075/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/dutherenverseauborddelatable.wordpress.com/1075/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godelicious/dutherenverseauborddelatable.wordpress.com/1075/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/delicious/dutherenverseauborddelatable.wordpress.com/1075/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gofacebook/dutherenverseauborddelatable.wordpress.com/1075/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/facebook/dutherenverseauborddelatable.wordpress.com/1075/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gotwitter/dutherenverseauborddelatable.wordpress.com/1075/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/twitter/dutherenverseauborddelatable.wordpress.com/1075/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gostumble/dutherenverseauborddelatable.wordpress.com/1075/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/stumble/dutherenverseauborddelatable.wordpress.com/1075/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godigg/dutherenverseauborddelatable.wordpress.com/1075/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/digg/dutherenverseauborddelatable.wordpress.com/1075/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/goreddit/dutherenverseauborddelatable.wordpress.com/1075/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/reddit/dutherenverseauborddelatable.wordpress.com/1075/" /></a> <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=dutherenverseauborddelatable.wordpress.com&#038;blog=1202429&#038;post=1075&#038;subd=dutherenverseauborddelatable&#038;ref=&#038;feed=1" width="1" height="1" />]]></content:encoded>
			<wfw:commentRss>http://dutherenverseauborddelatable.wordpress.com/2012/02/10/just-a-question-regarding-acta/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
	
		<media:content url="http://0.gravatar.com/avatar/26385ab59b5a13c50262c302a3bcd17c?s=96&#38;d=identicon&#38;r=G" medium="image">
			<media:title type="html">yoric</media:title>
		</media:content>
	</item>
		<item>
		<title>Une question à propos d&#8217;ACTA</title>
		<link>http://dutherenverseauborddelatable.wordpress.com/2012/02/10/une-question-a-propos-dacta/</link>
		<comments>http://dutherenverseauborddelatable.wordpress.com/2012/02/10/une-question-a-propos-dacta/#comments</comments>
		<pubDate>Fri, 10 Feb 2012 15:17:57 +0000</pubDate>
		<dc:creator>yoric</dc:creator>
				<category><![CDATA[En français / In French]]></category>
		<category><![CDATA[Firefox]]></category>
		<category><![CDATA[Société]]></category>
		<category><![CDATA[acta]]></category>
		<category><![CDATA[eu]]></category>
		<category><![CDATA[Parlement Européen]]></category>

		<guid isPermaLink="false">http://dutherenverseauborddelatable.wordpress.com/?p=1071</guid>
		<description><![CDATA[J&#8217;ai sous les yeux le texte officiel d&#8217;ACTA. Ce traité international contre (en vrac) l&#8217;exploitation illicite de marques, le faux et usage de faux et le partage de données sans autorisation sur Internet, après avoir été négocié en toute confidentialité par la Commission Européenne, est enfin public, et doit passer devant le Parlement Européen en [...]<img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=dutherenverseauborddelatable.wordpress.com&#038;blog=1202429&#038;post=1071&#038;subd=dutherenverseauborddelatable&#038;ref=&#038;feed=1" width="1" height="1" />]]></description>
			<content:encoded><![CDATA[<p style="text-align:justify;">J&#8217;ai sous les yeux le <a href="http://www.dfat.gov.au/trade/acta/Final-ACTA-text-following-legal-verification.pdf">texte officiel d&#8217;ACTA</a>. Ce traité international contre (en vrac) l&#8217;exploitation illicite de marques, le faux et usage de faux et le partage de données sans autorisation sur Internet, après avoir été négocié en toute confidentialité par la Commission Européenne, est enfin public, et doit passer devant le Parlement Européen en mai 2012.</p>
<p style="text-align:justify;">Du coup, je lis l&#8217;article 11 et je m&#8217;interroge :</p>
<p style="text-align:justify;">« <em>Without prejudice to its law governing privilege, the protection of confidentiality of information sources, or the processing of personal data, each Party [= chaque pays] shall provide that, in civil judicial proceedings concerning the enforcement of intellectual property rights, its judicial authorities have the authority, <strong>upon a justified request of the right holder</strong>, to order the infringer or, in the alternative, <strong>the alleged infringer</strong>, to <strong>provide to the right holder</strong> or to the judicial authorities, at least for the purpose of collecting evidence, <strong>relevant information</strong> as provided for in its applicable laws and regulations that the infringer or alleged infringer possesses or controls. Such information may include information regarding<strong> any person involved in any aspect of the </strong>infringement or<strong> alleged infringement</strong> and regarding<strong> the means of production or the channels of distribution</strong> of the infringing or allegedly infringing goods or services,<strong> including the identification of third persons</strong> alleged to be involved in the production and distribution of such goods or services and of their channels of distribution.</em> »</p>
<p style="text-align:justify;">Ai-je bien compris que, pour pouvoir obéir à ce type d&#8217;injonction :</p>
<ul>
<li>une bibliothèque doit surveiller ses empruntants, pour pouvoir identifier ceux qui <em>pourraient</em> être impliqués dans de la photocopie de livres ?</li>
<li>une université doit surveiller ses enseignants, pour pouvoir identifier ceux qui <em>pourraient</em> distribuer des polycopiés sans autorisation ?</li>
<li>&#8230; ou un lycée, un collège, une maternelle ?</li>
<li>&#8230; ainsi que les intervenants invités le temps d&#8217;un cours ou d&#8217;un séminaire ?</li>
<li>&#8230; le tout <em>sur simple soupçon</em> ?</li>
</ul>
<p>Ai-je mentionné qu&#8217;ACTA m&#8217;inquiète quelque peu ?</p>
<br />  <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/dutherenverseauborddelatable.wordpress.com/1071/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/dutherenverseauborddelatable.wordpress.com/1071/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godelicious/dutherenverseauborddelatable.wordpress.com/1071/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/delicious/dutherenverseauborddelatable.wordpress.com/1071/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gofacebook/dutherenverseauborddelatable.wordpress.com/1071/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/facebook/dutherenverseauborddelatable.wordpress.com/1071/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gotwitter/dutherenverseauborddelatable.wordpress.com/1071/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/twitter/dutherenverseauborddelatable.wordpress.com/1071/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gostumble/dutherenverseauborddelatable.wordpress.com/1071/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/stumble/dutherenverseauborddelatable.wordpress.com/1071/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godigg/dutherenverseauborddelatable.wordpress.com/1071/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/digg/dutherenverseauborddelatable.wordpress.com/1071/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/goreddit/dutherenverseauborddelatable.wordpress.com/1071/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/reddit/dutherenverseauborddelatable.wordpress.com/1071/" /></a> <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=dutherenverseauborddelatable.wordpress.com&#038;blog=1202429&#038;post=1071&#038;subd=dutherenverseauborddelatable&#038;ref=&#038;feed=1" width="1" height="1" />]]></content:encoded>
			<wfw:commentRss>http://dutherenverseauborddelatable.wordpress.com/2012/02/10/une-question-a-propos-dacta/feed/</wfw:commentRss>
		<slash:comments>2</slash:comments>
	
		<media:content url="http://0.gravatar.com/avatar/26385ab59b5a13c50262c302a3bcd17c?s=96&#38;d=identicon&#38;r=G" medium="image">
			<media:title type="html">yoric</media:title>
		</media:content>
	</item>
		<item>
		<title>Student projects update</title>
		<link>http://dutherenverseauborddelatable.wordpress.com/2012/02/02/student-projects-update/</link>
		<comments>http://dutherenverseauborddelatable.wordpress.com/2012/02/02/student-projects-update/#comments</comments>
		<pubDate>Thu, 02 Feb 2012 15:25:43 +0000</pubDate>
		<dc:creator>yoric</dc:creator>
				<category><![CDATA[Enseignement]]></category>
		<category><![CDATA[Firefox]]></category>
		<category><![CDATA[In English / En anglais]]></category>
		<category><![CDATA[Informatique / Computer science]]></category>
		<category><![CDATA[bugzilla]]></category>
		<category><![CDATA[github]]></category>
		<category><![CDATA[javascript]]></category>
		<category><![CDATA[mozilla]]></category>
		<category><![CDATA[open-source]]></category>
		<category><![CDATA[student projects]]></category>
		<category><![CDATA[thunderbird]]></category>
		<category><![CDATA[xul]]></category>

		<guid isPermaLink="false">http://dutherenverseauborddelatable.wordpress.com/?p=1065</guid>
		<description><![CDATA[As mentioned previously on this page, the Mozilla Community is very interested in collaborating with universities around student projects. I am personally mentoring or co-mentoring a few of these projects and I will try to blog about their progress regularly. Note to the students I can only blog if you tell me your current status! [...]<img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=dutherenverseauborddelatable.wordpress.com&#038;blog=1202429&#038;post=1065&#038;subd=dutherenverseauborddelatable&#038;ref=&#038;feed=1" width="1" height="1" />]]></description>
			<content:encoded><![CDATA[<p style="text-align:justify;">As mentioned previously on this page, the Mozilla Community is very interested in collaborating with universities around student projects. I am personally mentoring or co-mentoring a few of these projects and I will try to blog about their progress regularly.</p>
<p style="text-align:justify;"><strong>Note to the students</strong> I can only blog if you tell me your current status!</p>
<p style="text-align:justify;"><strong>Note to other students</strong> Do you want to take part in an open-source / open web project? Then feel free to contact me, I will be glad to help you or to introduce you to someone who might. You can find me on Tweeter (ImYoric), by e-mail, on mozilla.com (dteller), or by IRC, on irc.mozilla.org, channel #introduction (Yoric).</p>
<h2>Save as .epub (Firefox add-on)</h2>
<p style="text-align:right;">(Kevin CORRE, Benjamin ROCHER, Elie AHUMA, Sylvestre ANTOINE &#8211; Université d&#8217;Orléans, MIAGE 2)</p>
<p><strong>Objective</strong> Add the following feature to Firefox, as an add-on: Save a page and its resources as one file, using open standard .epub. This open-standard file can then be transferred to just about any device, edited with LibreOffice, etc.</p>
<p style="text-align:justify;"><strong>Current status</strong> Early stage of coding. The first items of the user interface are in place, as well as some experiments regarding how to create an .epub file.</p>
<p style="text-align:left;"><strong>Follow this project</strong> This project lives <a href="https://github.com/Sparika/Firefox-html-to-epub">on github</a>.</p>
<h2 style="text-align:left;">Detect use of the wrong account (Thunderbird add-on)</h2>
<p style="text-align:right;">(Baptiste MEYNIER, Johan JANS, Maxime DENOYER, Mustapha OUCHEIKH &#8211; Université d&#8217;Orléans, MIAGE 2)</p>
<p style="text-align:left;"><strong>Objective</strong> Add the following feature to Thunderbird, as an add-on: Detect that a message is being sent to a correspondant using the wrong account (e.g. using a professional account for a personal message or a personal account for a professional message).</p>
<p><strong>Current status</strong> Early stage of coding. The first items of the user interface are in place, as well as some experiments regarding how to react to the user clicking on &#8220;send&#8221;.</p>
<p><strong>Follow this project</strong> This project lives <a href="https://github.com/BaptisteMeynier">on github</a>.</p>
<h2>Simplify the addition of several alarms for the same event in Lightning (Thunderbird add-on)</h2>
<p style="text-align:right;">(Loïc LE MÉRO aka Morkai – Université d&#8217;Évry, MIAGE 2)</p>
<p style="text-align:left;"><strong>Objective</strong> Lightning offers the ability to add several alarms for the same event (e.g. 1 day before then 15 minutes before). Improve the user interface to make this more discoverable.</p>
<p style="text-align:left;"><strong>Current status</strong> (unknown, waiting for Loïc to tell me).</p>
<p style="text-align:left;"><strong>Follow this project</strong> This project lives on <a href="https://bugzilla.mozilla.org/show_bug.cgi?id=718418">Bugzilla</a>.</p>
<h2 style="text-align:left;">Extend Lightning alarms (Thunderbird add-on)</h2>
<p style="text-align:right;">           (Anto DOMINIC PAUL – Université d&#8217;Évry, MIAGE 2)</p>
<p style="text-align:left;"><strong>Objective</strong> Lightning offers the ability to attach alarms to an event. Extend this feature to make it possible to play a music or execute a script when the alarm is triggered.</p>
<p style="text-align:left;"><strong>Current status</strong> (unknown, waiting for Arno to tell me).</p>
<p style="text-align:left;"><strong>Follow this project</strong> This project lives <a title="Back to white" href="https://bugzilla.mozilla.org/show_bug.cgi?id=718419">on Bugzilla</a>.</p>
<h2 style="text-align:left;">Handle resources in Lightning events (Thunderbird add-on)</h2>
<p style="text-align:right;">(Julien LACROIX – Université d&#8217;Évry, MIAGE 2)</p>
<p style="text-align:justify;"><strong>Objective</strong> Add the ability to attach resource requirements to events: a picnic requires food (one resource), drinks (one resource), cutlery (one resource), etc&#8230; Who will bring them? Also, add the ability to attach a geolocation to events, to help finding the way. Who brings the beer?</p>
<p style="text-align:left;"><strong>Current status</strong> Early stages of coding. First prototype of geolocation implemented, and work on requirements added.</p>
<p style="text-align:left;"><strong>Follow this project</strong> This project lives <a href="https://github.com/plazi91/lightning-resource-reservation">on github</a>.</p>
<h2 style="text-align:left;">Remind me that I need to reply within 24h/remind me that I expect a reply within 24h (Thunderbird add-on)</h2>
<p style="text-align:right;">(Vincent LEGUEVEL, Mickael MAINGE – Université d&#8217;Évry, MIAGE 2)</p>
<p style="text-align:left;"><strong>Objective</strong> Add the ability to mark a message as &#8220;I need to answer within &#8230;&#8221; / &#8220;I expect an answer within &#8230;&#8221;. Nag the user as long as she hasn&#8217;t sent or received the reply.</p>
<p style="text-align:left;"><strong>Current status</strong> (unknown, waiting for Vincent or Mickael to tell me more)</p>
<p style="text-align:left;"><strong>Follow this project</strong> This project lives on two Bugzilla bugs: <a title="Back to white" href="https://bugzilla.mozilla.org/show_bug.cgi?id=718428">need to send</a> / <a title="Back to white" href="https://bugzilla.mozilla.org/show_bug.cgi?id=718429">expect to receive</a>.</p>
<br />  <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/dutherenverseauborddelatable.wordpress.com/1065/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/dutherenverseauborddelatable.wordpress.com/1065/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godelicious/dutherenverseauborddelatable.wordpress.com/1065/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/delicious/dutherenverseauborddelatable.wordpress.com/1065/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gofacebook/dutherenverseauborddelatable.wordpress.com/1065/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/facebook/dutherenverseauborddelatable.wordpress.com/1065/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gotwitter/dutherenverseauborddelatable.wordpress.com/1065/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/twitter/dutherenverseauborddelatable.wordpress.com/1065/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gostumble/dutherenverseauborddelatable.wordpress.com/1065/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/stumble/dutherenverseauborddelatable.wordpress.com/1065/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godigg/dutherenverseauborddelatable.wordpress.com/1065/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/digg/dutherenverseauborddelatable.wordpress.com/1065/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/goreddit/dutherenverseauborddelatable.wordpress.com/1065/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/reddit/dutherenverseauborddelatable.wordpress.com/1065/" /></a> <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=dutherenverseauborddelatable.wordpress.com&#038;blog=1202429&#038;post=1065&#038;subd=dutherenverseauborddelatable&#038;ref=&#038;feed=1" width="1" height="1" />]]></content:encoded>
			<wfw:commentRss>http://dutherenverseauborddelatable.wordpress.com/2012/02/02/student-projects-update/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
	
		<media:content url="http://0.gravatar.com/avatar/26385ab59b5a13c50262c302a3bcd17c?s=96&#38;d=identicon&#38;r=G" medium="image">
			<media:title type="html">yoric</media:title>
		</media:content>
	</item>
		<item>
		<title>Resist SOPA, HADOPI, Censorship&#8230;</title>
		<link>http://dutherenverseauborddelatable.wordpress.com/2012/01/18/against-sopa/</link>
		<comments>http://dutherenverseauborddelatable.wordpress.com/2012/01/18/against-sopa/#comments</comments>
		<pubDate>Wed, 18 Jan 2012 06:02:39 +0000</pubDate>
		<dc:creator>yoric</dc:creator>
				<category><![CDATA[Firefox]]></category>
		<category><![CDATA[In English / En anglais]]></category>
		<category><![CDATA[Informatique / Computer science]]></category>
		<category><![CDATA[Société]]></category>
		<category><![CDATA[censorship]]></category>
		<category><![CDATA[hadopi]]></category>
		<category><![CDATA[sopa]]></category>

		<guid isPermaLink="false">http://dutherenverseauborddelatable.wordpress.com/?p=1054</guid>
		<description><![CDATA[Today, this blog is black. Today is an international day of fighting against web censorship. Against SOPA (in the US), Hadopi (in France), and all the bills that assume that freedom of expression and freedom of information can be cast aside whenever they come in the way of profit. Learn more.<img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=dutherenverseauborddelatable.wordpress.com&#038;blog=1202429&#038;post=1054&#038;subd=dutherenverseauborddelatable&#038;ref=&#038;feed=1" width="1" height="1" />]]></description>
			<content:encoded><![CDATA[<p style="text-align:center;">Today, this blog is black.</p>
<p style="text-align:center;">Today is an international day of fighting against web censorship.</p>
<p style="text-align:center;">Against SOPA (in the US), Hadopi (in France), and all the bills that assume that freedom of expression and freedom of information can be cast aside whenever they come in the way of profit.</p>
<p style="text-align:center;">Learn <a href="http://en.wikipedia.org/wiki/Wikipedia:SOPA_initiative/Learn_more">more</a>.</p>
<p style="text-align:center;"><a href="http://arstechnica.com/staff/palatine/2012/01/sopa-resistance-day-begins-at-ars.ars"><img class="aligncenter size-full wp-image-1055" title="sopa-fist-4f1634a-intro-thumb-640xauto-29483" src="http://dutherenverseauborddelatable.files.wordpress.com/2012/01/sopa-fist-4f1634a-intro-thumb-640xauto-29483.jpg?w=480" alt="Image from Ars Technica: http://arstechnica.com/staff/palatine/2012/01/sopa-resistance-day-begins-at-ars.ars"   /></a></p>
<br />  <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/dutherenverseauborddelatable.wordpress.com/1054/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/dutherenverseauborddelatable.wordpress.com/1054/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godelicious/dutherenverseauborddelatable.wordpress.com/1054/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/delicious/dutherenverseauborddelatable.wordpress.com/1054/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gofacebook/dutherenverseauborddelatable.wordpress.com/1054/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/facebook/dutherenverseauborddelatable.wordpress.com/1054/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gotwitter/dutherenverseauborddelatable.wordpress.com/1054/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/twitter/dutherenverseauborddelatable.wordpress.com/1054/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gostumble/dutherenverseauborddelatable.wordpress.com/1054/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/stumble/dutherenverseauborddelatable.wordpress.com/1054/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godigg/dutherenverseauborddelatable.wordpress.com/1054/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/digg/dutherenverseauborddelatable.wordpress.com/1054/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/goreddit/dutherenverseauborddelatable.wordpress.com/1054/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/reddit/dutherenverseauborddelatable.wordpress.com/1054/" /></a> <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=dutherenverseauborddelatable.wordpress.com&#038;blog=1202429&#038;post=1054&#038;subd=dutherenverseauborddelatable&#038;ref=&#038;feed=1" width="1" height="1" />]]></content:encoded>
			<wfw:commentRss>http://dutherenverseauborddelatable.wordpress.com/2012/01/18/against-sopa/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
	
		<media:content url="http://0.gravatar.com/avatar/26385ab59b5a13c50262c302a3bcd17c?s=96&#38;d=identicon&#38;r=G" medium="image">
			<media:title type="html">yoric</media:title>
		</media:content>

		<media:content url="http://dutherenverseauborddelatable.files.wordpress.com/2012/01/sopa-fist-4f1634a-intro-thumb-640xauto-29483.jpg" medium="image">
			<media:title type="html">sopa-fist-4f1634a-intro-thumb-640xauto-29483</media:title>
		</media:content>
	</item>
		<item>
		<title>Call For Classrooms</title>
		<link>http://dutherenverseauborddelatable.wordpress.com/2012/01/17/call-for-classrooms/</link>
		<comments>http://dutherenverseauborddelatable.wordpress.com/2012/01/17/call-for-classrooms/#comments</comments>
		<pubDate>Tue, 17 Jan 2012 09:54:55 +0000</pubDate>
		<dc:creator>yoric</dc:creator>
				<category><![CDATA[Enseignement]]></category>
		<category><![CDATA[Firefox]]></category>
		<category><![CDATA[In English / En anglais]]></category>
		<category><![CDATA[JavaScript]]></category>
		<category><![CDATA[Recherche / Research]]></category>
		<category><![CDATA[open web]]></category>
		<category><![CDATA[open-source]]></category>
		<category><![CDATA[participative web]]></category>
		<category><![CDATA[programming]]></category>
		<category><![CDATA[programming languages]]></category>
		<category><![CDATA[research]]></category>
		<category><![CDATA[web]]></category>

		<guid isPermaLink="false">http://dutherenverseauborddelatable.wordpress.com/?p=1042</guid>
		<description><![CDATA[(and Researchers, Professors, Teachers, Students &#8230;) Mozilla is working with numerous educators, professors and researchers across the world, both to bring open-source, the open web and web technologies into the classroom, and to bring the contributions of students and their mentors to the world. You can be a part of this, and your field does [...]<img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=dutherenverseauborddelatable.wordpress.com&#038;blog=1202429&#038;post=1042&#038;subd=dutherenverseauborddelatable&#038;ref=&#038;feed=1" width="1" height="1" />]]></description>
			<content:encoded><![CDATA[<p style="text-align:right;">(and Researchers, Professors, Teachers, Students &#8230;)</p>
<p style="text-align:justify;"><em>Mozilla is working with numerous educators, professors and researchers across the world, both to bring open-source, the open web and web technologies into the classroom, and to bring the contributions of students and their mentors to the world. You can be a part of this, and your field does not have to be Computer Science.</em></p>
<p style="text-align:justify;"><em><span id="more-1042"></span><br />
</em></p>
<h2 style="text-align:justify;">Mozilla in the classroom – and beyond</h2>
<p style="text-align:justify;">Mozilla? Certainly, you have heard about us. Mozilla is best known for its work on <a title="OS.File, step-by-step: The Schedule API" href="http://getfirefox.com">the Firefox web browser</a> and <a title="OS.File, step-by-step: The Schedule API" href="http://getfirefox.com">the Thunderbird mail client</a> but that is not all there is to Mozilla, far from it. The activities of Mozilla reach largely beyond a few software products. The objective of the Mozilla project is to promote an <em>open</em>, <em>participative</em> web. For this purpose, we have developed and promoted Firefox, Thunderbird, open standards, add-ons, and countless experiments and innovations. For this purpose, we want to work with you.</p>
<p style="text-align:justify;">This is a call for academics and students. We would like to work with you, with your classrooms and with your labs.</p>
<p style="text-align:justify;">Mozilla is already present in numerous classrooms and research laboratories around the world, thanks to collaboration of numerous educators, professors, researchers and students. We deliver courses, we provide teaching material, but most importantly, we provide opportunities for students and their mentors: the opportunity to make impacting contributions to the web, to open-source and sometimes to society, the opportunity to tinker with technologies used by hundreds and millions of people, and to deliver research results to an audience consisting in the the whole web, and also, most importantly, the opportunity to learn and teach as part of an exciting, participatory and fun community.</p>
<p style="text-align:justify;">So, whether you are an academic or a student, if you want to work alongside us, please contact contact us.</p>
<h2>Topics of interest</h2>
<p style="text-align:justify;">At its core, Mozilla is an open-source community. Our work at Mozilla covers many topics. Some of these topics are extremely technical, some do not even involve a computer.</p>
<p>Here are but a few.</p>
<h3>Open-source (Software Engineering, IT, CS Research, UX)&#8230;</h3>
<ul>
<li>client-side programming in C, C++, JavaScript, Java;</li>
<li>server-side programming in Python, JavaScript;</li>
<li>concurrent and system-oriented programming;</li>
<li>implementation of programming languages;</li>
<li>static analysis, rewriting and semantics or programming languages;</li>
<li>instrumentation, dynamic analysis;</li>
<li>distributed, scalable databases;</li>
<li>distributed, scalable web services;</li>
<li>client-side web security;</li>
<li>server-side web security;</li>
<li>network security;</li>
<li>network maintenance;</li>
<li>applied cryptography;</li>
<li>implementation of cryptographic protocols;</li>
<li>establishing and maintaining mirrors;</li>
<li>service-oriented architectures;</li>
<li>low-level, 2d graphics programming;</li>
<li>low-level, 3d graphics programming;</li>
<li>implementing typography and layouts;</li>
<li>defining typography and layouts;</li>
<li>developing user interfaces;</li>
<li>designing user interfaces;</li>
<li>web applications;</li>
<li>video game development;</li>
<li>build systems;</li>
<li>tools for developers;</li>
<li>data mining from bugzilla, survey results, etc;</li>
<li>implementing web standards;</li>
<li>designing candidate web standards;</li>
<li>privacy analysis;</li>
<li>operating system development;</li>
<li>&#8230;</li>
</ul>
<h3></h3>
<h3>&#8230; community (Internationalization, Events, Representing Mozilla)</h3>
<ul>
<li>internationalizing Mozilla and other community applications;</li>
<li>internationalizing Mozilla and other community websites;</li>
<li>organizing local or global open-source events;</li>
<li>&#8230; or web events;</li>
<li>&#8230; or technology events;</li>
<li>participating to local or global events;</li>
<li>teaching the open web to non-technical audiences;</li>
<li>teaching the open web to technical audiences;</li>
<li>teaching web technologies;</li>
<li>organizing local communities;</li>
<li>spreading Mozilla and other open-source technologies;</li>
<li>providing technical support in the local language;</li>
<li>representing Mozilla in a highschool/university/&#8230;;</li>
<li>communicating with local media;</li>
<li>analyzing industry news;</li>
<li>advocating open web or open-source to local companies, organizations and communities;</li>
<li>interacting with other technology communities;</li>
<li>writing articles on open-source and the open web;</li>
<li>&#8230; or filming documentaries;</li>
<li>&#8230; or anything else you can think of!</li>
</ul>
<h2>What the Mozilla community can do for you</h2>
<p style="text-align:justify;">On some topics, Mozilla can provide you with teaching/learning material or get you in touch with Mozillians who would love to come to your classroom and deliver interventions or lectures.</p>
<p style="text-align:justify;">More importantly, we can help shape student projects and we can contribute to mentoring them. Do not limit yourself – with enough dedication, student projects can change the world.</p>
<p style="text-align:justify;">If you are interested, please get in touch.</p>
<p>You can reach me by e-mail at mozilla.com, as dteller.</p>
<br />  <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/dutherenverseauborddelatable.wordpress.com/1042/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/dutherenverseauborddelatable.wordpress.com/1042/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godelicious/dutherenverseauborddelatable.wordpress.com/1042/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/delicious/dutherenverseauborddelatable.wordpress.com/1042/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gofacebook/dutherenverseauborddelatable.wordpress.com/1042/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/facebook/dutherenverseauborddelatable.wordpress.com/1042/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gotwitter/dutherenverseauborddelatable.wordpress.com/1042/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/twitter/dutherenverseauborddelatable.wordpress.com/1042/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gostumble/dutherenverseauborddelatable.wordpress.com/1042/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/stumble/dutherenverseauborddelatable.wordpress.com/1042/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godigg/dutherenverseauborddelatable.wordpress.com/1042/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/digg/dutherenverseauborddelatable.wordpress.com/1042/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/goreddit/dutherenverseauborddelatable.wordpress.com/1042/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/reddit/dutherenverseauborddelatable.wordpress.com/1042/" /></a> <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=dutherenverseauborddelatable.wordpress.com&#038;blog=1202429&#038;post=1042&#038;subd=dutherenverseauborddelatable&#038;ref=&#038;feed=1" width="1" height="1" />]]></content:encoded>
			<wfw:commentRss>http://dutherenverseauborddelatable.wordpress.com/2012/01/17/call-for-classrooms/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
	
		<media:content url="http://0.gravatar.com/avatar/26385ab59b5a13c50262c302a3bcd17c?s=96&#38;d=identicon&#38;r=G" medium="image">
			<media:title type="html">yoric</media:title>
		</media:content>
	</item>
		<item>
		<title>OS.File, step-by-step: The Schedule API</title>
		<link>http://dutherenverseauborddelatable.wordpress.com/2011/12/13/os-file-step-by-step-the-schedule-api/</link>
		<comments>http://dutherenverseauborddelatable.wordpress.com/2011/12/13/os-file-step-by-step-the-schedule-api/#comments</comments>
		<pubDate>Tue, 13 Dec 2011 09:23:12 +0000</pubDate>
		<dc:creator>yoric</dc:creator>
				<category><![CDATA[Firefox]]></category>
		<category><![CDATA[In English / En anglais]]></category>
		<category><![CDATA[Informatique / Computer science]]></category>
		<category><![CDATA[JavaScript]]></category>
		<category><![CDATA[Recherche / Research]]></category>
		<category><![CDATA[concurrency]]></category>
		<category><![CDATA[development]]></category>
		<category><![CDATA[javascript]]></category>
		<category><![CDATA[js]]></category>
		<category><![CDATA[mozilla]]></category>
		<category><![CDATA[mozilla platform]]></category>
		<category><![CDATA[OS.File]]></category>
		<category><![CDATA[scheduler]]></category>
		<category><![CDATA[web]]></category>

		<guid isPermaLink="false">http://dutherenverseauborddelatable.wordpress.com/?p=1017</guid>
		<description><![CDATA[Summary One of the key components of OS.File is the Schedule API, a tiny yet powerful JavaScript core designed to considerably simplify the development of asynchronous modules. In this post, we introduce the Schedule API. Introduction In a previous post, I introduced OS.File, a Mozilla Platform library designed make the life of developers easier and [...]<img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=dutherenverseauborddelatable.wordpress.com&#038;blog=1202429&#038;post=1017&#038;subd=dutherenverseauborddelatable&#038;ref=&#038;feed=1" width="1" height="1" />]]></description>
			<content:encoded><![CDATA[<h2 style="text-align:justify;">Summary</h2>
<p style="text-align:justify;"><em>One of the key components of <code>OS.File</code> is the Schedule API, a tiny yet powerful JavaScript core designed to considerably simplify the development of asynchronous modules. In this post, we introduce the Schedule API.<br />
</em></p>
<h2 style="text-align:justify;">Introduction</h2>
<p style="text-align:justify;">In a previous post, I introduced <a title="Introducing JavaScript native file management" href="http://dutherenverseauborddelatable.wordpress.com/2011/12/06/introducing-javascript-native-file-management/"><code>OS.File</code></a>, a Mozilla Platform library designed make the life of developers easier and to help them produce high-performance, high-responsiveness file management routines.</p>
<p style="text-align:justify;">In this post, I would like to concentrate on one of the core items of <code>OS.File</code>: the Schedule API. Note that the Schedule API is not limited to <code>OS.File</code> and is designed to be useful for all sorts of other modules.</p>
<p style="text-align:justify;"><span id="more-1017"></span></p>
<h2 style="text-align:justify;">Overview</h2>
<p style="text-align:justify;">One of the most important aspect of any user-facing application is its responsiveness. Contrary to intuition, however, responsiveness is much less a matter of speed than one of <em>tempo</em>: not necessarily attempting to perform tasks as fast as possible, but rather attempting to perform them in a manner that does not disrupt the user experience. In the Mozilla Platform, disrupting the user experience is synonymous with freezing the user interface.</p>
<p style="text-align:justify;">Avoiding this is the art of <em>asynchronous</em>, <em>non-blocking</em> operations, and this is the reason we built the Schedule API.</p>
<p style="text-align:justify;">The Schedule API is a tiny JavaScript module designed to simplify considerably the development of asynchronous code. It is based on Joseph Walker&#8217;s excellent Promises API [<a href="#footnote_1">1</a>] and it lies at the core of OS.File&#8217;s asynchronous operations.</p>
<p style="text-align:justify;">Before detailing the full API, let us start with a few simple examples. Consider a common situation: some treatment needs to be done soon, but not immediately, as this would otherwise disrupt the user experience. For this purpose, JavaScript offers function setTimeout, which <em>schedules</em> the execution of the treatment to later:</p>
<p><pre class="brush: jscript;">
function doItLater() {
  window.setTimeout(function() {
    var result = fibonacci(10);
  });//Schedule the execution for later
}//Wait, how do we get the result?
</pre></p>
<p style="text-align:justify;">However, <code>setTimeout</code> offers no help for informing the rest of the code that the execution is complete. While there are many solutions to this problem – I am sure that dozens can be found on StackOverflow – perhaps the most developer-friendly is that of promises:</p>
<p><pre class="brush: jscript;">
function doItLater() {
  var promise = new Promise();
  window.setTimeout(function() {
    var result = fibonacci(10);
    promise.resolve(result);
  });//Schedule the execution for later
  return promise;//And return immediately a promise.
}
</pre></p>
<p style="text-align:justify;">With this code, we have introduced the <em>promise</em> of a future result. Once we have obtained a promise, we can simply add a reaction that will be triggered once the promise is resolved:</p>
<p><pre class="brush: jscript;">
doItLater().then(function(result) {
   alert(&quot;I have just finished computing Fibonacci: &quot;+result);
})
</pre></p>
<p style="text-align:justify;">Or we can chain promises to obtain other promises:</p>
<p><pre class="brush: jscript;">
var promise2 = doItLater().chainPromise(function(result) {
   return sieve(result);
})
</pre></p>
<p style="text-align:justify;">Note that these two extracts are compatible with each other. If we write both, we will be informed once the first treatment is complete and a second treatment will also take place immediately, one whose result is promised as <code>promise2</code>.</p>
<p style="text-align:justify;">Unfortunately, a few problems appear with our code. Firstly, <code>window.setTimeout</code> is unfortunately not available in all contexts. While workarounds are available for non-UI modules and background threads, writing any reusable asynchronous is a somewhat painful that can quickly lead to unreadable code. Chaining such treatments becomes even worse.</p>
<p style="text-align:justify;">The second issue is that our call <code>fibonacci(10)</code> might well be quite long itself and might very well disrupt the user experience if we do nothing about it.</p>
<p style="text-align:justify;">Let us start by addressing the first issue, with the Schedule module:</p>
<p><pre class="brush: jscript;">
Components.utils.import(&quot;resource://gre/modules/schedule.jsm&quot;);
</pre></p>
<p style="text-align:justify;">Function <code>Schedule.soon</code> replace most uses of <code>window.setTimeout</code>:</p>
<p><pre class="brush: jscript;">
function doItLater() {
  return Schedule.soon(function() {
    return fibonacci(10);
  });
}
</pre></p>
<p style="text-align:justify;">Or, more concisely:</p>
<p><pre class="brush: jscript;">
function doItLater() {
  return Schedule.soon(fibonacci, 10);
}
</pre></p>
<p style="text-align:justify;">Or, to delay the execution of the task by 100ms:</p>
<p><pre class="brush: jscript;">
function doItLater() {
  return Schedule.soon({delay: 100}, fibonacci, 10);
}
</pre></p>
<p style="text-align:justify;">The Schedule API also extends Promises with a new method <code>soon</code>:</p>
<p><pre class="brush: jscript;">
var promise2 = doItLater().soon(function(result) {
   return sieve(result);
})
</pre></p>
<p style="text-align:justify;">Just like <code>chainPromises</code>, <code>soon</code> adds new treatments that are triggered only once the promise is resolved. However, and by opposition to <code>chainPromises</code>, these treatments are executed later, without disrupting the user experience.</p>
<p style="text-align:justify;">With the combination of Schedule and Promises, it is easy to see how we could write a version of the Fibonacci function that is computed progressively:</p>
<p><pre class="brush: jscript;">
//Compute the fibonacci function of n, as a background task
function fibo(n) {
  if (n == 1 | n == 0) {
    return Schedule.alreadyComplete(1);
    //Promise a result and deliver it immediately
  } else {
    var tasks = [];//Launch two tasks
    tasks.push(fibo(n - 1));
    tasks.push(fibo(n - 2));
    return Promise.group(tasks).soon(function(results) {
       return results[0] + results[1];
    })
  }
}
</pre></p>
<p style="text-align:justify;">Nice, readable and non-disruptive. Plus, for debugging purposes, or if you wish to add some visual feedback, you can attach additional observers to promises.</p>
<h2 style="text-align:justify;">The API</h2>
<p style="text-align:justify;">So far, we have made use of the following functions of the Promises API:</p>
<ul style="text-align:justify;">
<li><code>Promise</code>;</li>
<li><code>Promise.resolve</code>;</li>
<li><code>Promise.prototype.chainPromise</code>;</li>
<li><code>Promise.prototype.then</code>;</li>
<li><code>Promise.group</code>;</li>
</ul>
<p style="text-align:justify;">I am trying to convince Joseph to blog about this very nice API, so you should be able to learn more about it <a href="http://incompleteness.me/mozblog/">on his blog</a>, one of these days.</p>
<p style="text-align:justify;">We have also made use of the following functions of module Schedule:</p>
<ul style="text-align:justify;">
<li><code>Schedule.soon</code>;</li>
<li><code>Promise.prototype.soon</code>;</li>
<li><code>Schedule.alreadyComplete</code>.</li>
</ul>
<p style="text-align:justify;">While these methods can already be very useful to help you write or rewrite asynchronous code, the Schedule API goes a little bit further and introduces Scheduling Categories and Rendez-vous points.</p>
<h3 style="text-align:justify;">Categories</h3>
<p style="text-align:justify;">While interleaving tasks is a good way to ensure that all tasks progress, some tasks need a little tighter control. Typically, the result of successive operations on a file depend on their order of execution – closing a file before reading from it is generally not a very good idea. Similarly, for performance reasons, an application should generally avoid reading from several files simultaneously, as this can slow down not only the application but the whole system.</p>
<p style="text-align:justify;">In the Schedule API, this is materialized as Scheduling Categories. When several tasks are placed in the same category, any call to <code>Schedule.soon</code> or <code>Promise.prototype.soon</code> guarantees that these tasks will be executed in the order in which they were added and that only one of these task is executed at a time. This does not prevent tasks from other categories from being interleaved.</p>
<p style="text-align:justify;">If, for instance, we wish to serialize the computation of Fibonacci&#8217;s function, we may declare a category as follows:</p>
<p><pre class="brush: jscript;">
var Fibo = new Schedule.Category(&quot;Fibonacci's function&quot;);
</pre></p>
<p style="text-align:justify;">and replace the final function call of the previous listing with</p>
<p><pre class="brush: jscript;">
    soon({category: Fibo}, function(results) {
       return results[0] + results[1];
    })
</pre></p>
<p style="text-align:justify;">Thus categorized, Fibonacci&#8217;s functions will take less resources to compute, and will be even nicer to the rest of the application and the system, though the total computation will probably last a little longer.</p>
<h3 style="text-align:justify;">Rendez-vous</h3>
<p style="text-align:justify;">One of the original reasons for which we started developing the Schedule API was to simplify asynchronous initialization on the Mozilla Platform and ensure that whichever parts of initialization were not strictly required at start-up could be simply and safely postponed.</p>
<p style="text-align:justify;">For this purpose, the Schedule API provides one additional function: <code>Schedule.on</code>. This function lets developers register code to be executed only once some condition is met, as follows:</p>
<p><pre class="brush: jscript;">
Schedule.on(&quot;startup-complete&quot;).soon(delayedInitializer);
</pre></p>
<p style="text-align:justify;">With this line, function <code>delayedInitializer</code> will be executed only once &#8220;startup-complete&#8221; is resolved. Note that, by opposition to DOM-style events, if &#8220;startup-complete&#8221; has already been resolved, <code>delayedInitializer</code> will be immediately scheduled for execution. This simple change solves a number of refactoring headaches.</p>
<p style="text-align:justify;">By the way, <code>Schedule.on("startup-complete")</code> is just a promise. To resolve it, simply call <code>resolve</code>:</p>
<p><pre class="brush: jscript;">
Schedule.on(&quot;startup-complete&quot;).resolve();
</pre></p>
<p style="text-align:justify;">And that&#8217;s it. Welcome to the Schedule API!</p>
<h2 style="text-align:justify;">Status</h2>
<p style="text-align:justify;">Everything that was presented in this post is implemented, unit-tested – although not battle-tested – used in <code>OS.File</code>, and currently under review. There is no ETA yet, due to dependencies, but I hope that we will be able to push it soon.</p>
<p style="text-align:justify;">There is one important feature that I wish to add at some point: multi-threading. While there are limitations to what we can transmit between threads, there is no reason for which we could not schedule code for execution not on the main thread, but on a pool of workers. There will be limitations, but I believe that I have a pretty good idea of how to implement this, and if I succeed, this can expand considerably our horizons. I have small chunks of code written, but no ETA for a prototype.</p>
<h2 style="text-align:justify;">Wrapping this up</h2>
<p style="text-align:justify;">The Schedule API is a simple module (only 5 public functions) designed to make our life easier when writing asynchronous code or refactoring code for asynchronicity.</p>
<p style="text-align:justify;">I hope that you will find it useful.</p>
<p style="text-align:justify;"><a name="footnote_1"></a>[1] Thanks to Panos for point this code to me. I had previously reimplemented my own brand of Promises, but having two of them in the Mozilla Platform codebase was simply pointless.</p>
<p><strong>edit</strong> Clarified the fact that calling <code>fibonacci(10)</code> in a setTimeout will not magically make everything non-disruptive. Thanks for the feedback, Axel.</p>
<br />  <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/dutherenverseauborddelatable.wordpress.com/1017/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/dutherenverseauborddelatable.wordpress.com/1017/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godelicious/dutherenverseauborddelatable.wordpress.com/1017/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/delicious/dutherenverseauborddelatable.wordpress.com/1017/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gofacebook/dutherenverseauborddelatable.wordpress.com/1017/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/facebook/dutherenverseauborddelatable.wordpress.com/1017/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gotwitter/dutherenverseauborddelatable.wordpress.com/1017/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/twitter/dutherenverseauborddelatable.wordpress.com/1017/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gostumble/dutherenverseauborddelatable.wordpress.com/1017/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/stumble/dutherenverseauborddelatable.wordpress.com/1017/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godigg/dutherenverseauborddelatable.wordpress.com/1017/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/digg/dutherenverseauborddelatable.wordpress.com/1017/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/goreddit/dutherenverseauborddelatable.wordpress.com/1017/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/reddit/dutherenverseauborddelatable.wordpress.com/1017/" /></a> <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=dutherenverseauborddelatable.wordpress.com&#038;blog=1202429&#038;post=1017&#038;subd=dutherenverseauborddelatable&#038;ref=&#038;feed=1" width="1" height="1" />]]></content:encoded>
			<wfw:commentRss>http://dutherenverseauborddelatable.wordpress.com/2011/12/13/os-file-step-by-step-the-schedule-api/feed/</wfw:commentRss>
		<slash:comments>7</slash:comments>
	
		<media:content url="http://0.gravatar.com/avatar/26385ab59b5a13c50262c302a3bcd17c?s=96&#38;d=identicon&#38;r=G" medium="image">
			<media:title type="html">yoric</media:title>
		</media:content>
	</item>
	</channel>
</rss>
